生産上有一套11g資料庫alert.log報錯ORA-16957: SQL Analyze time limit interrupt。
查詢MOS相關文檔Troubleshooting: ORA-16957: "SQL Analyze time limit interrupt" Errors (文檔 ID 1275248.1)
The ORA-16957 error is an internal error code used to indicate that SQL Tuning Task has reached the time limit for tuning a specific sql.
The default time limit is 3600 seconds.
1. Check the current timing:
<code>COLUMN</code> <code>parameter_value FORMAT A30 </code>
<code>SELECT</code> <code>parameter_name, parameter_value </code>
<code>FROM</code> <code>dba_advisor_parameters </code>
<code>WHERE</code> <code>task_name = </code><code>'SYS_AUTO_SQL_TUNING_TASK'</code>
<code>AND</code> <code>parameter_name </code><code>IN</code> <code>(</code><code>'TIME_LIMIT'</code><code>, </code>
<code>'DEFAULT_EXECUTION_TYPE'</code><code>, </code>
<code>'LOCAL_TIME_LIMIT'</code><code>);</code>
Then, increase the time:
Using:
<code>BEGIN</code>
<code> </code><code>DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER(task_name => </code><code>'SYS_AUTO_SQL_TUNING_TASK'</code><code>, parameter => </code><code>'TIME_LIMIT'</code><code>, value => 7200); </code>
<code>END</code><code>;</code>
<code>/</code>
意思是背景自動分析sql耗時超過了預設的時間限制3600s,需要使用DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER包增長時間限制。
一般在生産上不預設是不開啟SQL TUNING ADVISOR。可以使用下面代碼關閉自動SQL TUNING ADVISOR。
<code>--查詢目前任務狀态</code>
<code>SYS@db2> </code><code>select</code> <code>client_name,status </code><code>from</code> <code>DBA_AUTOTASK_CLIENT;</code>
<code>CLIENT_NAME STATUS</code>
<code>---------------------------------------------------------------- --------</code>
<code>auto optimizer stats collection ENABLED</code>
<code>auto </code><code>space</code> <code>advisor ENABLED</code>
<code>sql tuning advisor ENABLED</code>
<code>--禁用sql tuning advisor</code>
<code>SYS@db2> </code><code>BEGIN</code>
<code> </code><code>2 dbms_auto_task_admin.disable(</code>
<code> </code><code>3 client_name => </code><code>'sql tuning advisor'</code><code>,</code>
<code> </code><code>4 operation => </code><code>NULL</code><code>,</code>
<code> </code><code>5 window_name => </code><code>NULL</code><code>);</code>
<code> </code><code>6 </code><code>END</code><code>;</code>
<code> </code><code>7 /</code>
<code>PL/SQL </code><code>procedure</code> <code>successfully completed.</code>
<code>--再次查詢狀态</code>
<code>sql tuning advisor DISABLED</code>
<code>--啟用sql tuning advisor</code>
<code>BEGIN</code>
<code>dbms_auto_task_admin.enable(</code>
<code> </code><code>client_name => </code><code>'sql tuning advisor'</code><code>,</code>
<code> </code><code>operation => </code><code>NULL</code><code>,</code>
<code> </code><code>window_name => </code><code>NULL</code><code>);</code>
參考文檔:http://blog.chinaunix.net/uid-25528717-id-3172008.html
參考文檔:http://www.cnblogs.com/suredandan/p/3200157.html
參考文檔:http://blog.itpub.net/235507/viewspace-1137629/
官方文檔:http://docs.oracle.com/cd/E11882_01/server.112/e25494/tasks.htm#ADMIN12332
本文轉自hbxztc 51CTO部落格,原文連結:http://blog.51cto.com/hbxztc/1870577,如需轉載請自行聯系原作者