SESSION_PRIVS和SESSION_ROLES动态视图

SESSION_PRIVSSESSION_ROLES用来获取用户当前的授权和角色,和V$视图类似,这两个视图访问的是当前生效的权限和角色。

 

 

对比调用者权限存储过程和定义者权限存储过程:

QL> SELECT * FROM SESSION_PRIVS;

PRIVILEGE
----------------------------------------
ALTER SYSTEM
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE VIEW
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
CREATE MATERIALIZED VIEW
CREATE TYPE

已选择11行。

SQL> SELECT * FROM SESSION_ROLES;

ROLE
------------------------------
R_TEST
PLUSTRACE

SQL> SET SERVEROUT ON
SQL> CREATE OR REPLACE PROCEDURE P_DEFINER
  2  AS
  3  BEGIN
  4     DBMS_OUTPUT.PUT_LINE('PRIVILEGE:');
  5     FOR I IN (SELECT PRIVILEGE FROM SESSION_PRIVS) LOOP
  6             DBMS_OUTPUT.PUT_LINE('  ' || I.PRIVILEGE);
  7     END LOOP;
  8     DBMS_OUTPUT.NEW_LINE;
  9     DBMS_OUTPUT.PUT_LINE('ROLE:');
 10     FOR I IN (SELECT ROLE FROM SESSION_ROLES) LOOP
 11             DBMS_OUTPUT.PUT_LINE('  ' || I.ROLE);
 12     END LOOP;
 13  END;
 14  /

过程已创建。

SQL> CREATE OR REPLACE PROCEDURE P_INVOKER
  2     AUTHID CURRENT_USER
  3  AS
  4  BEGIN
  5     DBMS_OUTPUT.PUT_LINE('PRIVILEGE:');
  6     FOR I IN (SELECT PRIVILEGE FROM SESSION_PRIVS) LOOP
  7             DBMS_OUTPUT.PUT_LINE('  ' || I.PRIVILEGE);
  8     END LOOP;
  9     DBMS_OUTPUT.NEW_LINE;
 10     DBMS_OUTPUT.PUT_LINE('ROLE:');
 11     FOR I IN (SELECT ROLE FROM SESSION_ROLES) LOOP
 12             DBMS_OUTPUT.PUT_LINE('  ' || I.ROLE);
 13     END LOOP;
 14  END;
 15  /

过程已创建。

SQL> EXEC P_DEFINER
PRIVILEGE:
ALTER SYSTEM
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE VIEW
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
CREATE MATERIALIZED VIEW
CREATE TYPE
ROLE:

PL/SQL 过程已成功完成。

SQL> EXEC P_INVOKER
PRIVILEGE:
ALTER SYSTEM
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE VIEW
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
CREATE MATERIALIZED VIEW
CREATE TYPE
ROLE:
R_TEST
PLUSTRACE

PL/SQL 过程已成功完成。

对于定义者权限存储过程,角色是无效的,因此在存储过程中访问SESSION_ROLES视图查询不到任何记录,而调用者权限存储过程中是可以查看到。

这种特性和sqlplusSHOW PARAMETER命令有不少相似之处,都是反映查询时刻的真实情况。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-674527/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/4227/viewspace-674527/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值