SESSION_PRIVS和SESSION_ROLES動態檢視
SESSION_PRIVS和SESSION_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檢視查詢不到任何記錄,而呼叫者許可權儲存過程中是可以檢視到。
這種特性和sqlplus的SHOW PARAMETER命令有不少相似之處,都是反映查詢時刻的真實情況。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-674527/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle檢視:常用動態效能檢視Oracle
- 動態效能檢視
- ASM動態效能檢視ASM
- 動態建立ImageView檢視View
- 資料字典和動態效能檢視基礎
- v$動態效能檢視和隱含引數
- oracle常用的動態檢視Oracle
- (轉)Oracle 動態效能檢視Oracle
- V$PGASTAT動態效能檢視AST
- 動態效能檢視基礎
- 動態建立檢視指令碼指令碼
- 8.1關於動態效能檢視
- 轉:系統動態檢視速查
- Oracle的v$動態檢視 收藏Oracle
- 動態返回結果的檢視
- 5.資料字典和動態效能檢視(筆記)筆記
- db2常用動態效能檢視DB2
- RMAN相關的動態效能檢視
- 檢視引數是否可以動態修改
- 系統狀態統計和檢視
- Data Guard相關的動態效能檢視
- 10g 動態效能檢視[final]
- 關於SGA的常用動態效能檢視
- linux動態檢視某組程式狀態的辦法Linux
- 如何檢視oracle引數是靜態或者是動態Oracle
- Depends.exe檢視dll動態鏈檔案
- RMAN備份相關的動態效能檢視
- 如何檢視哪些SQL使用了動態取樣?SQL
- SGA相關的幾個動態效能檢視
- 動態檢視V$SESSION_LONGOPS學習SessionGo
- 動態新增子檢視 UIView 的正確方法UIView
- 自定義提醒檢視Alert-動態繪製
- oracle最重要的9個動態效能檢視Oracle
- V$PGA_TARGET_ADVICE 動態效能檢視
- ORACLE動態效能檢視統計值溢位Oracle
- (重要)關於效能的幾個主要動態檢視
- DBA-常用到的動態檢視分析語句
- 動態檢視學習之v$session_waitSessionAI