設定AUTOTRACE時出現SP2-0611錯誤

yangtingkun發表於2010-05-25

這個錯誤比較奇怪,設定AUTOTRACE是出現SP2-0611ORA-942錯誤。

 

 

版本11.2 for Linux x86-64

SQL> CONN TEST/TEST
已連線。
SQL> SET AUTOT TRACE
蒐集統計資訊時出錯 ORA-942
SP2-0611:
啟用 STATISTICS 報告時出錯
SQL> SET AUTOT ON
蒐集統計資訊時出錯 ORA-942
SP2-0611:
啟用 STATISTICS 報告時出錯
SQL> SET AUTOT OFF
SQL> SET AUTOT ON
蒐集統計資訊時出錯 ORA-942
SP2-0611:
啟用 STATISTICS 報告時出錯
SQL> @?/rdbms/admin/utlxplan

表已建立。

SQL> SET AUTOT TRACE
蒐集統計資訊時出錯 ORA-942
SP2-0611:
啟用 STATISTICS 報告時出錯
SQL> SET AUTOT ON
蒐集統計資訊時出錯 ORA-942
SP2-0611:
啟用 STATISTICS 報告時出錯

這個錯誤以前還真沒有碰到過,一般導致AUTOTRACE失敗不是因為PLAN_TABLE不存在,就是由於缺少PLUSTRACE角色或PLUSTRACE角色包含的檢視許可權。

11gPLAN_TABLE是一個同義詞,指向SYSPLAN_TABLE$表,而且這個表的DML許可權已經授權給PUBLIC了,因此不應該是這個表導致的問題。

PLAN_TABLE建立了當前使用者下,錯誤依舊。

懷疑是由於缺少許可權造成的問題:

SQL> CONN / AS SYSDBA
已連線。
SQL> @?/sqlplus/admin/plustrce
SQL>
SQL> drop role plustrace;
drop role plustrace
          *
1 行出現錯誤:
ORA-01919:
角色 'PLUSTRACE' 不存在


SQL> create role plustrace;

角色已建立。

SQL>
SQL> grant select on v_$sesstat to plustrace;

授權成功。

SQL> grant select on v_$statname to plustrace;

授權成功。

SQL> grant select on v_$mystat to plustrace;

授權成功。

SQL> grant plustrace to dba with admin option;

授權成功。

SQL>
SQL> set echo off
SQL> GRANT PLUSTRACE TO TEST;

授權成功。

返回剛才的TEST使用者,並重新登陸:

SQL> CONN TEST/TEST
已連線。
SQL> SET AUTOT ON

問題消失,看來就是由於缺少許可權造成的。不過正常情況下Oracle的報錯應該是:

SQL> CREATE USER A IDENTIFIED BY A;

使用者已建立。

SQL> GRANT CONNECT TO A;

授權成功。

SQL> CONN A/A
已連線。
SQL> SET AUTOT ON
SP2-0618:
無法找到會話識別符號。啟用檢查 PLUSTRACE 角色
SP2-0611:
啟用 STATISTICS 報告時出錯
SQL> SET AUTOT OFF

檢查TEST使用者擁有的許可權:

SQL> SELECT OWNER, TABLE_NAME, PRIVILEGE
  2  FROM USER_TAB_PRIVS
  3  WHERE WNER = 'SYS'
  4  AND PRIVILEGE  = 'SELECT';

OWNER                          TABLE_NAME                     PRIVILEGE
------------------------------ ------------------------------ ---------------------
SYS                            V_$PROCESS                     SELECT
SYS                            V_$SESSION                     SELECT
SYS                            V_$PARAMETER                   SELECT
SYS                            V_$MYSTAT                      SELECT

懷疑因為包含了V_$MYSTAT檢視的許可權,使得Oracle沒有報錯缺少PLUSTRACE許可權,而是報錯ORA-942錯誤。

SQL> CONN / AS SYSDBA
已連線。
SQL> GRANT SELECT ON V_$MYSTAT TO A;

授權成功。

SQL> CONN A/A
已連線。
SQL> SET AUTOT ON
蒐集統計資訊時出錯 ORA-942
SP2-0611:
啟用 STATISTICS 報告時出錯

問題果然如此。

 

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

相關文章