oracle 归档日志满了如何处理

转自:http://blog.csdn.net/linghe301/article/details/9291273

 

今天在进行Oracle相关测试,因为Windows自动更新,自己重启机器了,结果重启完毕之后,我的oracle就无法正常启动了

报ora-03113错误。

[csharp]  view plain copy print ?
 
  1. ORA-03113: 通信通道的文件结尾  
  2. 进程 ID: 8636  
  3. 会话 ID: 192 序列号: 9  

 

 

去D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log里面查看报错信息,发现以下相关信息

[csharp]  view plain copy print ?
 
  1. Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_9532.trc:  
  2. ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用 100.00%, 尚有 0 字节可用。  
  3. ************************************************************************  
  4. You have following choices to free up space from recovery area:  
  5. 1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,  
  6.    then consider changing RMAN ARCHIVELOG DELETION POLICY.  
  7. 2. Back up files to tertiary device such as tape using RMAN  
  8.    BACKUP RECOVERY AREA command.  
  9. 3. Add disk space and increase db_recovery_file_dest_size parameter to  
  10.    reflect the new space.  
  11. 4. Delete unnecessary files using RMAN DELETE command. If an operating  
  12.    system command was used to delete files, then use RMAN CROSSCHECK and  
  13.    DELETE EXPIRED commands.  
  14. ************************************************************************  
  15. Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_9532.trc:  
  16. ORA-19809: 超出了恢复文件数的限制  
  17. ORA-19804: 无法回收 47112704 字节磁盘空间 (从 4102029312 限制中)  
  18. ARCH: Error 19809 Creating archive log file to 'D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_171_%U_.ARC'  
  19. Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_9532.trc:  
  20. ORA-16038: 日志 3 sequence# 171 无法归档  
  21. ORA-19809: 超出了恢复文件数的限制  
  22. ORA-00312: 联机日志 3 线程 1: 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG'  

这个信息以及很清楚了,说明我的归档日志满了

 

那么怎么才能验证我的归档日志满了呢?

首先我看一下我的DB_RECOVERY_FILE_DEST_SIZE值有多大

[csharp]  view plain copy print ?
 
  1. C:\Users\Administrator>sqlplus /nolog  
  2.   
  3. SQL*Plus: Release 11.2.0.1.0 Production on 星期三 7月 10 15:33:36 2013  
  4.   
  5. Copyright (c) 1982, 2010, Oracle.  All rights reserved.  
  6.   
  7. SQL> conn / as sysdba  
  8. 已连接。  
  9. SQL> startup mount;  
  10. ORACLE 例程已经启动。  
  11.   
  12. Total System Global Area 5110898688 bytes  
  13. Fixed Size                  2184592 bytes  
  14. Variable Size            3355445872 bytes  
  15. Database Buffers         1744830464 bytes  
  16. Redo Buffers                8437760 bytes  
  17. 数据库装载完毕。  
  18. SQL> show parameter db_recovery_file_dest_size;  
  19.   
  20. NAME                                 TYPE        VALUE  
  21. ------------------------------------ ----------- -----  
  22. db_recovery_file_dest_size           big integer 3912M  

但是我实际的归档日志文件

 

db_recovery_file_dest    = "D:\app\Administrator\flash_recovery_area"
  db_recovery_file_dest_size= 3912M

D:\app\Administrator\flash_recovery_area\orcl\ARCHIVELOG路径下有3.8GB已经达到临界值,也就是错误上面所述。

 

问题已经找到,我怎么才能进行修复呢。其实报错日志里面的信息以及写的很清楚了使用RMAN登录

因为归档日志很多,我紧紧截取了少部分

[csharp]  view plain copy print ?
 
  1. C:\Users\Administrator>rman  target /  
  2.   
  3. 恢复管理器: Release 11.2.0.1.0 - Production on 星期三 7月 10 14:58:42 2013  
  4.   
  5. Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.  
  6.   
  7. 连接到目标数据库: ORCL (DBID=1336354077)  
  8.   
  9. RMAN> delete archivelog all;  
  10.   
  11. 使用目标数据库控制文件替代恢复目录  
  12. 分配的通道: ORA_DISK_1  
  13. 通道 ORA_DISK_1: SID=222 设备类型=DISK  
  14. db_unique_name 为 ORCL 的数据库的归档日志副本列表  
  15. =====================================================================  
  16.   
  17. 关键字     线程序列     S 时间下限  
  18. ------- ---- ------- - ----------  
  19. 96      1    167     A 10-7月 -13  
  20.         名称: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_167_8XSOXYGH_.ARC  
  21.   
  22. 97      1    168     A 10-7月 -13  
  23.         名称: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_168_8XSOY383_.ARC  
  24.   
  25. 98      1    169     A 10-7月 -13  
  26.         名称: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_169_8XSOY9R0_.ARC  
  27.   
  28. 99      1    170     A 10-7月 -13  
  29.         名称: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_170_8XSOYH2F_.ARC  
  30.   
  31. 100     1    171     A 10-7月 -13  
  32.         名称: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_171_8XT08TB7_.ARC  
  33.   
  34. 101     1    172     A 10-7月 -13  
  35.         名称: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_172_8XT08TGG_.ARC  
  36.   
  37. 102     1    173     A 10-7月 -13  
  38.         名称: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_173_8XT0900C_.ARC  
  39.   
  40.   
  41. 是否确定要删除以上对象 (输入 YES 或 NO)?  
  42.   
  43. 是否确定要删除以上对象 (输入 YES 或 NO)? yes  
  44. 已删除的归档日志  
  45. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_167_8XSOXYGH_.ARC RECID=96 ST  
  46. AMP=820410050  
  47. 已删除的归档日志  
  48. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_168_8XSOY383_.ARC RECID=97 ST  
  49. AMP=820410057  
  50. 已删除的归档日志  
  51. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_169_8XSOY9R0_.ARC RECID=98 ST  
  52. AMP=820410062  
  53. 已删除的归档日志  
  54. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_170_8XSOYH2F_.ARC RECID=99 ST  
  55. AMP=820410067  
  56. 已删除的归档日志  
  57. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_171_8XT08TB7_.ARC RECID=100 S  
  58. TAMP=820420638  
  59. 已删除的归档日志  
  60. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_172_8XT08TGG_.ARC RECID=101 S  
  61. TAMP=820420638  
  62. 已删除的归档日志  
  63. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_173_8XT0900C_.ARC RECID=102 S  
  64. TAMP=820420643  
  65. 7 对象已删除  

其实方法还有很多

 

1:增大db_recovery_file_dest_size值

2:更换归档日志路径

3:检查失效的归档日志文件,然后删除

[csharp]  view plain copy print ?
 
  1. C:\Users\Administrator>rman  target /  
  2.   
  3. 恢复管理器: Release 11.2.0.1.0 - Production on 星期三 7月 10 15:41:53 2013  
  4.   
  5. Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.  
  6.   
  7. 已连接到目标数据库: ORCL (DBID=1336354077, 未打开)  
  8.   
  9. RMAN> crosscheck archivelog all;  
  10.   
  11. 使用目标数据库控制文件替代恢复目录  
  12. 分配的通道: ORA_DISK_1  
  13. 通道 ORA_DISK_1: SID=189 设备类型=DISK  
  14. 对归档日志的验证成功  
  15. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_174_8XT1VGG9_.ARC RECID=103 S  
  16. TAMP=820422255  
  17. 对归档日志的验证成功  
  18. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_175_8XT1WOMS_.ARC RECID=104 S  
  19. TAMP=820422294  
  20. 对归档日志的验证成功  
  21. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_176_8XT1Y02X_.ARC RECID=105 S  
  22. TAMP=820422338  
  23. 对归档日志的验证成功  
  24. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_177_8XT1Z783_.ARC RECID=106 S  
  25. TAMP=820422377  
  26. 对归档日志的验证成功  
  27. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_178_8XT20GWL_.ARC RECID=107 S  
  28. TAMP=820422416  
  29. 对归档日志的验证成功  
  30. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_179_8XT21P6K_.ARC RECID=108 S  
  31. TAMP=820422458  
  32. 对归档日志的验证成功  
  33. 归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_07_10\O1_MF_1_180_8XT231SN_.ARC RECID=109 S  
  34. TAMP=820422499  
  35. 已交叉检验的 7 对象  

 

 

如何删除参考:http://www.blogjava.net/decode360/archive/2009/06/25/287747.html

 

其实本身我的Oracle是非归档模式,前一段时间进行了测试切换成归档模式了,所以导致今天的问题,那么这次就直接切换成非归档模式

[csharp]  view plain copy print ?
 
  1. SQL> conn / as sysdba  
  2. 已连接。  
  3. SQL> archive log list  
  4. 数据库日志模式            存档模式  
  5. 自动存档             启用  
  6. 存档终点            USE_DB_RECOVERY_FILE_DEST  
  7. 最早的联机日志序列     178  
  8. 下一个存档日志序列   180  
  9. 当前日志序列           180  
  10.   
  11. SQL> shutdown immediate;  
  12. 数据库已经关闭。  
  13. 已经卸载数据库。  
  14. ORACLE 例程已经关闭。  
  15.   
  16. SQL> startup mount;  
  17. ORACLE 例程已经启动。  
  18.   
  19. Total System Global Area 5110898688 bytes  
  20. Fixed Size                  2184592 bytes  
  21. Variable Size            3355445872 bytes  
  22. Database Buffers         1744830464 bytes  
  23. Redo Buffers                8437760 bytes  
  24. 数据库装载完毕。  
  25. SQL> alter database noarchivelog;  
  26.   
  27. 数据库已更改。  
  28.   
  29. SQL> alter database open;  
  30.   
  31. 数据库已更改。  
  32.   
  33. SQL> archive log list;  
  34. 数据库日志模式             非存档模式  
  35. 自动存档             禁用  
  36. 存档终点            USE_DB_RECOVERY_FILE_DEST  
  37. 最早的联机日志序列     179  
  38. 当前日志序列           181  

 

 

收获:以前Oracle出现问题,基本上就不去理会,要么重装,要么重装,那Oracle根本学不到什么东西

           以后出现问题,要多思考多研究,每一个事例都是一个学习的机会,这样才能有进步啊

你可能感兴趣的:(oracle)