وبلاگ مسعود حاجی حسن پور

راهکار های عملی اوراکل

راهکار های عملی اوراکل

این وبلاگ جهت به اشتراک گذاری تجربیات و راهکار های عملی در زمینه پایگاه داده اوراکل می باشد.

دستاوردها
طبقه بندی موضوعی

ORA-20001 AND ORA-06512

12c

 

سلام خدمت دوستان عزیزم

احتمالا تا الان همگی نسخه Oracle 12c را به صورت Container DB نصب کردید. اگر به alert log نگاه انداخته باشید error های زیر را خواهید دید:

Errors in file /u01/app/oracle/diag/rdbms/db12c/db12c/trace/db12c_j000_38330.trc:
ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_43"
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
2018-01-14T08:13:48.135989+03:30
Errors in file /u01/app/oracle/diag/rdbms/db12c/db12c/trace/db12c_j000_38436.trc:
ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_45"
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
2018-01-14T08:33:49.941839+03:30
با من همراه باشید تا دلیل و چگونگی حل مشکل را دریابیم.
 
  • علت وجود مشکل:
وقتی دیتابیس را با template های General_Purpose.dbc, Data_Warehouse.dbc میسازیم (دقت شود که اگر در زمان نصب نیز از پایگاه داده بخواهید که یک PDB بسازد باز هم از dbca استفاده خواهد کرد) یا یک pdb را از روی یک seed database بسازید در پلتفرمهای Linux, Solaris مشکل را مشاهده خواهید نمود.
 
دلیل مشکل در حقیقت عدم وجود Stats Advisor Tasks می باشد:
SQL> select name, ctime, how_created
from sys.wri$_adv_tasks
where owner_name = 'SYS'
and name in ('AUTO_STATS_ADVISOR_TASK','INDIVIDUAL_STATS_ADVISOR_TASK');  2    3    4

no rows selected

 

 

  • چرا مشکل باید حل گردد:
شاید بعضی از دوستان بگویند که "این alert برای ما مشکلی ایجاد نمیکند" ولی باید دقت شود با افزایش داده ها در جداول، در صورت عدم gather stats این مورد بر روی performance پایگاه داده و ساخت sql execution plan تاثیر مخربی خواهد داشت.
 
  • حل مشکل:
بسیار خوب با sysdba به root container متصل شوید و Task ها را با دستور زیر بسازید:
[oracle@oel7 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 14 10:29:08 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> EXEC dbms_stats.init_package();

PL/SQL procedure successfully completed.
حالا دوباره query  را اجرا میکنیم تا ببینیم Task ها ساخته شده اند یا نه:
SQL> select name, ctime, how_created from sys.wri$_adv_tasks where owner_name
= 'SYS' and name in
('AUTO_STATS_ADVISOR_TASK','INDIVIDUAL_STATS_ADVISOR_TASK');  2    3

NAME
--------------------------------------------------------------------------------
CTIME     HOW_CREATED
--------- ------------------------------
AUTO_STATS_ADVISOR_TASK
14-JAN-18 CMD

INDIVIDUAL_STATS_ADVISOR_TASK
14-JAN-18 CMD
دوستان عزیز امیدوارم مطلب کاربردی بوده باشد.
 
شاد و پیروز باشید.
  • مسعود حاجی حسن پور

نظرات  (۱)

ممنون مهندس، خیلی خوب بود

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی