Oracle:oracle 12.1.0.2 升級到12.2.0.1 后,自動任務報錯:ORA-20001: Statistics Advisor: Invalid task name for the current user


 

具體錯誤如下:關鍵字: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%'
       
       

 


免責聲明!

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



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