ITPub博客

首页 > 数据库 > Oracle > Oracle自动维护任务

Oracle自动维护任务

Oracle 作者:bfc99 时间:2014-10-22 15:36:33 0 删除 编辑

以下转自:http:///Linux/2013-03/81678.htm 作者:linux

最近看到alter日志里面有VKRM的报错信息,所以查询学习了下。
 
From Oracle 11g, each day has its own windows and each of it has been specified default resource plan.This is something new for me too.So, i think that would be reason for seeing VKRM process in the alert log.
 
 
 
SQL> select WINDOW_NAME,RESOURCE_PLAN from DBA_SCHEDULER_WINDOWS;
 
 
 
WINDOW_NAME                    RESOURCE_PLAN
 
------------------------------ ------------------------------
 
MONDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN
 
TUESDAY_WINDOW                DEFAULT_MAINTENANCE_PLAN
 
WEDNESDAY_WINDOW              DEFAULT_MAINTENANCE_PLAN
 
THURSDAY_WINDOW                DEFAULT_MAINTENANCE_PLAN
 
FRIDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN
 
SATURDAY_WINDOW                DEFAULT_MAINTENANCE_PLAN
 
SUNDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN
 
WEEKNIGHT_WINDOW
 
WEEKEND_WINDOW
 
 
 
SYS@>AppD> SELECT WINDOW_GROUP_NAME,ENABLED,NEXT_START_DATE,COMMENTS FROM DBA_SCHEDULER_WINDOW_GROUPS
 
 
 
WINDOW_GROUP_NAME              ENABL NEXT_START_DATE                          COMMENTS
 
-------------------------- ----------------------------------------  --------------------------------------
 
MAINTENANCE_WINDOW_GROUP      TRUE  14-MAR-11 10.00.00.000000 PM  Window group for Automated Maintenance
 
ORA$AT_WGRP_OS                TRUE  14-MAR-11 10.00.00.000000 PM  auto optimizer stats collection
 
ORA$AT_WGRP_SA                TRUE  14-MAR-11 10.00.00.000000 PM  auto space advisor
 
ORA$AT_WGRP_SQ                TRUE  14-MAR-11 10.00.00.000000 PM  sql tuning advisor
 
 
 
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
 
 
 
自动维护任务是一种按规则自动启动的数据库维护操作任务。比如自动收集为查询优化器使用的统计信息。自动维护任务按维护窗口自动运行。所谓自动维护窗口是按照预定义的间隔时间窗口。

Oracle11g数据库有三种预定义的自动维护任务:
 
1 自动优化器统计收集:为所有方案对象收集陈旧的或缺少的统计数据,所收集的统计信息将被用来提高sql的执行的性能,任务名是“auto optimizer stats collection”
 
2 自动分段顾问:标识数据库中的段是否有可以回收的空间,并以此信息统计为基础做出怎样整理段的碎片以节约空间。你也可以手动的执行此job来获取最新的建议信息,或者获取自动段advisor 不检测的但又可以回收的段的信息,任务名是“auto space advisor”
 
3 自动SQL调整顾问:自动标识并尝试调整高负载的SQL,任务名是“sql tuning advisor”
 
 
 
缺省情况下,这三个任务配置为在所有维护窗口运行。
 
维护窗口:维护窗口是一个连续的时间间隔,用于管理自动维护任务所用。维护窗口是oracle 调度窗口,属于窗口组MAINTENANCE_WINDOW_GROUP。
 
 
 
一:配置自动维护任务:
 
1:启用和禁止维护任务:
 
使用DBMS_AUTO_ADMIN pl/sql包来启用或禁用任务:
 
禁用任务:
 
BEGIN
 
dbms_auto_task_admin.disable(
 
    client_name => 'sql tuning advisor',
 
    operation  => NULL,
 
    window_name => NULL);
 
END;
 
启用任务:
 
BEGIN
 
dbms_auto_task_admin.enable(
 
    client_name => 'sql tuning advisor',
 
    operation  => NULL, 
    window_name => NULL);
 
END;
 
这里client_name参数可以通过数据字典视图DBA_AUTOTASK_CLIENT来查询。
 
 
 
sys@ORCL11> select client_name from dba_autotask_client;
 
CLIENT_NAME
 
------------------------------------------------------------
 
auto optimizer stats collection
 
auto space advisor
 
sql tuning advisor
 
 
 
如果想启用或禁用所有窗口自动维护任务,调用ENABLE或DISABLE过程:
 
EXECUTE DBMS_AUTO_TASK_ADMIN.DISABLE;
 
 
 
2:为某一个维护窗口启用或禁用维护窗口
 
缺省情况下,所有维护任务在所有预定义的维护窗口都运行。可以对某一个维护窗口启用或禁用自动化任务。
 
BEGIN
 
dbms_auto_task_admin.disable(
 
client_name => 'sql tuning advisor', 
 
operation  => NULL, 
 
window_name => 'MONDAY_WINDOW');
 
END;
 
上面的例子是对维护窗口monday_window进行禁用sql tuning advisor。

二:配置维护窗口:
 
 可是使用DBMS_SCHEDULER 包来修改窗口属性。
 
 
 
1:修改维护窗口
 
--先禁用维护窗口
 
BEGIN
 
dbms_scheduler.disable(
 
    name  => 'SATURDAY_WINDOW');
 
--修改维护窗口属性:
 
dbms_scheduler.set_attribute(
 
    name      => 'SATURDAY_WINDOW',
 
    attribute => 'DURATION',
 
    value    => numtodsinterval(4, 'hour'));
 
--启用维护窗口 
 
dbms_scheduler.enable(
 
    name => 'SATURDAY_WINDOW');
 
END;
 
/
 
对于当前打开的窗口,你需要首先禁用,然后修改再启用,配置立即生效,如果你不通过这三个过程来修改属性,属性是不会生效的,直到下一次窗口打开。
 
 
 
2:创建新窗口:
 
BEGIN
 
dbms_scheduler.create_window(
 
    window_name    => 'EARLY_MORNING_WINDOW',
 
    duration        =>  numtodsinterval(1, 'hour'),
 
    resource_plan  => 'DEFAULT_MAINTENANCE_PLAN',
 
    repeat_interval => 'FREQ=DAILY;BYHOUR=5;BYMINUTE=0;BYSECOND=0');
 
dbms_scheduler.add_window_group_member(
 
    group_name  => 'MAINTENANCE_WINDOW_GROUP',
 
    window_list => 'EARLY_MORNING_WINDOW');
 
END;
 
/
 
 
 
3:删除窗口:
 
BEGIN
 
DBMS_SCHEDULER.REMOVE_WINDOW_GROUP_MEMBER(
 
    group_name  => 'MAINTENANCE_WINDOW_GROUP',
 
    window_list => 'EARLY_MORNING_WINDOW');
 
END;   
/
 
 
 
三:跟踪job运行情况:
 
 
 
可以通过查询视图DBA_AUTOTASK_HISTORY追踪job运行情况:
 
SQL> select client_name,job_name,job_start_time from dba_autotask_job_history;
 
CLIENT_NAME          JOB_NAME            JOB_START_TIME
 
-------------------- -------------------- ------------------------------------
 
auto optimizer stats ORA$AT_OS_OPT_SY_1  09-APR-12 10.00.02.039000 PM +08:00
 
auto space advisor  ORA$AT_SA_SPC_SY_2  09-APR-12 10.00.02.050000 PM +08:00
 
sql tuning advisor  ORA$AT_SQ_SQL_SW_3  09-APR-12 10.00.02.015000 PM +08:00

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22207394/viewspace-1307239/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-01-02

  • 博文量
    79
  • 访问量
    621422