Oracle 11g 中的自动数据库维护任务管理

故障现象

最近有顾客反映公司网站每晚10点开始访问很慢,大概过几分钟又恢复正常。

数据库运行环境:AIX 6.1  ORACLE 11.2.0.1。

先排除了网络问题,后来发现那个时间点数据库服务器CPU占用率很高,从oralce  alert 日志查出该时间点开始自动运行sql tuning advisor。


故障原因:

oracle11g默认定时开启了三个自动维护任务,导致该时段主机资源紧张数据库性能低下,plsql连接数据库使用下列命令查看具体三个任务:

sql> 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> execute DBMS_AUTO_TASK_ADMIN.DISABLE;

注意:执行execute DBMS_AUTO_TASK_ADMIN.DISABLE;

(1)相当于总开关,关闭了这三个job;

(2)但是每个每个job上的开关依然是开着的,select client_name ,status from DBA_AUTOTASK_CLIENT;命令看到三个任务还是ENABLED状态;

(3)虽然三个任务还是ENABLED状态,但已经不能执行他们的功能了






以下是在网上找的关于sql tuning advisor的资料


对于11g版本的oracle 有三个自动维护定时任务。

1 自动优化器统计收集:为所有方案对象收集陈旧的或缺少的统计数据,所收集的统计信息将被用来提高sql的执行的性能,任务名是“auto optimizer stats collection”
2 自动分段顾问:标识数据库中的段是否有可以回收的空间,并以此信息统计为基础做出怎样整理段的碎片以节约空间。你也可以手动的执行此job来获取最新的建议信息,或者获取自动段advisor 不检测的但又可以回收的段的信息,任务名是“auto space advisor”
3 自动SQL调整顾问:自动标识并尝试调整高负载的SQL,任务名是“sql tuning advisor”
sys@RAC> select client_name ,status from DBA_AUTOTASK_CLIENT;
CLIENT_NAME                                                      STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection                                  ENABLED
auto space advisor                                               ENABLED
sql tuning advisor                                               ENABLED
管理自动维护的job


在oracle 10g中这些job被分别创建并且以DBA_SCHEDULER_JOBS.JOB_NAME的名称出现

然而在11g中则有所改变,通过视图DBA_AUTOTASK_WINDOW_CLIENTS可以查看他们一周七天的执行情况,包括

时间窗口,下次执行时间,job的名称,健康检查

sys@RAC> select * from DBA_AUTOTASK_WINDOW_CLIENTS;

WINDOW_NAME        WINDOW_NEXT_TIME                   WINDO AUTOTASK OPTIMIZE SEGMENT_ADVISOR SQL_TUNE HEALTH_M
------------------ ---------------------------------- ----- -------- -------- --------------- -------- --------
WEDNESDAY_WINDOW   28-SEP-11 10.00.00.000000 PM PRC   FALSE DISABLED ENABLED  ENABLED         ENABLED  DISABLED
SATURDAY_WINDOW    01-OCT-11 06.00.00.000000 AM PRC   FALSE DISABLED ENABLED  ENABLED         ENABLED  DISABLED
THURSDAY_WINDOW    29-SEP-11 10.00.00.000000 PM PRC   FALSE DISABLED ENABLED  ENABLED         ENABLED  DISABLED
TUESDAY_WINDOW     27-SEP-11 10.00.00.000000 PM PRC   FALSE DISABLED ENABLED  ENABLED         ENABLED  DISABLED
SUNDAY_WINDOW      02-OCT-11 06.00.00.000000 AM PRC   FALSE DISABLED ENABLED  ENABLED         ENABLED  DISABLED
MONDAY_WINDOW      03-OCT-11 10.00.00.000000 PM PRC   FALSE DISABLED ENABLED  ENABLED         ENABLED  DISABLED
FRIDAY_WINDOW      30-SEP-11 10.00.00.000000 PM PRC   FALSE DISABLED ENABLED  ENABLED         ENABLED  DISABLED
7 rows selected.

DBMS_AUTO_TASK_ADMIN包的ENABLE和DISABLE存储过程能够实现关闭或者开启的三种job(不要任何参数):
execute DBMS_AUTO_TASK_ADMIN.DISABLE;
execute DBMS_AUTO_TASK_ADMIN.ENABLE;


关闭指定的job
BEGIN
 dbms_auto_task_admin.disable(
 client_name => 'sql tuning advisor',
 peration => NULL,
 window_name => NULL);
END;  
/
开启指定的job:
BEGIN
 dbms_auto_task_admin.enable(
 client_name => 'sql tuning advisor',
 peration => NULL,
 window_name => NULL);
END;  
/
关闭周三sql优化器顾问的执行窗口
sys@RAC> BEGIN
 2         dbms_auto_task_admin.disable(
 3         client_name => 'sql tuning advisor',
 4         peration => NULL,
 5         window_name => 'MONDAY_WINDOW');
 6       END;  
 7      /
PL/SQL procedure successfully completed.
sys@RAC> select * from DBA_AUTOTASK_WINDOW_CLIENTS;

WINDOW_NAME        WINDOW_NEXT_TIME                   WINDO AUTOTASK OPTIMIZE SEGMENT_ADVISOR      SQL_TUNE HEALTH_M
------------------ ---------------------------------- ----- -------- -------- -------------------- -------- --------
WEDNESDAY_WINDOW   28-SEP-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
SATURDAY_WINDOW    01-OCT-11 06.00.00.000000 AM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
THURSDAY_WINDOW    29-SEP-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
TUESDAY_WINDOW     27-SEP-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
SUNDAY_WINDOW      02-OCT-11 06.00.00.000000 AM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
MONDAY_WINDOW      03-OCT-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              DISABLED DISABLED
FRIDAY_WINDOW      30-SEP-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
7 rows selected.
关闭星期天的自动段顾问job的时间窗口:
sys@RAC> BEGIN
 2         dbms_auto_task_admin.disable(
 3         client_name => 'auto space advisor',
 4         peration => NULL,
 5         window_name => 'SUNDAY_WINDOW');
 6       END;  
 7      /
PL/SQL procedure successfully completed.

sys@RAC> select * from DBA_AUTOTASK_WINDOW_CLIENTS;

WINDOW_NAME        WINDOW_NEXT_TIME                   WINDO AUTOTASK OPTIMIZE SEGMENT_ADVISOR      SQL_TUNE HEALTH_M
------------------ ---------------------------------- ----- -------- -------- -------------------- -------- --------
WEDNESDAY_WINDOW   28-SEP-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
SATURDAY_WINDOW    01-OCT-11 06.00.00.000000 AM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
THURSDAY_WINDOW    29-SEP-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
TUESDAY_WINDOW     27-SEP-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED
SUNDAY_WINDOW      02-OCT-11 06.00.00.000000 AM PRC   FALSE ENABLED  ENABLED  DISABLED             ENABLED  DISABLED
MONDAY_WINDOW      03-OCT-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              DISABLED DISABLED
FRIDAY_WINDOW      30-SEP-11 10.00.00.000000 PM PRC   FALSE ENABLED  ENABLED  ENABLED              ENABLED  DISABLED

7 rows selected.
更详细的信息请看:
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e23448/d_autotaskadm.htm#ARPLS032
sys@RAC>
10g 和 11g 中的对比信息 :
Subject                   10g                         11g
Jobs              以不同的job显示在           自动维护进程有一个'ORA$AT'前缀并且
                 DBA_SCHEDULER_JOBS中        一旦执行,则只是显示一个job而非多个!
Maintenance      10g有两个维护窗口
Window           WEEKNIGHT and WEEKEND        每天有自己的时间窗口
Resource   默认不启用                        为每周的窗口预定义资源计划


你可能感兴趣的:(oracle,自动维护任务)