[分享]自动统计收集作业在10g和11g中_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 5246 | 回复: 0   主题: [分享]自动统计收集作业在10g和11g中        下一篇 
guoqiang
注册用户
等级:上士
经验:252
发帖:26
精华:0
注册:2012-4-12
状态:离线
发送短消息息给guoqiang 加好友    发送短消息息给guoqiang 发消息
发表于: IP:您无权察看 2012-4-12 10:43:43 | [全部帖] [楼主帖] 楼主

自动统计收集作业在10g和11g中

适用于:

数据库企业版:版本10gr1到11gr2,文档信息适用于各种操作系统平台

目的:

提供一站式自动化信息收集在10g和11g中

问题和解答

收集什么类型统计信息?

写作业用来收集丢失的统计和陈旧的统计

在10g中如何禁用自动统计状态?

BEGIN
DBMS_SCHEDULER.DISABLE ('GATHER_STATS_JOB');
END;


如何开启作业在11g中?

执行exec sys.dbms_scheduler.enable (‘"SYS"."GATHER_STATS_JOB"‘);  开启作业

如何确定参数GATHER_STATS_JOB已经设置完成?

执行SELECT job_name, state FROM dba_scheduler_jobs WHERE job_name='GATHER_STATS_JOB';       查询语句看是否设置完成

注意:如果一个作业已经运行成功,但是又要被再次运行,那个作业的状态会被设置成“计划”

如果'end_date' or 'max_runs'达到,那么作业将会被标记成完成状态

用DBMS_SCHEDULER改变一个作业下次运行时间,你可以通过下面的代码实现

begin
dbms_scheduler.disable('gather_stats_job');
dbms_scheduler.set_attribute_null('gather_stats_job','schedule_name');
dbms_scheduler.set_attribute(
'gather_stats_job','repeat_interval','freq=minutelty;byminute=1,11,21,31,41,51;byhour=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22,23;bysecond=0');
dbms_scheduler.enable('gather_stats_job');
end;


在10g罪业的默认运行时间是什么?

夜晚运行时间在每周一到周五的晚上10点到早上6点

周末运行时间占用了整个周六和周日

GATHER_STATS_JOB可以填充CHAIN_CNT分析命令?

作业不能填充整个行的信息。你可以用自动管理段来对目标进行操作,她提供了对行的分析

在11g中有什么新的/修改在自动统计收集上

在11g中,GATHER_STATS_JOB作业不存在了,取而代之的并且包含在自动维护任务当中

在11g中,如何开启自动收集?

我们可以运行下面的语句,调用存储过程的DBMS_AUTO_TASK_ADMIN包中的ENABLE参数,例如

BEGIN
DBMS_AUTO_TASK_ADMIN.ENABLE(
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => NULL);
END;
/


在11g中如何关闭自动收集?

如果你想关闭实例,你可以调用DBMS_AUTO_TASK_ADMIN包中的DISABLE参数,例如

BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => NULL);
END;
/


如何检查自动化运行统计信息的运行状态?

select client_name, JOB_SCHEDULER_STATUS from DBA_AUTOTASK_CLIENT_JOB
where client_name=’ auto optimizer stats collection’;


检索的结果可能会有如下的状态

· DISABLED
· RETRY SCHEDULED
· SCHEDULED
· RUNNING
· COMPLETED
· BROKEN
· FAILED
· REMOTE
· SUCCEEDED
· CHAIN_STALLED


11g如何知道每个作业历史工作状态?

SELECT client_name, window_name, jobs_created, jobs_started, jobs_completed
FROM dba_autotask_client_history WHERE client_name like '%stats%';
CLIENT_NAME WINDOW_NAME JOBS JOBS JOBS
CREATED STARTED COMPLETED
------------------------------- ---------------- ------- -------- ----------
auto optimizer stats collection THURSDAY_WINDOW 1 1 1
auto optimizer stats collection SUNDAY_WINDOW 3 3 3
auto optimizer stats collection MONDAY_WINDOW 1 1 1
auto optimizer stats collection SATURDAY_WINDOW 2 2 2


如何手工执行自动统计信息工具在11g中?

在11g中,我们可以执行exec DBMS_AUTO_TASK_IMMEDIATE.GATHER_OPTIMIZER_STATS来手工收集统计信息

如何查看参数值来被作业调用?

DBMS_STATS.GET_PARAM (
pname IN VARCHAR2)
RETURN VARCHAR2;


如果有一些默认的参数在作业中,执行下卖弄的代码

DBMS_STATS.GET_PREFS (
pname IN VARCHAR2,
ownname IN VARCHAR2 DEFAULT NULL, tabname IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;


执行的结果可能会显示:

· AUTOSTATS_TARGET
· CASCADE
· DEGREE
· ESTIMATE_PERCENT
· METHOD_OPT
· NO_INVALIDATE
· GRANULARITY
· PUBLISH
· INCREMENTAL
· STALE_PERCENT


如何设置job的运行方式为下一次执行计划?

你可以执行下面的代码实现

BEGIN
DBMS_STATS.SET_GLOBAL_PREFS('STALE_PERCENT','5');
END;


SET_GLOBAL_PREFS使你能够改变默认的参数值通过存储过程DBMS_STATS.GATHER_*_STATS。没有一个存在的表对热河一个已经创建好的对象。SET_DATABASE_PREFS使你能够改变默认的参数通过存储过程DBMS_STATS.GATHER_*_STATS。你可以用系统包含的对象例如sys和system通过设置ADD_SYS参数为TRUE。这样将不会影响到以后创建的对象。

在11g中,什么是全局时间自动目标收集?

这些额外的参数控制对自动收集作业很有照顾。这些参数的值可以设置成all,oracle和auto。All意味着自动收集作业将会收集统计信息在数据库的所有对象。Oracle意味着自动收集作业将会只对数据库拥有的对象进行收集统计。Auto意味着数据库将自己决定哪些对象将被收集统计。目前auto和all模式相同




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论