具體錯誤如下:關鍵字:ORA-12012、ORA-20001
ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_39628"
ORA-20001: Statistics Advisor: Invalid task name for the current user
ORA-06512: at "SYS.DBMS_STATS", line 47207
ORA-06512: at "SYS.DBMS_STATS_ADVISOR", line 882
ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 20059
ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 22201
ORA-06512: at "SYS.DBMS_STATS", line 47197
從網上查了查資料,主要是“惜分飛”牛人的一篇文章。
按照文章的方式嘗試去解決,不行。
后來仔細研究了下,發現是自動任務所屬的用戶不對!
以sys用戶直接刪除表記錄,再次按照文章的方式操作了一遍。ok!
----問題:alert 報錯,但是 相關系統表 沒有配置 select name, ctime, how_created, t.* from sys.wri$_adv_tasks t where 1 = 1 --and owner_name = 'SYS' and name in ('AUTO_STATS_ADVISOR_TASK', 'INDIVIDUAL_STATS_ADVISOR_TASK'); ---------------------------------------------- ----解決: delete --- 以 sys 用戶執行 from sys.wri$_adv_tasks t where 1 = 1 --and owner_name = 'SYS' and name in ('AUTO_STATS_ADVISOR_TASK', 'INDIVIDUAL_STATS_ADVISOR_TASK'); commit; ---- oracle 也不是那么靠譜的,如果涉及復雜業務邏輯的話,比如這個問題。弱! begin dbms_stats.init_package(); --- exec dbms_stats.init_package(); end; / begin dbms_auto_task_admin.DISABLE; dbms_auto_task_admin.ENABLE; end; / --- 再次驗證。ok ---------------------------------------------- select name, ctime, how_created, t.* from sys.wri$_adv_tasks t where 1 = 1 --and owner_name = 'SYS' and name in ('AUTO_STATS_ADVISOR_TASK', 'INDIVIDUAL_STATS_ADVISOR_TASK'); ---------------------------------------------- select owner_name, name, ctime, how_created,t.* from sys.wri$_adv_tasks t where 1 = 1 --and owner_name = 'SYS' and upper(name) like '%ADVIS%'
