因为人员紧缺,最近又忙着去搞性能优化的事情,有时候真的是不想再搞这个事情,只是没办法,我当前的绩效几乎取决于这个项目的最终成绩,所以不管是人的事还是事的事,都得去让他顺利推进。
前段时间发生还有几台服务器晚上10点多awr里面还一直在跑DBMS_SCHEDULER的任务,如下:
DECLARE job BINARY_INTEGER := :job; next_date TIMESTAMP WITH TIME ZONE := :mydate; broken BOOLEAN := FALSE; job_name VARCHAR2(30) := :job_name; job_subname VARCHAR2(30) := :job_subname; job_owner VARCHAR2(30) := :job_owner; job_start TIMESTAMP WITH TIME ZONE := :job_start; job_scheduled_start TIMESTAMP WITH TIME ZONE := :job_scheduled_start; window_start TIMESTAMP WITH TIME ZONE := :window_start; window_end TIMESTAMP WITH TIME ZONE := :window_end; chain_id VARCHAR2(14) := :chainid; credential_owner varchar2(30) := :credown; credential_name varchar2(30) := :crednam; destination_owner varchar2(30) := :destown; destination_name varchar2(30) := :destnam; job_dest_id varchar2(14) := :jdestid; log_id number := :log_id; BEGIN DECLARE ename VARCHAR2(30); BEGIN ename := dbms_sqltune.execute_tuning_task( 'SYS_AUTO_SQL_TUNING_TASK'); END; :mydate := next_date; IF broken THEN :b := 1; ELSE :b := 0; END IF; END; |
虽然已经禁用了“auto space advisor”,但是不希望禁用“auto optimizer stats collection”,而是在凌晨执行。
更改运行时间:
BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE(
'MONDAY_WINDOW',
'repeat_interval',
'freq=daily;byday=MON;byhour=1;byminute=0;bysecond=0');
end;
/
这样就可以避免夜间跑批时间了。
关于oracle 11g中管理自动维护任务的详细使用例子,可以参考:
https://oracle-base.com/articles/11g/automated-database-maintenance-task-management-11gr1
oracle 10g中自动优化器收集的定时任务,可以参考:
https://oracle-base.com/articles/10g/performance-tuning-enhancements-10g#automatic_optimizer_statistics_collection