ITPub博客

首页 > 数据库 > Oracle > ORA-00254/ORA-15173 Archive_log Directory On Asm Being Deleted

ORA-00254/ORA-15173 Archive_log Directory On Asm Being Deleted

Oracle 作者:q418441117 时间:2016-11-17 13:36:55 0 删除 编辑

最近的RAC环境中遭遇ORA-00254,ORA-15173,即无法进行归档。通常情况下归档失败我们考虑更多的是归档路径的不可达,或归档所在的磁盘空间不足造成的。在使用 ASM 存放归档日志的情形下,对于已经配置好且成功归档的数据库也提示路径不可达?看看到底是怎么一回事。

[sql] view plain copy
 print?
  1. 1、错误信息  
  2. Thu Nov 29 10:11:22 2012  
  3. Errors in file /u01/oracle/admin/SY5221/bdump/sy5221a_arc0_12650.trc:  
  4. ORA-16038: log 3 sequence# 2876 cannot be archived  
  5. ORA-00254: error in archive control string ''  
  6. ORA-00312: online log 3 thread 1: '+DG1/sy5221/onlinelog/log3asy5221.log'  
  7. ORA-00312: online log 3 thread 1: '+DG1/sy5221/onlinelog/log3bsy5221.log'  
  8. ORA-15173: entry 'archivelog' does not exist in directory 'sy5221'  
  9.   
  10. 2、演示环境  
  11. SQL> select * from v$version where rownum<2;  
  12.   
  13. BANNER  
  14. ----------------------------------------------------------------  
  15. Oracle Database 10g Release 10.2.0.3.0 - 64bit Production  
  16.   
  17. SQL> select inst_id,instance_name from gv$instance; -->两节点RAC  
  18.   
  19.    INST_ID INSTANCE_NAME  
  20. ---------- ----------------  
  21.          1 GOBO4A  
  22.          2 GOBO4B  
  23.   
  24. SQL> show parameter log_archive_dest_1  
  25.   
  26. NAME                                 TYPE        VALUE  
  27. ------------------------------------ ----------- ------------------------------  
  28. log_archive_dest_1                   string      LOCATION=+REV/GOBO4/archivelog  
  29.   
  30. 3、模拟类似情形           
  31. ASMCMD> pwd  
  32. +REV/GOBO4/ARCHIVELOG  
  33. ASMCMD> ls       --#当前路径下存在一个文件夹和一个归档日志  
  34. 2012_11_30/  
  35. arch_795194241_1_296.arc  
  36. ASMCMD> rm -rf 2012_11_30/  --#删除归档日志文件夹,此时对应的归档日志arch_795194241_1_296.arc也被删除  
  37. ASMCMD> ls                  --#再次查看时尽然提示目录GOBO4不存在,汗  
  38. asmcmd: entry 'GOBO4' does not exist in directory '+REV/'    
  39.   
  40. SQL> alter system archive log current;   --#尝试切换日志,已经无法归档  
  41. alter system archive log current  
  42. *  
  43. ERROR at line 1:  
  44. ORA-16014: log 6 sequence# 151 not archived, no available destinations  
  45. ORA-00312: online log 6 thread 2: '+DG1/gobo4/onlinelog/group_6.256.795194043'  
  46.   
  47. oracle@bo2dbp:/u01/database/GOBO4/bdump> tail -20 alert_GOBO4A.log   --#查看告警日志,  
  48. Fri Nov 30 16:08:22 2012                                      --#ORA-15173: entry 'gobo4' does not exist in directory '/'  
  49. Errors in file /u01/database/GOBO4/bdump/gobo4a_arc0_5419.trc:  
  50. ORA-16038: log 1 sequence# 297 cannot be archived  
  51. ORA-00254: error in archive control string ''  
  52. ORA-00312: online log 1 thread 1: '+DG1/gobo4/onlinelog/log1agobo4.log'  
  53. ORA-00312: online log 1 thread 1: '+DG1/gobo4/onlinelog/log1bgobo4.log'  
  54. ORA-15173: entry 'gobo4' does not exist in directory '/'  
  55. Fri Nov 30 16:08:25 2012  
  56. ARCH: Archival stopped, error occurred. Will continue retrying  
  57. Fri Nov 30 16:08:25 2012  
  58. ORACLE Instance GOBO4A - Archival Error  
  59. Fri Nov 30 16:08:25 2012  
  60. ORA-16014: log 1 sequence# 297 not archived, no available destinations  
  61. ORA-00312: online log 1 thread 1: '+DG1/gobo4/onlinelog/log1agobo4.log'  
  62. ORA-00312: online log 1 thread 1: '+DG1/gobo4/onlinelog/log1bgobo4.log'  
  63. Fri Nov 30 16:08:25 2012  
  64. Errors in file /u01/database/GOBO4/bdump/gobo4a_arc1_5421.trc:  
  65. ORA-16014: log 1 sequence# 297 not archived, no available destinations  
  66. ORA-00312: online log 1 thread 1: '+DG1/gobo4/onlinelog/log1agobo4.log'  
  67. ORA-00312: online log 1 thread 1: '+DG1/gobo4/onlinelog/log1bgobo4.log'  
  68.   
  69. 回到原来的asmcmd命令符提示窗口  
  70. ASMCMD> pwd  
  71. +REV/GOBO4/ARCHIVELOG  
  72. ASMCMD> exit      --#退出asmcmd   
  73. oracle@bo2dbp:~> export ORACLE_SID=+ASM1  
  74. oracle@bo2dbp:~> asmcmd      --#再次登陆到asmcmd,果然GOBO4以其下的archivelog文件都不存在了,这下子玩大了,哈哈  
  75. ASMCMD> cd +REV/GOBO4        --#仅仅删除归档日志,结果连同上级目录都给干翻了。  
  76. asmcmd: entry 'GOBO4' does not exist in directory '+REV/'  
  77.   
  78. 4、解决问题  
  79. 既然目录丢失,那就先创建再次尝试归档  
  80. ASMCMD> cd REV  
  81. ASMCMD> ls  
  82. GOBO1/  
  83. ORA10G/  
  84. ASMCMD> mkdir GOBO4  
  85. ASMCMD> cd GOBO4  
  86. ASMCMD> mkdir archivelog  
  87. ASMCMD> pwd  
  88. +REV/GOBO4/archivelog  
  89. ASMCMD> ls  
  90.   
  91. 回到sqlplus窗口,依然提示归档失败  
  92. SQL> alter system archive log current;  
  93. alter system archive log current  
  94. *  
  95. ERROR at line 1:  
  96. ORA-16014: log 6 sequence# 151 not archived, no available destinations  
  97. ORA-00312: online log 6 thread 2: '+DG1/gobo4/onlinelog/group_6.256.795194043'  
  98.   
  99. SQL> startup force;   --#直接重启当前节点  
  100. ORACLE instance started.  
  101.   
  102. Total System Global Area  536870912 bytes  
  103. Fixed Size                  2074080 bytes  
  104. Variable Size             432015904 bytes  
  105. Database Buffers           96468992 bytes  
  106. Redo Buffers                6311936 bytes  
  107. Database mounted.  
  108. Database opened.  
  109. SQL> alter system archive log current;   --#再次归档成功  
  110.   
  111. System altered.  
  112.   
  113. #Author : Robinson  
  114. #Blog : http://blog.csdn.net/robinson_0612  
  115.   
  116. ASMCMD> ls  
  117. 2012_11_30/  
  118. arch_795194241_1_297.arc  
  119. arch_795194241_1_298.arc  
  120. arch_795194241_1_299.arc  
  121. arch_795194241_1_300.arc  
  122. arch_795194241_2_151.arc  
  123. arch_795194241_2_152.arc  
  124. arch_795194241_2_153.arc  
  125.   
  126. 5、Oracle Bug  
  127. metalink上,ID 343784.1给出了关于该问题的描述,同时也给出了该错误的地bug号与解决方法  
  128.   
  129. Archive_log Directory On Asm Being Deleted By Rman Archivelog Backup [ID 343784.1]  
  130. Bug 4431215 "BACKUP ARCHIVELOG ALL DELETE INPUT" FROM RMAN REMOVES ASM DIRECTORY  
  131.   
  132. To implement the solution, please execute either of the following steps:  
  133.   
  134. 1. Change the log_archive_dest to NOT include the SID in the ASM directory name.  
  135. OR  
  136. 2. Create a subdirectory under the ARCHIVELOG directory. As RMAN will not delete a directory which contains files   
  137.   (or directories), having an empty subdirectory will prevent RMAN from deleting.    
  138.   
  139. 也就是说,如果archivelog下一旦为空的情形下,不论是手动删除,还是使用RMAN,Oracle会自动删除该目录。  
  140. 文中开头部分描述的错误信息entry 'archivelog' does not exist in directory 'sy5221'即是如此。  
  141. 后来的演示环境中,除了删除archivelog外,连同上级目录GOBO4目录也删除了,因为GOBO4下没有任何文件或非空目录  
  142. 针对这种情形,Oracle建议修改归档路径,且路径中的文件夹不能包含ORACLE_SID,其次也可以通过在归档路径最底层创建一个非空目录。  
  143.   
  144. 我的解决方式是备份一个spfile到archivelog下,哈哈。  
  145. SQL> create pfile='/u01/oracle/db/dbs/initGOBO4A.ora.bak' from spfile;  
  146.   
  147. File created.  
  148.   
  149. SQL> create spfile='+REV/GOBO4/archivelog/spfileGOBO4.bak' from  
  150.   2  pfile='/u01/oracle/db/dbs/initGOBO4A.ora.bak';  
  151.   
  152. File created.  
  153.   
  154. RMAN下,试试delete noprompt archivelog all,(不要在生产环境这么干,出了事偶不负责任阿,嘎嘎。。)  

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

请登录后发表评论 登录
全部评论

注册时间:2012-09-11

  • 博文量
    203
  • 访问量
    471909