oracle归档日志大小显示为0啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle归档日志大小显示为0啥意思相关的知识,希望对你有一定的参考价值。

参考技术A 存储损坏。oracle归档日志大小显示为0是因为存储损坏导致部分文件系统元文件没有更新。需要进行更新处理,重组存储信息,重新导出文件,并分析控制文件,找出这些0kb文件大小的文件号,扫描数据库碎片即可。

修改默认归档日志

 



Oracle11g版本,ORACLE默认的日志归档路径为闪回恢复区($ORACLE_BASE/fast_recovery_area)。对于这个路径,Oracle有一个限制,就是默认只有4G的空间,而且不只是归档日志的默认路径,也是备份文件和闪回日志的默认地址,这样的话归档日志锁使用的空间就达不到4G,在没有设置好这个路径大小的情况下,很多系统都遇到过归档日志满而无法归档导致数据库夯住的问题。

1.查看归档日志路径

 

  1. SQL> archive log list  
  2. Database log mode              Archive Mode  
  3. Automatic archival             Enabled  
  4. Archive destination            USE_DB_RECOVERY_FILE_DEST  
  5. Oldest online log sequence     4  
  6. Next log sequence to archive   6  
  7. Current log sequence           6  

这里可以看到Archive destination的值为USE_DB_RECOVERY_FILE_DEST,可以理解为USE(使用)DB_RECOVERY_FILE_DEST这个路径

2.查看DB_RECOVERY_FILE_DEST路径

 

  1. SQL> show parameter db_recovery  
  2.   
  3. NAME                                 TYPE        VALUE  
  4. ------------------------------------ ----------- ------------------------------  
  5. db_recovery_file_dest                string      /u01/oracle/fast_recovery_area  
  6. db_recovery_file_dest_size           big integer 4G  

由上可以很清楚的看到DB_RECOVERY_FILE_DEST路径参数的值默认为/u01/oracle/fast_recovery_area,并且Oracle设置的大小为4G。
默认情况下,归档日志会存放到闪回恢复区($ORACLE_BASE/fast_recovery_area)内,如果闪回恢复区已经使用到4G,归档日志就有可能无法继续归档,数据库夯住。

1)解决方法一

通常的解决方法是增大闪回恢复区,可以用以下SQL实现。

  1. --修改语句  
  2. SQL> alter system set db_recovery_file_dest_size=10G;  
  3.   
  4. System altered.  
  5.   
  6. --再次查看  
  7. SQL> show parameter db_recovery  
  8.   
  9. NAME                                 TYPE        VALUE  

10. ------------------------------------ ----------- ------------------------------  

11. db_recovery_file_dest                string      /u01/oracle/fast_recovery_area  

12. db_recovery_file_dest_size           big integer 10G  

2)解决方法二

修改归档日志的路径,将归档日志放到其他不受限制的路径下来解决这个问题,可通过下面的SQL来修改归档日志的存放路径。

 

  1. --修改log_archive_dest_1值来重新制定路径  
  2. SQL> alter system set log_archive_dest_1=‘location=/u01/oracle/archive‘;  
  3.   
  4. System altered.  

这里特别要注意location参数,并且指定的目录要存在并且有Oracle的权限
重新启动数据库,查看归档路径是否修改成功

 

  1. --关闭  
  2. SQL> shutdown immediate  
  3. Database closed.  
  4. Database dismounted.  
  5. ORACLE instance shut down.  
  6. SQL> startup  
  7. ORACLE instance started.  
  8.   
  9. Total System Global Area  784998400 bytes  

10. Fixed Size                  2257352 bytes  

11. Variable Size             478154296 bytes  

12. Database Buffers          301989888 bytes  

13. Redo Buffers                2596864 bytes  

14. Database mounted.  

  1. 15.   

16. Database opened.  

  1. 17.   

18. --再次查看,修改成功  

19. SQL> archive log list  

20. Database log mode              Archive Mode  

21. Automatic archival             Enabled  

22. Archive destination            /u01/oracle/archive  

23. Oldest online log sequence     4  

24. Next log sequence to archive   6  

25. Current log sequence           6  

可以通过切换日志,查看归档路径下是否有归档日志产生来验证归档路径设置是否正确,可以通过下面的命令切换日志

 

  1. SQL> alter system switch logfile;  
  2.   
  3. System altered.  
  4.   
  5. SQL> exit  
  6. Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production  
  7. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  8.   
  9. [[email protected] oracle]$ ll /u01/oracle/archive/  

10. total 36540  

11. -rw-r----- 1 oracle oinstall  9608704 Oct 20 14:39 1_6_893515662.dbf  

归档格式:

 

  1. SQL> show parameter log_archive_format  
  2.   
  3. NAME                                 TYPE        VALUE  
  4. ------------------------------------ ----------- ------------------------------  
  5. log_archive_format                   string      %t_%s_%r.dbf  

以上是关于oracle归档日志大小显示为0啥意思的主要内容,如果未能解决你的问题,请参考以下文章

Oracle的日志文件存储在啥位置

如何删除oracle的归档日志

红旗下的 ORACLE 数据库 归档日志 一分钟一次 一次45M 让人受不了了 怎么解决 ?目录为ARCH

Oracle归档日志

Oracle归档日志所在目录时间不对&&Oracle集群日志时间显示错误

单纯修改oracle归档路径需要关闭数据库吗