環境:
sys@EMREP> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 ProductionTNS for Linux: Version 10.2.0.1.0 - ProductionNLSRTL Version 10.2.0.1.0 - Production
預設值
sys@EMREP> show parameter o7_NAME TYPE VALUE------------------------------------ ----------- ------------------------------O7_DICTIONARY_ACCESSIBILITY boolean FALSE
參數解釋
參數名: o7_DICTIONARY_ACCESSIBILITY
類別 : 安全性和審計
說明 : 主要用於從Oracle7移植到Oracle8i.
如果該值為TRUE,SYSTEM許可權(如SELECT ANY TABLE)將不限制對SYS方案中各對象的訪問(Oracle7行為)
如果該值為FALSE,只有被授予了SELECT_CATALOG_ROLE,EXECUTE_CATALOG_ROLE
或DELETE_CATALOG_ROLE許可權的使用者才能訪問SYS方案中的各對象
值範圍: TRUE | FALSE
位置 : $ORACLE_HOME/dbs/initSID.ora裡面設定
兩個錯誤
① ORA-28009
o7_DICTIONARY_ ACCESSIBILITY參數的預設設定為FALSE,所以使用SYS使用者串連資料庫時必須作為SYSDBA或SYSOPER身份。
如果將o7_DICTIONARY_ACCESSIBILITY參數設定為TRUE,該錯誤將不會產生
sys@EMREP> conn sys/oracleERROR:ORA-28009: connection as SYS should be as SYSDBA or SYSOPERsys@EMREP> conn / as sysdbaConnected.sys@EMREP> alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;System altered.sys@EMREP> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.sys@EMREP> startupORACLE instance started.Total System Global Area 524288000 bytesFixed Size 1220384 bytesVariable Size 155189472 bytesDatabase Buffers 364904448 bytesRedo Buffers 2973696 bytesDatabase mounted.Database opened.sys@EMREP> conn sys/oracleConnected.
② ORA-00942
當使用者沒有select any table的時候
sys@EMREP> create user u1 identified by u1;User created.sys@EMREP> grant connect,resource to u1;Grant succeeded.sys@EMREP> conn u1/u1Connected.u1@EMREP> show parameter dictionaryORA-00942: table or view does not existsys@EMREP> grant select any table to u1;Grant succeeded.sys@EMREP> conn u1/u1Connected.u1@EMREP> show parameter dictionaryNAME TYPE VALUE------------------------------------ ----------- ------------------------------O7_DICTIONARY_ACCESSIBILITY boolean TRUE
相關問題
今天給一個使用者select any table的許可權,但不想讓該使用者查詢dictionary views;想在init<sid>.ora中將o7_dictionary_accessibility設定為false,但不知道對系統有什麼樣的影響
答:
沒影響!這個參數是控制select any table許可權使用的,若該參數為 true,則有 select any table 許可權的帳號則可查看DBA_ V$等之類的資料字典,否(false),則只能看自己許可權內的如:user_, all_之類的字典,但被授予了select_catalog_role 則不受此參數的控制