【SAP Hana】X档案:SAP HANA SQL 进阶教程

本文详细介绍了HANASQL的进阶使用,包括数据库租户的创建与删除,用户和角色的管理,模式的概念,以及表的创建、修改和索引操作。此外,还涉及到了表分区的方法,如Hash、Range和Roundrobin分区,以及如何管理表的注释和视图。内容旨在帮助读者深入理解HANA数据库的高级功能。


接上篇 《SAP HANA SQL 基础教程》

5、HANA SQL 进阶教程

注:本进阶教程,需要具有Hana较高的系统管理权限,或者是相应的开发权限。

(1)Databases

HANA 使用 Database 来实现租户数据的物理隔离。一个租户对应一个 Database ,和其他数据库中的 “Database” 这一术语相比,HANA 中的 Database 更像是一个数据库实例,不同实例之间的数据是物理隔离的。

Script1:查询 HANA 服务器中已开辟的数据库租户(使用多租户主管理员 SYSTEM 账号登录):
在这里插入图片描述
在这里插入图片描述

-- 用多租户主管理员SYSTEM操作
SELECT DATABASE_NAME FROM SYS.M_DATABASES;	-- 查询已有租户

在这里插入图片描述
Script2:创建与删除租户:

-- 用多租户主管理员SYSTEM操作
CREATE DATABASE DB1 SYSTEM USER PASSWORD Yourpas0;	-- 创建租户
DROP DATABASE DB1;									-- 删除租户

Script3:启停租户服务&更改租户密码:

-- 用多租户主管理员SYSTEM操作
alter system stop database DB1;						-- 关闭DB1服务
alter database DB1 system user password Yourpas1;	-- 修改密码
alter system start database DB1;					-- 重新启动DB1服务

(2)User & Role

HANA 使用用户(User) 和 角色(Role) 来实现权限控制。

Script1:在租户中创建用户(使用租户的管理员 SYSTEM 账号登录):
在这里插入图片描述
在这里插入图片描述

-- 用租户DB1的SYSTEM操作
-- 创建用户,自动生成同名SCHEMA,已经存在的SCHEMA名称无法再用作用户名
CREATE USER NewUser PASSWORD Yourpas0 NO FORCE_FIRST_PASSWORD_CHANGE;				
-- 修改用户
ALTER USER NewUser PASSWORD Yourpas1;				-- 修改密码
ALTER USER NewUser RESET CONNECT ATTEMPTS;			-- 解锁
ALTER USER NewUser DISABLE PASSWORD LIFETIME;		-- 设置密码永不过期
-- 删除用户
DROP USER NewUser CASCADE;							-- 删除用户及相应schema,及其拥有的对象

Script2:创建角色,授予 SAPHANADB 只读权限:

-- 用SAPHANADB所在租户的SYSTEM操作
create role R_READER;		-- 创建角色
-- 用SAPHANADB用户操作
GRANT SELECT, SELECT METADATA ON SCHEMA SAPHANADB to R_READER WITH GRANT OPTION;		--只读访问SAPHANADB
-- 删除角色
drop role R_READER;			-- 删除角色 

Script3:创建只读用户 DBREADER,授予 SAPHANADB 只读权限:

-- 用SAPHANADB所在租户的SYSTEM操作
CREATE USER DBREADER PASSWORD Yourpas0 NO FORCE_FIRST_PASSWORD_CHANGE;				
ALTER USER DBREADER DISABLE PASSWORD LIFETIME;		-- 设置密码永不过期
GRANT R_READER to DBREADER;							-- 授予角色
REVOKE R_READER from DBREADER;						-- 撤回角色

Script4:创建不同的开发用户,授予不同的资源库访问权限:

-- 用SAPHANADB所在租户的SYSTEM操作
-- 创建开发者角色
create role R_DEVELOPER;				-- 普通开发者角色
create role R_DEVADMIN;					-- 开发管理员角色
GRANT R_READER to R_DEVELOPER;			-- 角色授予角色
GRANT R_DEVELOPER to R_DEVADMIN;		-- 角色授予角色
--授权资源库:普通开发人员
GRANT REPO.READ on "zdata.wkspace" to R_DEVELOPER; 			
GRANT REPO.ACTIVATE_NATIVE_OBJECTS on "zdata.wkspace" to R_DEVELOPER; 
GRANT REPO.MAINTAIN_NATIVE_PACKAGES on "zdata.wkspace" to R_DEVELOPER; 
GRANT REPO.EDIT_NATIVE_OBJECTS on "zdata.wkspace" to R_DEVELOPER;
--授权资源库:开发管理员
GRANT REPO.READ on "zdata.admin" to R_DEVADMIN; 			
GRANT REPO.ACTIVATE_NATIVE_OBJECTS on "zdata.admin" to R_DEVADMIN; 
GRANT REPO.MAINTAIN_NATIVE_PACKAGES on "zdata.admin" to R_DEVADMIN; 
GRANT REPO.EDIT_NATIVE_OBJECTS on "zdata.admin" to R_DEVADMIN;

--创建普通开发人员
CREATE USER DBDEV PASSWORD Yourpas0 NO FORCE_FIRST_PASSWORD_CHANGE;				
ALTER USER DBDEV DISABLE PASSWORD LIFETIME;			-- 设置密码永不过期
GRANT R_DEVELOPER TO DBDEV;							-- 授予:普通权限
--创建开发管理员
CREATE USER DBDEVADMIN PASSWORD Yourpas0 NO FORCE_FIRST_PASSWORD_CHANGE;				
ALTER USER DBDEVADMIN DISABLE PASSWORD LIFETIME;	-- 设置密码永不过期
GRANT R_DEVADMIN TO DBDEVADMIN;						-- 授予:管理权限

(3)Schemas

HANA 使用 Schema 来对数据库表进行隔离和区分。和其他数据库中的 “Schema” 这一术语相比,HANA 中的Schema 更像是一个“数据库”的概念。每个 Schema 都有自己的拥有者,以及对这个 Schema 下各种数据库对象进行各种操作的权限合集。

新建租户 DB1 的管理员 SYSTEM,默认可见较多的系统 SCHEMA:在这里插入图片描述
租户 DB1 的新建用户 NEWUSER,默认可见较少的系统 SCHEMA,以及与用户名同名的 SCHEMA:
在这里插入图片描述

创建 schema 的两种方法:
Script1:第一种直接创建 schema,默认拥有者为当前创建者,或者也可以指定拥有者,拥有者对 schema 具有所有操作权限:

 -- 用租户DB1的SYSTEM操作
 CREATE SCHEMA MYSCHEMA;						-- 在SYSTEM用户下可见,拥有者为SYSTEM
 CREATE SCHEMA MYSCHEMA2 OWNED BY NEWUSER;		-- 在NEWUSER用户下可见,拥有者为NEWUSER

在这里插入图片描述

Script2:第二种通过创建用户的方式,在创建用户的时候,系统会自动添加一个同名的 schema ,该用户对自身同名 schema 具有所有操作权限:

 CREATE USER NewUser PASSWORD Yourpas0;		-- 上面已创建该用户

Script3:管理 NEWUSER 用户下的 SCHEMA:

-- 用租户DB1的NEWUSER操作
select * from SYS.schemas;		-- 查询NEWUSER用户可见Schema

-- 删除拥有的schema(注:不可删除与用户名同名的schema)
DROP SCHEMA MYSCHEMA2;			--无依赖时才能删除
-- 或者:
DROP SCHEMA MYSCHEMA2 CASCADE;	--删除所有依赖对象
/*
DROP SCHEMA <SCHEMA_NAME> [<DROP_OPTION>]
DROP_OPTION: CASCADE | RESTRICT
RESTRICT:直接删除没有依赖的对象,如果对象有依赖关系,会抛出错误信息。
CASCADE:直接删除所有对象。
默认的DROP_OPTION为:RESTRICT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值