通过em的告警“题目”,已经给出了去查看那个告警日志了 (注意最后的目录不要进alert,而且trace目录,查看告警日志)
,再根据时间进行定位,还是很准的。
Sun Jun 07 06:00:27 2020
DBMS_STATS: GATHER_STATS_JOB encountered errors. Check the trace file.
Errors in file /u01/oracle/diag/rdbms/fwsdb/fwsdb2/trace/fwsdb2_j000_18498.trc:
ORA-20011: Approximate NDV failed: ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
error opening file /home/oracle/var/ftp/oracle_external/CS_BATCH_OFFER_TEMP14506_18498.log
Sun Jun 07 07:10:33 2020
Process 0x0x541217aa8 appears to be hung in Auto SQL Tuning task
Current time = 1591485033, process death time = 1591485007
Attempting to kill process 0x0x541217aa8 with OS pid = 18502
OSD kill succeeded for process 0x541217aa8
初步分析:
DBMS_STATS: GATHER_STATS_JOB
--> 这是系统内部收集统计信息的任务Auto SQL Tuning task
--> 还是关于收集统计信息的任务。这里是SQL调优任务报错与 收集统计信息的任务 有关。
Oracle 9i之后,数据库存在有三个预定义自动维护任务,分别是:
SELECT client_name,
task_name,
task_target_type,
last_try_result,
operation_name,
status,
current_job_name,
job_scheduler_status,
retry_count,
last_good_date,
last_good_duration,
last_try_date,
last_try_duration
FROM dba_autotask_task;
可以看到sql tuning advisor 任务最后的状态是 STOP
。与我们之前看到的报错相吻合。
那么它为什么“被STOP”了呢? 主要说下Oracle自动收集统计信息的任务了。我在后边在赘述吧。简单的来说就是,他的时间太长了,Oracle觉得还是不要影响系统的正常使用,你就别跑了,停下来吧。
SELECT task_name, parameter_name, parameter_value, description
FROM dba_advisor_parameters
WHERE parameter_name LIKE '%TIME_LIMIT'
AND task_name = 'SYS_AUTO_SQL_TUNING_TASK';
OK。好了。我们之前的猜测被证实了。的确就是这么个问题。那么如何解决呢?
关闭任务
BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'sql tuning advisor',
operation => NULL,
window_name => NULL);
END;
/----------------------------以下为附加信息,建议关闭自动sql调优,而不是修改时间----------------
开启任务
BEGIN
DBMS_AUTO_TASK_ADMIN.ENABLE(
client_name => 'sql tuning advisor',
operation => NULL,
window_name => NULL);
END;
/
调整时间语句:
dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','TIME_LIMIT',7200);
自动sql优化,根据AWR的统计信息,针对产生较大性能影响的SQl运行SQl优化顾问(SQL Tuning Advisor)。AWR的统计信息用来生成一个SQL语句列表并根据它们过去一周对系统性能的影响进行排序,这个SQL列表会自动排除所有被断定为不太容易优化的SQL语句,比如并行查询、DML、DDL和任何由并发问题引起的性能问题。SQL优化顾问生成优化SQL的建议,建议中可能生成SQL配置文件(profile)。当建议使用SQL配置文件的时候,这些配置文件会进行性能测试,如果测试结果显示至少有三倍的改进,并且SQL优化任务参数ACCEPT_SQL_PROFILES设置为true,这个建议就会被接受;如果ACCEPT_SQL_PROFILES被设置为false,这个建议会被报告。
默认的ACCEPT_SQL_PROFILES设置为false,而且可以根据任何查询,单独执行SQl优化顾问。建议关闭这个性能。