Oracle代理用戶(Proxy User)


Oracle 10gR2下,我們可以使用企業用戶代理(Enterprise User Proxy),來通過其他用戶登錄數據庫

 

使用的語句格式如下:

 

ALTER USER target_user GRANT CONNECT THROUGH proxy_user;

 

來看一個簡單的例子:

 

SQL>conn / as sysdba

Connected.

 

SQL>select * from v$version;

 

BANNER

----------------------------------------------------------------

Oracle Database10gEnterpriseEdition Release10.2.0.3.0 - 64bi

PL/SQL Release10.2.0.3.0 - Production

CORE   10.2.0.3.0     Production

TNS for IBM/AIX RISC System/6000: Version10.2.0.3.0 - Productio

NLSRTL Version10.2.0.3.0 - Production

 

SQL>create user test1 identified by test1;

 

User created.

 

SQL>create user test2 identified by test2;

 

User created.

 

SQL>alter user test2 grant connect through test1;       這里的test1test2的代理用戶

 

User altered.

 

SQL>grant connect,resource to test2;

 

Grant succeeded.

 

SQL>conn test2/test2;

Connected.

SQL>create table t2 (num number);

 

Table created.

 

這里創建了2個用戶:test1test2

假設我目前不知道test2用戶的密碼,又想以test2登錄數據庫,就可以使用test1以代理用戶方式登錄數據庫:

 

SQL>conn test1[test2]/test1       使用代理用戶test1登錄數據庫

Connected.

SQL>show user

USER is "TEST2"

SQL>desc t2

 Name                                     Null?   Type

 ----------------------------------------- -------- ----------------------------

 NUM                                               NUMBER

 

SQL>insert into t2 values(1);

 

1 row created.

 

SQL>commit;

 

Commit complete.

 

SQL>select * from t2;

 

      NUM

----------

        1

 

 

另外,這里即使代理用戶test1被鎖定,仍然可以代理登錄:

 

SQL>conn / as sysdba

Connected.

SQL>alter user test1 account lock;

 

User altered.

 

SQL>conn test1[test2]/test1

Connected.

SQL>select * from t2;

 

      NUM

----------

        1

 

不過如果原用戶test2被鎖定,那么登錄會報失敗:

 

SQL>conn / as sysdba

Connected.

SQL>alter user test2 account lock;

 

User altered.

 

SQL>conn test1[test2]/test1

ERROR:

ORA-28000: the account is locked

 

 

Warning: You are no longer connected to ORACLE.

 

 

11.2版本前(除了10.2.0.5),這是個期望行為,因為當使用代理用戶登錄數據庫時,Oracle只關心2點:

 

(1)      被代理用戶是否有連接數據庫的權限

(2)      代理用戶的用戶名和密碼是否匹配

 

除此之外,Oracle是不會關心代理用戶是否有CONNECT權限,是否被鎖定等方面問題。

 

11.2.0.110.2.0.5中修復了BUG6900761,使鎖定的代理用戶不能被使用,但如果用戶只是過期,仍然可以被當做代理用戶使用。而使用bug 9898461補丁可以使鎖定用戶和過期用戶都不能作為代理用戶使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM