标签:
转自:http://os2ora.com/automated-maintenance-task/
这是11g引入的一套新的自动化机制。Oracle的官方文档大而全,不过想理清楚里面的来龙去脉可不是一件容易的事情。
不过下面几点知识要点是应该记住的。
1. Oracle有三个已定义好的automated maintenance tasks.
DBMS_STATS.SET_GLOBAL_PREFS ( pname VARCHAR2, pval VARCHAR2);
pname为”AUTOSTATS_TARGET”,pval为以上三个值之一。
2. 这些automated maintenace tasks在maintenance windows里得到执行。同样,Oracle已经定义好的7个windows,对应每周的每一天。周一到周五是从22:00到次日的02:00,周六和周日是从06:00到次日的02:00。
3. 如果不想这些automated maintenance tasks在一些windows里不被执行,或者完全不希望执行这些tasks。可以通过下面的API。
DBMS_AUTO_TASK_ADMIN.DISABLE(...)
4. 对于maintenance windows,系统会切换到相应的resource plan。如果你不想你原来的resource plan 被切换掉的话,记得在你设置resource plan时,在resource plan的名字前面加上force:。如下面所示:
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = ‘FORCE:mydb_plan‘;
自动化是个好东西,不过这建立上你正确理解了它们的基础上,要不有时就会出现莫名其妙的结果了。
举个简单的例子:如果你在某个时候truncate了一个表,之后重新加载了海量的数据,如果在你truncate后,加载数据之前,收集统计信息的任务启动了,那么它会把这个表的统计信息更新为空表的数据。于是,你的很多涉及到这个表的SQL语句就会莫名其妙的慢下来甚至于执行不完了,原因就在于统计信息的错误变化(海量->空),导致CBO对很多语句从原来的索引访问者变成了致命的全表扫描了。
自动化维护任务 – Automated Maintenance Task
标签:
原文地址:http://www.cnblogs.com/cnmarkao/p/4642339.html