生产上有一套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: 1234567 COLUMN parameter_value FORMAT A30 SELECT parameter_name, parameter_value FROM dba_advisor_parameters WHERE task_name = "SYS_AUTO_SQL_TUNING_TASK" AND parameter_name IN ("TIME_LIMIT", "DEFAULT_EXECUTION_TYPE", "LOCAL_TIME_LIMIT"); Then, increase the time:Using:BEGIN DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER(task_name => "SYS_AUTO_SQL_TUNING_TASK", parameter => "TIME_LIMIT", value => 7200); END; / 意思是后台自动分析sql耗时超过了默认的时间限制3600s,需要使用DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER包增长时间限制。 一般在生产上不默认是不开启SQL TUNING ADVISOR。可以使用下面代码关闭自动SQL TUNING ADVISOR。 --查询当前任务状态 SYS@db2> select client_name,status from DBA_AUTOTASK_CLIENT;
CLIENT_NAME STATUS ---------------------------------------------------------------- -------- auto optimizer stats collection ENABLED auto space advisor ENABLED sql tuning advisor ENABLED --禁用sql tuning advisor SYS@db2> BEGIN 2 dbms_auto_task_admin.disable( 3 client_name => "sql tuning advisor", 4 operation => NULL, 5 window_name => NULL); 6 END; 7 /
PL/SQL procedure successfully completed. --再次查询状态 SYS@db2> select client_name,status from DBA_AUTOTASK_CLIENT;
CLIENT_NAME STATUS ---------------------------------------------------------------- -------- auto optimizer stats collection ENABLED auto space advisor ENABLED sql tuning advisor DISABLED --启用sql tuning advisor BEGIN dbms_auto_task_admin.enable( client_name => "sql tuning advisor", operation => NULL, window_name => NULL); END;更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址