OCP试题,关于session_privs

本文详细介绍了Oracle数据库中的权限管理概念,包括系统权限与对象权限的区别,以及如何通过SQL语句查询和管理这些权限。

107. Which statement is true regarding the SESSION_PRIVS dictionary view?
A. It contains the current object privileges available in the user session.
B. It contains the current system privileges available in the user session.
C. It contains the object privileges granted to other users by the current user session.
D. It contains the system privileges granted to other users by the current user session.
Answer: B

以下语句查询session_privs数据字典视图:
  1. SQL> select from session_privs;  
  2.    
  3. PRIVILEGE  
  4. ----------------------------------------   
  5. ALTER SYSTEM  
  6. AUDIT SYSTEM  
  7. CREATE SESSION  
  8. ALTER SESSION  
  9. RESTRICTED SESSION  
  10. CREATE TABLESPACE  
  11. ALTER TABLESPACE  
  12. MANAGE TABLESPACE  
  13. DROP TABLESPACE  
  14. UNLIMITED TABLESPACE  
  15. CREATE USER  
  16. BECOME USER  
  17. ... ... 

官方文档对session_privs的描述是:

SESSION_PRIVS describes the privileges that are currently available to the user.

并没有说是系统权限还是对象权限,通过上面的查询结果可以知道这些都是系统权限,而不是对象级别的权限,那么对象级别的权限都是什么呢?

比较完整的权限说明如下(引自互联网:http://hi.baidu.com/zhaojing_boy/blog/item/0ffe95091266d939e824885f.html):

一、权限是用户对一项功能的执行权力。在Oracle中,根据系统管理方式不同,将权限分为系统权限与对象权限两类。系统权限是指是否被授权用户可以连接到数据库上,在数据库中可以进行哪些系统操作。而对象权限是指用户对具体的模式对象实体(schema)所拥有的权限。这样讲可以有些模糊,举个例子来说:select any table是系统权限,它表示可以查看任何表。而select on table1是对象实体权限,表示对表table1的查询权限。即是说对象权限是针对某个对象实体分配的,如表、索引、序列等等;

二、系统权限授权命令的使用

语法:
GRANT 权限名 TO 用户|角色|PUBLIC

其中,PUBLIC表示将权限赋给数据库中所有的用户、

例:赋给用户USER1权限CREATE TABLE的授权命令如下:
SQL>GRANT CREATE TABLE TO USER1;

授权语句还可以增加WITH ADMIN OPTION选项,表示被授权的用户可以将它所得权限赋给其它用户,如:
SQL>GRANT CREATE TABLE,CREATE VIEW TO USER1,USER2 WITH ADMIN OPTION;

若要了解各用户所拥有的系统权限,可以查询数据字典USER_SYS_PRIVS、ROLE_SYS_PRIVS。

若要回收权限,则使用REVOKE命令,如:
SQL>REVOKE CREATE TABLE FROM USER1;

三、实体对象权限管理

实体权限是指某一用户对某一特定schema对象的操作权限。

实体权限的授权命令
语法如下:

GRANT 实体权限名|ALL TO 用户|角色|PUBLIC
其中,ALL表示实体的所有实体权限。

如:
SQL>GRANT SELECT ON BOOKS_QUTHORS TO USER1;

以下语句用来查询表的实体权限的授权信息:
SQL>SELECT * FROM USER_TAB_PRIVES

若要回收实体权限,使用REVOKE,其语法如下:
REVOKE 实体权限名|ALL ON 实体名 FROM 用户名|角色名|PUBLIC。

Oracle 查看用户权限
ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。

USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息

ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息

DBA_*:有关整个数据库中对象的信息

(这里的*可以为TABLES, INDEXES, OBJECTS, USERS等。

1.查看所有用户:
select * from dba_user;
select * from all_users;
select * from user_users;

2.查看用户系统权限:
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;

3.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;

4.查看所有角色:
select * from dba_roles;

5.查看用户所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;

6.查看当前用户的缺省表空间
select username,default_tablespace from user_users;

7.查看某个角色的具体权限,如grant connect,resource,create session,create view to TEST;

查看RESOURCE具有那些权限,用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值