oracle管理 | 表空间权限管控
一、授权建用户的时候通常都可以选择一个default tablespace,但是在没有授权的情况下该用户也无法往该表空间写数据,需要进行授权。授权有全局授权和通过quota限制两种情况(quota配额可以防止某个用户过多使用某个表空间中的空间)1.授予某个用户全局表空间的权限(通过命令单独授予)grant unlimited tablespace to username;2.授予某个用户全局表空间
·
一、授权
建用户的时候通常都可以选择一个default tablespace,但是在没有授权的情况下该用户也无法往该表空间写数据,需要进行授权。授权有全局授权和通过quota限制两种情况(quota配额可以防止某个用户过多使用某个表空间中的空间)
1.授予某个用户全局表空间的权限(通过命令单独授予)
grant unlimited tablespace to username;
2.授予某个用户全局表空间的权限(通过角色来授予)
通过角色来授予的时候通常是授予resource角色。
注意:虽然resource角色自己没有带unlimited tablespace的权限,但是把这个角色授予用户的时候,unlimited tablespace权限会自动带上
1)查看resource角色底下带的权限,没有unlimited tablespace权限
SQL> SELECT * from Dba_Sys_Privs s WHERE s.grantee='RESOURCE';
GRANTEE PRIVILEGE ADMIN_
------------------------------------------------------------ -------------------------------------------------------------------------------- ------
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE TYPE NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE CLUSTER NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE INDEXTYPE NO
RESOURCE CREATE TABLE NO
2)把resource角色授予用户
SQL> grant resource to username;
Grant succeeded.
3)查看用户拥有的权限,可以发现自己带上了unlimited tablespace(另外这个时候可以去看dba_ts_quotas,这样授权的用户没有体现出来)
SQL> SELECT * from Dba_Sys_Privs s WHERE s.grantee='USERNAME' ;
GRANTEE PRIVILEGE ADMIN_OPTION
------------------------------------------------------------ -------------------------------------------------------------------------------- ------
USERNAME UNLIMITED TABLESPACE NO
USERNAME CREATE TABLESPACE NO
USERNAME CREATE SESSION NO
3.授予某个用户个别表空间的权限
1)授予某个用户完全访问某个表空间的权限
ALTER USER username QUOTA UNLIMITED ON rcat
---特别的,在授予完权限后查看dba_ts_quotas表:
SQL> SELECT * from Dba_Ts_Quotas z WHERE z.username='USERNAME';
TABLESPACE_NAME USERNAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DROPPE
------------------------------------------------------------ ------------------------------------------------------------ ---------- ---------- ---------- ---------- ------
RCAT USERNAME 524288 -1 64 -1 NO
此时max_bytes 为-1,即不受限制。
2)授予某个用户有限访问某个表空间的权限
ALTER USER username QUOTA 1M ON rcat;
SQL> SELECT * from Dba_Ts_Quotas z WHERE z.username='USERNAME';
TABLESPACE_NAME USERNAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DROPPE
------------------------------------------------------------ ------------------------------------------------------------ ---------- ---------- ---------- ---------- ------
RCAT USERNAME 524288 1048576 64 128 NO
---可以看到MAX_BYTES是1MB
二、回收权限
1.全局
revoke unlimited tablespace from username;
2.个别表空间
ALTER USER username QUOTA 0 ON rcat
更多推荐
已为社区贡献1条内容
所有评论(0)