oracle 调度对象统计信息的收集
1.1 调度对象统计信息的收集
查询优化器需要对象统计信息来正确地完成它的使命。因此,创建新的数据库后,会默认设置一个调用dbms_stats包的gather_database_stats_job_proc存储过程的后台作业。gather_database_stats_job_proc存储过程执行的操作与调用dbms_stats包的gather_database_stats存储过程时使用选项参数gather_stale和gather_empty执行的操作在本质上是相同的。注意,虽然在10.2版本中使用的是正常的作业,但是从11.1版本开始起,会将收集过程集成在自动维护任务里面。在两种情况下,任务都是使用dbms_scheduler包调度的,而不是dbms_job包。
警告 在11.2及之前的版本中,默认情况下任务的目标是除了固定表以外的所有对象。因此,你必须自己在数据库引擎负载高峰期处理固定表的对象统计信息收集的工作。建议在负载高峰期收集数据是因为固定表的内容强烈依赖于负载。例如x$ksuse表,它为每个会话包含一条记录。
1.1.1 10g 方式
gather_statsjob是在10g版本中自动设置的作业。其当前的配置,也就是下面示例中10.2版本的默认配置,可以通过下面的查询显示出来。输出是通过dbms_stats_job_10g.sql脚本生成的:
COLUMN program_owner FORMAT A13
COLUMN program_name FORMAT A17
COLUMN schedule_owner FORMAT A14
COLUMN schedule_name FORMAT A24
COLUMN schedule_type FORMAT A15
COLUMN enabled FORMAT A7
COLUMN state FORMAT A9
COLUMN program_type FORMAT A16
COLUMN program_action FORMAT A41
COLUMN enabled FORMAT A7
COLUMN window_name FORMAT A16
COLUMN repeat_interval FORMAT A37
COLUMN duration FORMAT A13
COLUMN enabled FORMAT A7
SELECT program_name, schedule_name, enabled, state