一次归档报错的处理和分析

昨天在睡觉前接到了一条报警短信,本来已经疲倦的身轻如燕,但是看到报警,还是警觉了起来

ZABBIX-监控系统:
------------------------------------
报警内容: DG_issue
------------------------------------
报警级别: PROBLEM
------------------------------------
监控项目: dg_issue:2015-12-27
00:35:17.0Log Transport ServicesErrorARC0: Encountered disk I/O error
195022015-12-27 00:35:17.0Log Transport ServicesErrorARC0: I/O error 19502
archiving log 1 to
'/U01/app/oracle/oradata/test/archive/TEST/archivelog/2015_12_27/o1_mf_1_71969_c7xjg564_.arc'
------------------------------------
报警时间:2015.12.27-00:35:22

登录到主库,看到磁盘空间确实已经满了。使用普通的DB用户已经登录不了了。几个和磁盘空间相关的分区情况如下。当时/dev/sdb还剩下不到2G。
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda8             243G  103G  129G  45% /home
/dev/sdb              1.7T  1.6T   29G  99% /U01
对于这个问题,自己为了火速进行处理,就从/U01下面开始找文件进行清理,首要就是找归档文件,但是失望的是发现归档文件现在确实也不多了。而且目前的归档删除策略也是半个小时删除一次。截止到问题发生的时候,归档文件只有4个,而且也是半个小时内生成的,就算删除了也腾不出多少空间,更关键的是还需要到备库去查看是否归档已经接受。所以简单确认之后从主库删除了已经被备库应用的归档,省下来1个G多一点的空间,问题暂时解决了,就开始从其他目录查看是否还有更多的空间清理,但是发现除了一些历史的日志,其实可清理的空间也就不到1G.
所以这个时候问题很可能再次发生,需要马上进行处理。
从目前的情况来看/U01下的空间确实屈指可数,改进空间已经不大了。那么还有一个分区就是/home大概还有几百个G还能勉强应付一下。
这个时候一种方法就是把归档路径直接切换到/home分区下,但是这种变更很快会导致dg broker报警,为了减少给监控同学更多的解释和对系统本身的影响,我决定下临时把归档目录切过去。
比如今天是12月27日,就在/home/下生成一个软链接,比如我现在给自己几天的buffer时间,这部分的100多G的空间就先在这个目录下刷新,不会有太大的抖动。
[oracle@tlbb3dbidb arch]$ ll
lrwxrwxrwx 1 oracle oinstall 71 Dec 27 01:17 2015_12_27 -> /U01/app/oracle/oradata/test/archive/TEST/archivelog/2015_12_27
lrwxrwxrwx 1 oracle oinstall 71 Dec 27 01:21 2015_12_28 -> /U01/app/oracle/oradata/test/archive/TEST/archivelog/2015_12_28
lrwxrwxrwx 1 oracle oinstall 71 Dec 27 01:22 2015_12_29 -> /U01/app/oracle/oradata/test/archive/TEST/archivelog/2015_12_29
lrwxrwxrwx 1 oracle oinstall 71 Dec 27 01:22 2015_12_30 -> /U01/app/oracle/oradata/test/archive/TEST/archivelog/2015_12_30
当然这个问题为什么没有早点发现,其实很早就发现了,但是对于这个统计库的空间问题,阀值设置为90~95%,但是老是报警,而且又没有更多的空间就搁置下来了。所以先这样处理,自己也好协调跟进。
当然回过头来,这么多空间都消耗在哪里了。可以从下面的图形看出,其实最近的归档切换频率在凌晨会有一个小高峰,应该是批量的数据处理。之后基本趋于稳定。

所以对于这个问题的更深一层的分析,就是如果空间的消耗在逐渐增大,那么这个空间的消耗瓶颈在哪里。
其实想得到这个结果,也是分分钟就会有结果。直接从dba_segments里面查找即可。可以看到下面的几个表的空间占用极高。
segment_name               segment_type                             bytes_MB
LOGIN_LOG                      TABLE PARTITION                      103331
M_START_LOG                    TABLE PARTITION                      117842
MOL_TIME                       INDEX PARTITION                      120922
M_ONLINE_LOG                   TABLE PARTITION                      809661
这个M_ONLINE_LOG竟然占用了近800多个G,作为一个分区表而言数据量也着实惊人。
那么这部分数据是不是历史数据太多了呢,发现数据量也是在逐渐递增,而且都是近半年的数据。没有之前的历史数据了。
分区从4月份开始的数据增长情况如下:

看来最近的数据增长情况还在不断递增,所以这个问题还是有很多的确认之处,是否需要这么多的数据,如果确实需要,需要进一步考虑挂载新的分区,如果只是需要部分的数据,那么就需要考虑一个持久的数据清理方案。夜深了,看看手机,应很晚了。工作是干不完的,睡觉睡觉。

时间: 2024-09-24 19:40:48

一次归档报错的处理和分析的相关文章

oracle数据库报错ORA-00600[kjhn_post_ha_alert0-862]原因分析

数据库版本和平台信息 数据库版本为10.2.0.1版本,而且是32位的win 2003 sp2之上 ORACLE V10.2.0.1.0 - Production vsnsta=0 vsnsql=14 vsnxtr=3 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Windows Server 20

arm-ntpdate报错 意思说是在PC机上运行的不能再板子上运行

问题描述 ntpdate报错 意思说是在PC机上运行的不能再板子上运行 检查文件格式是 ARM格式的,而且如果说是C程序的话在板子上也是可以运行的 也就是说交叉编译没有错误 但是用ntpdate的时候 还是会报交叉编译的错误 求大神解答 解决方案 ARM 与 PC 交叉编译,虽然说是用 C 语言写的程序,但也不是说就完全不用修改在两个平台上都可以编译通过的.当然,如果编写代码时考虑过跨平台,可以修改一下交叉编译的宏就可以分别完成在两个平台上的编译. 编译报错,需要具体分析错误.这个需要错误信息和

oracle报错ORA-00353: log corruption due to GoldenGate extract process问题

某客户今天告诉我,一套核心库的备库的日志涨的很快,通过检查发现alert log不断的报错,如下所示:  代码如下 复制代码 Fri Dec 11 20:48:37 2015 Incomplete read from log member '/arch2/2_82548_864474703.dbf'. Trying next member. Incomplete read from log member '/arch2/2_82548_864474703.dbf'. Trying next me

【故障处理】 DBCA建库报错CRS-2566

[故障处理] DBCA建库报错CRS-2566 PRCR-1071 PRCR-1006 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① dbca静默建库 ② 将监听加入CRS中     Tips:        ① 若文章代码格式有错乱,推荐使用搜狗.QQ或360浏览器,也可以下载pdf格式的文档来查看,pdf文档下载地址:http://

TO_DATE函数索引报错ORA-01743

开发同学有一个需求,如下这张表: CREATE TABLE TBL_EFFDATE (ROUTID NUMBER(20,0) NOT NULL, EFFDTE CHAR(7), EDDATE CHAR(7), ICID CHAR(1), FREQ CHAR(7) ); 其中EFFDTE保存的是DDMONYY格式的日期,由于表之前未有归档机制,因此产生了许多垃圾数据,现在需要根据EFFDTE删除16年以前的所有数据,表的数据量在百万级,16年以前的占了绝大部分. 对于这需求来说,SQL的条件很明确

$.ajax传JSON数据到后台出现报错问题解决

 $.ajax传JSON数据到后台时总会出现一些错误,本文整理了一些注意事项,感兴趣的朋友可以参考下 代码如下: $.ajax({  url: "../Services.ashx",  type: "POST",  //data: { 'data': { 'typename': JSON.stringify(typename) }, 'operationType': '2' },  data: { 'data': typename, 'operationType':

jdk安装好后,控制台报错如下。

问题描述 jdk安装好后,控制台报错如下. -->java -version -->Error:opening registry key'SofrwareJavaSoftJava Runtime Environment' -->Error:could not find java.dll -->Error:could not find Java SE Runtime Environment 解决方案 环境变量配置好了吗?要不就是你装的JDK有问题. 解决方案二: 是不是没有访问注册表

web service-axis2处理webServices在was环境下报错,tomcat下正常

问题描述 axis2处理webServices在was环境下报错,tomcat下正常 关键代码如下 /** * 申诉请求 */ public static String appealRequest(String requestXML, ImageFileData[] file) { String result = ""; try { // 使用RPC方式调用WebService RPCServiceClient serviceClient = new RPCServiceClient(

Genymoation安装之后打开虚拟机报错求大神指点

问题描述 Genymoation安装之后打开虚拟机报错求大神指点 错误是这样的 求大神指点,谢谢 解决方案 多启动几次,如果还不行,就启动virtualbox,在里面看看对应的虚拟机是否正常可以启动,或者先关掉它