统计信息收集不完的解决

早上收到邮件,某库的一节点报错ora-7445。


alert告警:
Sat Nov 21 03:30:54 2015
ARC2: Completed archiving thread 1 sequence 20859 (8430321499688-8430321499835) (c2db71)
Sat Nov 21 06:00:01 2015
Errors in file /app/oracle/admin/c2db7/bdump/c2db71_j003_9243.trc:
ORA-07445: exception encountered: core dump [pfrgnc()+29] [SIGSEGV] [Address not mapped to object] [0x0000000B0] [] []
Sat Nov 21 06:00:04 2015
Trace dumping is performing id=[cdmp_20151121060004]




在MOS上查询,符合文档描述:
Bug 12368527 - DBMS_STATS_JOB may hit ORA-7445[pfrgnc] (文档 ID 12368527.8)


在10.2.0.4版本数据库上进行统计信息收集,job的从属进程可能在执行dbms_stats_job时触发ora-7445[pfrgnc]。
该bug在11.1.0.6版本中解决。


该bug本身是由于统计信息收集的job在维护窗口时间内没有执行完成。
解决的方法是增大维护窗口的时间范围,或者使dbms_stats_job的执行更快。




查看当前维护窗口:
sys@c2db71> select ds.last_start_date,ds.last_run_duration
  2  from dba_scheduler_jobs ds
  3  where job_name='GATHER_STATS_JOB';


LAST_START_DATE                                                             LAST_RUN_DURATION
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
20-NOV-15 10.00.00.600794 PM +08:00                                         +000000000 08:01:00.300930




sys@c2db71> select log_date,status,additional_info
  2  from dba_scheduler_job_log
  3  where job_name='GATHER_STATS_JOB'
  4  order by log_id;


LOG_DATE                               STATUS       ADDITIONAL_INFO
-------------------------------------- ------------ --------------------------------------------------------------------------------
24-OCT-15 06.00.00.721145 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
27-OCT-15 06.00.00.864309 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
28-OCT-15 06.00.00.933990 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
29-OCT-15 06.00.01.074298 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
30-OCT-15 06.00.00.173108 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
31-OCT-15 06.00.00.199287 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
03-NOV-15 06.00.00.374654 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
04-NOV-15 06.00.00.439645 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
05-NOV-15 06.00.00.513895 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
06-NOV-15 06.00.00.500967 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
07-NOV-15 06.00.00.622089 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
10-NOV-15 06.00.00.700254 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
13-NOV-15 06.00.01.175444 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
14-NOV-15 06.00.00.410782 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
11-NOV-15 06.00.00.822476 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
12-NOV-15 06.00.00.925706 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
17-NOV-15 06.00.00.280864 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
18-NOV-15 06.00.00.327630 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
19-NOV-15 06.00.00.502065 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
20-NOV-15 06.00.00.510377 AM +08:00    STOPPED      REASON="Stop job called because associated window was closed"
21-NOV-15 06.01.00.902501 AM +08:00    STOPPED      REASON="Job slave process was terminated"


21 rows selected.


sys@c2db71> col repeat_interval for a50                                                                                                                            
sys@c2db71> select window_name,repeat_interval,duration,enabled                                                                                                    
  2   from dba_scheduler_windows;                                                                                                                                  
                                                                                                                                                                   
WINDOW_NAME                    REPEAT_INTERVAL                                    DURATION                                                                    ENABL
------------------------------ -------------------------------------------------- --------------------------------------------------------------------------- -----
WEEKNIGHT_WINDOW               freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;bym +000 08:00:00                                                               TRUE 
                               inute=0; bysecond=0                                                                                                                 
                                                                                                                                                                   
WEEKEND_WINDOW                 freq=daily;byday=SAT;byhour=0;byminute=0;bysecond= +000 05:00:00                                                               TRUE 
                               0                                                                                                                                   
                               
                               
每个工作日晚上十点开始,持续八小时,到早上六点结束
每个周六零点开始,持续五小时


查看三个月没有收集统计信息的表:
sys@db1_terry> select table_name,last_analyzed,num_rows from dba_tables
  2  where owner='TERRY'
  3  and last_analyzed<=trunc(sysdate-90)
  4  order by num_rows desc;


TABLE_NAME                     LAST_ANALYZED         NUM_ROWS
------------------------------ ------------------- ----------
PGW_ORDERINFO                  2014-09-20 05:50:47  237054847
PGW_PUFR_ORDERINFO             2014-12-10 02:50:53  224347096
PGW_BANKLOG                    2013-04-25 23:15:20  148955033
PGW_PRE_DEPOSIT                2013-04-26 05:31:23   25396472
PGW_ORDER_CHECK                2013-04-25 22:34:51    9959539
PGW_LOCKCARDINFO               2013-04-27 00:13:38    7765113
PGW_ORDER_CHECK_DETAIL         2013-04-25 22:45:14    7650236
PGW_CPFAILD_COLLECTION         2013-04-25 22:05:03    4617426
NAGIOS_ALERT                   2013-04-25 22:00:54    1140808
MAN_CHANNELSER_DAYSTAT         2013-04-25 22:19:28    1062011


……


202 rows selected.




对比一个其他服务器的配置:
sys@db2_terry> select window_name,repeat_interval,duration,enabled                                                                                                    
  2  from dba_scheduler_windows; 


WINDOW_NAME
------------------------------
REPEAT_INTERVAL
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DURATION                                                                    ENABL
--------------------------------------------------------------------------- -----
MONDAY_WINDOW
freq=daily;byday=MON;byhour=22;byminute=0; bysecond=0
+000 04:00:00                                                               TRUE


TUESDAY_WINDOW
freq=daily;byday=TUE;byhour=22;byminute=0; bysecond=0
+000 04:00:00                                                               TRUE


WEDNESDAY_WINDOW
freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0
+000 04:00:00                                                               TRUE


THURSDAY_WINDOW
freq=daily;byday=THU;byhour=22;byminute=0; bysecond=0
+000 04:00:00                                                               TRUE


FRIDAY_WINDOW
freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0
+000 04:00:00                                                               TRUE


SATURDAY_WINDOW
freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0
+000 20:00:00                                                               TRUE


SUNDAY_WINDOW
freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0
+000 20:00:00                                                               TRUE


WEEKNIGHT_WINDOW
freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;byminute=0; bysecond=0
+000 08:00:00                                                               FALSE


WEEKEND_WINDOW
freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0
+002 00:00:00                                                               FALSE




9 rows selected.


当前启用的窗口是前7个,也就是说周一到周五的维护窗口时长为4小时,周六、周日为20小时。


查看该服务器周末的负载,发现几乎没有业务。因此可以将WEEKEND_WINDOW的duration改为40小时。




修改方法:
BEGIN
dbms_scheduler.disable(name => 'WEEKEND_WINDOW');
dbms_scheduler.set_attribute(name => 'WEEKEND_WINDOW',attribute => 'DURATION',value => numtodsinterval(2, 'day'));
dbms_scheduler.enable(name => 'WEEKEND_WINDOW');
END;
/




修改后确认:
sys@db1_terry> col repeat_interval for a50                                                                                                                            
sys@db1_terry> select window_name,repeat_interval,duration,enabled                                                                                                    
  2  from dba_scheduler_windows;  


WINDOW_NAME                    REPEAT_INTERVAL                                    DURATION                                                                    ENABL
------------------------------ -------------------------------------------------- --------------------------------------------------------------------------- -----
WEEKNIGHT_WINDOW               freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;bym +000 08:00:00                                                               TRUE
                               inute=0; bysecond=0


WEEKEND_WINDOW                 freq=daily;byday=SAT;byhour=0;byminute=0;bysecond= +002 00:00:00                                                               TRUE
                               0


查看负载发现统计信息收集时,大量空闲的系统资源没有利用。
可以将大表的统计信息收集放到存储过程里面定期执行,并分配合理地收集粒度等参数。
此外,还可以考虑将变化量比较大,但占用空间、数据特性变化不大的表锁定统计信息,使查询所涉及的执行计划固定下来。


=========================================================================================================


关于统计信息收集相关的视图包括:
ALL_IND_STATISTICS Optimizer statistics for all indexes on tables accessible to the user
ALL_PART_COL_STATISTICS
ALL_REPRESOLUTION_STATISTICS Statistics for conflict resolutions for replicated tables which are accessible to the user
ALL_SUBPART_COL_STATISTICS
ALL_TAB_COL_STATISTICS Columns of user's tables, views and clusters
ALL_TAB_STATISTICS Optimizer statistics for all tables accessible to the user


对应有DBA_族的视图。
比较常用的是ALL_(DBA_)TAB_STATISTICS:




查看哪些表的统计信息过旧了:
select * from dba_tab_statistics
where owner='TERRY'
and stale_stats='YES';  --表示统计信息过期了,需要收集


查看哪些表的统计信息被锁住了:
select * from dba_tab_statistics
where owner='TERRY'
and stattype_locked is not null; 


通过user_stats、global_stats判断统计信息是否是用户指定的、是否将分区合并统计。

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

转载于:http://blog.itpub.net/26451536/viewspace-1844518/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息统计功能是指通过收集、整理、分析和展示数据,得出有关某一特定主题或领域的信息的能力。 信息统计功能具有以下特点: 1. 数据收集:信息统计功能可以通过各种途径收集必要的数据,包括问卷调查、观察、实验和采访等。这些数据可以是定量数据(数值数据)和定性数据(描述性数据)。 2. 数据整理:信息统计功能需要对收集到的数据进行整理和清理,识别并纠正潜在的错误或不一致的数据。 3. 数据分析:信息统计功能可以通过使用统计学方法和技巧,对数据进行描述性统计、推断性统计和关联性统计等分析,从中发现数据中的模式、趋势和关联性。 4. 信息展示:信息统计功能可以通过图表、图形、表格和报告等方式,将分析结果直观地展示出来,使得用户可以更容易地理解和解释数据。 信息统计功能的应用范围广泛,可以在各个领域中发挥作用,例如市场研究、社会调查、教育评估、医疗统计和财务报表等。它能够帮助用户快速准确地了解现状、预测趋势、分析问题,并为决策提供科学依据。 同时,信息统计功能在现代社会中也面临一些挑战。例如,数据的质量和准确性、数据隐私和安全、数据获取和存储等问题都需要引起重视和解决。 总之,信息统计功能是一种重要的工具和技术,可以帮助人们更好地理解和应用数据,并为决策提供有力支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值