加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

静默错误:Oracle数据库是怎样应对和处理赏罚的 ?

发布时间:2018-08-16 08:28:56 所属栏目:编程 来源:盖国强
导读:技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战 这两天,关于腾讯云『由于静默错误,把创业公司的数据彻底搞丢了』的变乱已经传遍了整个互联网,激发了普及的热媾和接头。 终极妨碍回放 腾讯云已经于8月7日发布了最近这次事情的根

数据由Oracle写入,并在达到磁盘之前被操纵体系或硬件组件过问粉碎。这些组件也许包罗操纵体系,文件体系,卷打点器,装备驱动措施,主机总线适配器和SAN互换布局。固然Oracle可以在读取数据时检测到破坏,但Oracle也许会在几天或几个月后才读取数据。到当时,用于规复数据的精采备份也许不再可用。

将块写入不正确的位置

Oracle向磁盘上的特定位置发出写入。不知何以,操纵体系或存储体系将块写入错误的位置。这也许导致两个破坏:粉碎磁盘上的有用数据并丢失已提交事宜中的数据。

Oracle以外的措施对Oracle数据的错误写入

Oracle数据文件也许被非Oracle应用措施包围。非Oracle历程或措施也许会心外包围Oracle数据文件的内容。这也许是因为应用措施软件,操纵体系中的错误或工钱错误(譬喻,不测地将正常操纵体系文件复制到Oracle数据文件上)。

破坏的第三方备份

将备份复制到磁带时也许会产生数据破坏。这种范例的破坏出格有害,由于备份用于修复数据破坏。因此,假如备份也已破坏,则无律例复任何丢失的数据。对付第三方备份尤其云云(个中磁盘存储单位直接将数据复制到备份装备而不通过Oracle。)

也许的HARD搜查

在实现Oracle HARD成果的存储体系中,Oracle处事器可以通过大量搜查来验证Oracle块布局,块完备性和块位置。假如块在写入时未通过验证,则存储器拒绝写入,从而掩护数据的完备性。在体系打点操纵时代也可以选择性地禁用HARD验证搜查,这也许会暂且使数据处于纷歧致状态。

关于这里描写的一种气象,让我想到在2010年我辅佐用户举办规复的一个案例,其时记录在博客上,原文:

http://www.eygle.com/archives/2010/11/recover_archivelog_corruption.html

引用一下,用此刻的界说就应该属于『静默错误』的领域:

最近在紧张妨碍处理赏罚时,辅佐用户规复数据库碰着了一则有数的归档日记破坏案例,在这里和各人分享一下,看看是否有人碰着过相同的题目。

在举办归档recover时,数据库报错,提醒归档日记破坏:

  1. ***  
  2. Corrupt block seq: 37288 blocknum=1.  
  3. Bad header found during deleting archived log  
  4. Data in bad block - seq:810559520. bno:170473264. time:707406346  
  5. beg:21280 cks:21061  
  6. calculated check value: 9226  
  7. Reread of seq=37288, blocknum=1, file=/ARCH/arch_1_37288_632509987.dbf, found same corrupt data  
  8. Reread of seq=37288, blocknum=1, file=/ARCH/arch_1_37288_632509987.dbf, found same corrupt data  
  9. Reread of seq=37288, blocknum=1, file=/ARCH/arch_1_37288_632509987.dbf, found same corrupt data  
  10. Reread of seq=37288, blocknum=1, file=/ARCH/arch_1_37288_632509987.dbf, found same corrupt data  
  11. Reread of seq=37288, blocknum=1, file=/ARCH/arch_1_37288_632509987.dbf, found same corrupt data  
  12. *** 

信息较量具体,说37288号归档日记Header破坏,无法读取数据。

提一个小题目:假如你碰着了这样的错误?会奈何思索?

假如这个归档日记破坏了,着实我们如故有步伐跳已往,继承实行规复其改日记,可是客户数据重要,不能容忍纷歧致性,这时辰就只能放弃部门数据,由前台从头提交数据了。这在营业上可以实现,也就不是大题目了。

好了,题目是为什么日记会破坏?是怎样破坏的?

我起主要做的就是,看看日记文件的内容,通过最简朴的呼吁将日记文件中的内容输出出来:

  1. strings arch_1_37288_632509987.dbf > log.txt 

然后搜查天生的这个日记文件,我们就发明白题目。

在这个归档日记文件中,被写入了大量的跟踪文件内容,个中开头部门就是一个跟踪文件的所有信息。

这是一种我从来没有碰着过的征象,也就是说,当操纵体系在写出跟踪文件时,错误的包围掉了已经存在的归档文件,最后导致归档日记破坏,很是奇奥,从所未见。

最后我的判定是,这个妨碍该当是操纵体系在写出时呈现了题目,存在文件的空间如故被以为是可写的,这样就导致了写斗嘴,呈现这类题目,该当当即搜查硬件,看看是否是硬件题目导致了云云严峻的非常(日记做了掩码脱敏)。

  1. Dump file /ADMIN/bdump/erp_p007_19216.trc  
  2. Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production  
  3. With the Partitioning, OLAP and Data Mining options  
  4. ORACLE_HOME = /DBMS/erp/erpdb/10g  
  5. Linux  
  6. eygle.com  
  7. 2.6.9-34.ELhugemem  
  8. #1 SMP Fri Feb 24 17:04:34 EST 2006  
  9. i686  
  10. Instance name: erp  
  11. Redo thread mounted by this instance: 1  
  12. Oracle process number: 22  
  13. Unix process pid: 19216, image: oracle@eygle.com (P007)  
  14. *** SERVICE NAME:() 2010-11-10 10:37:26.247  
  15. *** SESSION ID:(2184.1) 2010-11-10 10:37:26.247  
  16. *** 2010-11-10 10:37:26.247  
  17. KCRP: blocks claimed = 61, eliminated = 0  
  18. ----- Recovery Hash Table Statistics ---------  
  19. Hash table buckets = 32768  
  20. Longest hash chain = 1  
  21. Average hash chain = 61/61 = 1.0  
  22. Max compares per lookup = 0  
  23. Avg compares per lookup = 0/61 = 0.0  
  24. ----------------------------------------------  
  25. ----- Recovery Hash Table Statistics ---------  
  26. Hash table buckets = 32768  
  27. Longest hash chain = 1  
  28. Average hash chain = 61/61 = 1.0  
  29. Max compares per lookup = 1  
  30. Avg compares per lookup = 1426/1426 = 1.0  
  31. ----------------------------------------------  
  32. GPAYMENTdxn  
  33. AP_CHECKS  
  34. Q(xn  
  35. .1=N  
  36. Gxn  
  37. .1=N  
  38. ^0e   
  39. ^0e!  
  40. ^0e"  
  41. ^0e#  
  42. ^0e$  
  43. ^0e%  
  44. ^0e&  
  45. ^0e'  
  46. ^0e(  
  47. ^0e)  
  48. ^0e*  
  49. ^0e+  
  50. ^0e+  
  51. ^0e&  
  52. ^ij1  
  53. R0:b  
  54. Q(xn  
  55. PaymentsN  
  56. a'VND  
  57. Userxn  
  58. AP_INVOICE_PAYMENTS  
  59. 105273  
  60. 5406105305-20101020-003  
  61. 3001CASH CLEARING  
  62. CREATED  
  63. Dump file /ADMIN/bdump/erp_p002_19206.trc  
  64. Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production  
  65. With the Partitioning, OLAP and Data Mining options  
  66. ORACLE_HOME = /DBMS/erp/erpdb/10g  
  67. Linux  
  68. eygle.com  
  69. 2.6.9-34.ELhugemem  
  70. #1 SMP Fri Feb 24 17:04:34 EST 2006  
  71. i686  
  72. Instance name: erp  
  73. Redo thread mounted by this instance: 1  
  74. Oracle process number: 17  
  75. Unix process pid: 19206, image: oracle@eygle.com (P002)  
  76. *** SERVICE NAME:() 2010-11-10 10:37:26.263  
  77. *** SESSION ID:(2187.1) 2010-11-10 10:37:26.263  
  78. *** 2010-11-10 10:37:26.263  
  79. KCRP: blocks claimed = 84, eliminated = 0  
  80. ----- Recovery Hash Table Statistics ---------  
  81. Hash table buckets = 32768  
  82. Longest hash chain = 1 
  83. Average hash chain = 84/84 = 1.0  
  84. Max compares per lookup = 0  
  85. Avg compares per lookup = 0/84 = 0.0  
  86. ----------------------------------------------  
  87. ----- Recovery Hash Table Statistics --------  
  88. Hash table buckets = 32768  
  89. Longest hash chain = 1  
  90. Average hash chain = 84/84 = 1.0  
  91. Max compares per lookup = 1  
  92. Avg compares per lookup = 880/880 = 1.0  
  93. ----------------------------------------------  
  94. ^A&A  
  95. ^1b#  
  96. ^1b!  
  97. ^1b"  
  98. ^0e'  
  99. ^Mj8  
  100. ^;&3  
  101. 2010PS_Legal Entity  
  102. ^6&L  
  103. Eoi_VND  
  104. Quick Payment: ID=47708 

云云少见的案例,在此与各人分享。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读