用logminer排查ORA-00257 问题

环境:
Redhat5.5
Oracle11g RAC
文件采用ASM管理

问题现象
    有客户反映传输数据时报ORA-00257错误





 

用PL/SQL登录数据库同样报错


以sysdba登录,检查flash recovery area的使用情况,可以看见archivelog已经很大了,达到96.62


SQL> select * fromV$FLASH_RECOVERY_AREA_USAGE;


FILE_TYPE   PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES


------------ ------------------------------------------- ---------------


CONTROLFILE                 .13                        0               1


ONLINELOG                  2.93                        0               3


ARCHIVELOG                96.62                       0              141


BACKUPPIECE                   0                         0               0


IMAGECOPY                      0                         0               0


FLASHBACKLOG                0                         0               0


 


 


SQL> show parameter recover;


 


NAME                                 TYPE        VALUE


----------------------------------------------- ------------------------------


db_recovery_file_dest                string      +FRA


db_recovery_file_dest_size           big integer 30000M


db_unrecoverable_scn_tracking        boolean     TRUE


recovery_parallelism                 integer     0


 


 


查看空间使用情况


 


[root@ora1 ~]# su - grid


[grid@ora1 ~]$ asmcmd


ASMCMD> ls


DATA/


FRA/


ORA_VOT/


ASMCMD> cd fra


ASMCMD> ls


CRMLS/


GPPLS/


HDQTLS/


MKT01/


PCMLS/


POS01/


ASMCMD> cd hdqtls  


ASMCMD> ls


ARCHIVELOG/


CONTROLFILE/


ONLINELOG/


ASMCMD> cd archivelog


ASMCMD> ls


2014_07_24/


ASMCMD> cd 2014_07_24


ASMCMD> ls


thread_1_seq_1379.533.853785231


thread_1_seq_1380.543.853785267


thread_1_seq_1381.739.853785307


thread_1_seq_1382.791.853785345


thread_1_seq_1383.787.853785381


thread_1_seq_1384.853.853785423


thread_1_seq_1385.826.853785461


...此处省略若干


ASMCMD> du


Used_MB     Mirror_used_MB


   29893               29893


 


经查,只有当天的归档日志,并且达到了近30G(仅12小时产生的量)


 


提出问题


 


服务器每天备份脚本都会自动rman备份归档日志,并自动清除归档日志文件,而且客户的交易量较小,按照正常情况下,数据库不可能一天产生这么大的归档日志量。


 


于是采用logminer分析日志


使用方法:


-- 1.指定要分析的日志文件


execsys.dbms_logmnr.add_logfile(logfilename=>'+fra/hdqtls/archivelog/2014_07_24/thread_2_seq_1598.629.853786167',options=> dbms_logmnr.new);


 


-- 2.使用本地的在线数据字典分析归档日志


exec sys.dbms_logmnr.start_logmnr(options=> sys.dbms_logmnr.dict_from_online_catalog);


 


-- 3.查询分析出来的归档日志内容,例如统计最大修改量的Schema


select seg_owner,count(*) fromv$logmnr_contents group by seg_owner;


 


-- 4.增加别的日志文件


exec sys.dbms_logmnr.add_logfile(logfilename=>+fra/hdqtls/archivelog/2014_07_24/ thread_1_seq_1385.826.853785461');


 


-- 5.结束分析归档日志


exec sys.dbms_logmnr.end_logmnr;


 


具体过程:


 


SQL>exec sys.dbms_logmnr.add_logfile(logfilename=>'+fra/hdqtls/archivelog/2014_07_24/thread_2_seq_1598.629.853786167',options=> dbms_logmnr.new);


 


PL/SQL procedure successfully completed

SQL> execsys.dbms_logmnr.start_logmnr(options => sys.dbms_logmnr.dict_from_online_catalog);

PL/SQL procedure successfully completed

SQL> select seg_owner,count(*) fromv$logmnr_contents group by seg_owner;

SEG_OWNER                          COUNT(*)

-------------------------------- ----------


                                                  189819


DBUSRMKT                              50948


 SQL> column SQL_REDO format a2000;


SQL> select SQL_REDO fromv$logmnr_contents ;

SQL_REDO

--------------------------------------------------------------------------------


delete from"DBUSRMKT"."SALEGOODSLIST" where "SGLDATE" =TO_DATE('24-JUL-14', 'D


delete from"DBUSRMKT"."SALEGOODSLIST" where "SGLDATE" =TO_DATE('24-JUL-14', 'D


delete from "DBUSRMKT"."SALEGOODSLIST"where "SGLDATE" = TO_DATE('24-JUL-14', 'D



结论:


从上面的结果来看日志主要由dbusrmkt用户产生(空白的为ORACLE内部调度)


从执行的内容来看有大量的对表SALEGOODSLIST的删除插入操作,最后定位到一个通讯的JOB有个where条件没有指定好,会删除当天客户某商品所有的交易记录再重新插入。


修改后备份归档日志并清除后解决问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值