初始化引數O7_DICTIONARY_ACCESSIBILITY(二)

yangtingkun發表於2010-09-19

O7_DICTIONARY_ACCESSIBILITY也是和安全性有關的一個重要的初始化引數。這個引數用來控制資料字典訪問行為是否和Oracle 7中保持一致。

這一篇介紹O7_DICTIONARY_ACCESSIBILITYSYS登陸的影響。

初始化引數O7_DICTIONARY_ACCESSIBILITYhttp://yangtingkun.itpub.net/post/468/505631

 

 

9i開始,SYS使用者登陸資料庫的時候必須指定AS SYSDBA,而無法在以普通的身份登陸資料庫:

SQL> CONN SYS
輸入口令:
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

不過如果設定了O7_DICTIONARY_ACCESSIBILITY初始化引數為TRUE,則SYS可以直接登陸資料庫,而不需要在指定AS SYSDBA

SQL> SHOW PARAMETER O7

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
O7_DICTIONARY_ACCESSIBILITY          boolean     TRUE
SQL> CONN SYS
輸入口令:
已連線。

這種特性使得透過SYS建立資料庫鏈變得可能。

以前一直認為沒有辦法建立SYS使用者的資料庫鏈,因為沒有辦法在建立資料庫鏈的時候指定AS SYSDBA

SQL> CREATE DATABASE LINK TEST112
  2  CONNECT TO SYS
  3  IDENTIFIED BY "test"
  4  USING '172.25.198.230/TEST112';

資料庫連結已建立。

SQL> SELECT * FROM GLOBAL_NAME@TEST112;
SELECT * FROM GLOBAL_NAME@TEST112
                          *
1 行出現錯誤:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
ORA-02063:
緊接著 line (起自 TEST112)

而設定了這個初始化引數後,SYS資料庫鏈也變得可能了:

SQL> CREATE DATABASE LINK TESTRAC
  2  CONNECT TO SYS
  3  IDENTIFIED BY TEST
  4  USING '172.25.198.223/TESTRAC';

資料庫連結已建立。

SQL> SELECT * FROM GLOBAL_NAME@TESTRAC;

GLOBAL_NAME
--------------------------------------------------------------------------------
TESTRAC

SQL> DROP DATABASE LINK TESTRAC;

資料庫連結已刪除。

SQL> CONN / AS SYSDBA
已連線。
SQL> CREATE DATABASE LINK TESTRAC
  2  USING '172.25.198.223/TESTRAC';

資料庫連結已建立。

SQL> SELECT * FROM GLOBAL_NAME@TESTRAC;

GLOBAL_NAME
--------------------------------------------------------------------------------
TESTRAC

不僅指定使用者名稱密碼的方式可以建立資料庫鏈,還可以透過當前使用者的方式建立資料庫鏈。

需要注意,O7_DICTIONARY_ACCESSIBILITY初始化引數對安全性影響很大,SYS使用者下的物件本來就不應該被隨意訪問,更不要說修改了。如果沒有必要,這個引數應該設定為預設值FALSE

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-674448/,如需轉載,請註明出處,否則將追究法律責任。

相關文章