[Archive]更改ORACLE默认归档路径

根据http://blog.csdn.net/u011364306/article/details/49276717的博客整理

解决 设置数据库为归档模式时没有设置log_archive_dest_1参数,导致

Oracle错误——ORA-03113:通信通道的文件结尾  即闪回区空间满了

首先,在linux系统中,如何一个文件被进程所占用,这个时候即使将文件移走或删除,空间其实仍然是被占用的。遇到上述情况空间未释放可能有这方面的原因,将相关的程序杀掉即可,但是这可能会影响Oracle的运行。这时我们通过更改归档日志的路径大小来解决这种问题。

windows版本的话,如果是默认安装后没有设置环境变量。当oarcle实例停止后,由于没有oracle_sid 会导致用sqlplus连接时出现错误,无效监听ora-1524错误。此时要么设置环境变量要么通过服务启动实例,即使启动失败,这样就可以用sqlplus连接了。


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

 


Oracle出现错误,一般去错误日志里去找问题根源:在e:\app\kang\diag\rdbms\oracle\oracle\trace\文件夹下找文件,打开显示错误日志:

 

[plain]  view plain  copy
  1. Trace filee:\app\kang\diag\rdbms\oracle\oracle\trace\oracle_ora_6320.trc  
  2. Oracle Database 11gEnterprise Edition Release 11.2.0.1.0 - 64bit Production  
  3. With thePartitioning, OLAP, Data Mining and Real Application Testing options  
  4. Windows NT VersionV6.1 Service Pack 1  
  5. CPU                 : 4 - type 8664, 2 PhysicalCores  
  6. Process Affinity    : 0x0x0000000000000000  
  7. Memory (Avail/Total):Ph:2805M/6087M, Ph+PgF:6761M/12173M  
  8. Instance name: oracle  
  9. Redo thread mountedby this instance: 1  
  10. Oracle processnumber: 19  
  11. Windows thread id:6320, image: ORACLE.EXE (SHAD)  
  12.    
  13.    
  14. *** 2014-08-1608:18:55.461  
  15. *** SESSIONID:(191.3) 2014-08-16 08:18:55.461  
  16. *** CLIENT ID:()2014-08-16 08:18:55.461  
  17. *** SERVICE NAME:()2014-08-16 08:18:55.461  
  18. *** MODULENAME:(sqlplus.exe) 2014-08-16 08:18:55.461  
  19. *** ACTION NAME:()2014-08-16 08:18:55.461  
  20.    
  21. ORA-19815: 警告:db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用 100.00%, 尚有 0 字节可用。  
  22. ************************************************************************  
  23. You have followingchoices to free up space from recovery area:  
  24. 1. Consider changingRMAN RETENTION POLICY. If you are using Data Guard,  
  25.    then consider changing RMAN ARCHIVELOGDELETION POLICY.  
  26. 2. Back up files totertiary device such as tape using RMAN  
  27.    BACKUP RECOVERY AREA command.  
  28. 3. Add disk space andincrease db_recovery_file_dest_size parameter to  
  29.    reflect the new space.  
  30. 4. Delete unnecessaryfiles using RMAN DELETE command. If an operating  
  31.    system command was used to delete files,then use RMAN CROSSCHECK and  
  32.    DELETE EXPIRED commands.  
  33. ************************************************************************  
  34. ORA-19809:超出了恢复文件数的限制  
  35. ORA-19804: 无法回收33961984 字节磁盘空间 (从 4102029312 限制中)  
  36. *** 2014-08-1608:18:55.502 4132 krsh.c  
  37. ARCH: Error 19809Creating archive log file to'E:\APP\KANG\FLASH_RECOVERY_AREA\ORACLE\ARCHIVELOG\2014_08_16\O1_MF_1_159_%U_.ARC'  
  38. *** 2014-08-1608:18:55.502 2747 krsi.c  
  39. krsi_dst_fail: dest:1err:19809 force:0 blast:1  
  40. DDE: Problem Key 'ORA312' was flood controlled (0x1) (no incident)  
  41. ORA-00312: 联机日志 3 线程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'  
  42. ORA-16038: 日志 3sequence# 159 无法归档  
  43. ORA-19809:超出了恢复文件数的限制  
  44. ORA-00312: 联机日志 3 线程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'  
  45.    
  46. *** 2014-08-1608:18:55.565  
  47. USER (ospid: 6320):terminating the instance due to error 16038  


1.查看归档日志路径

[sql]  view plain  copy
  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路径

[sql]  view plain

 copy
  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。

查看闪回区使用情况

SQL> select * from v$recovery_file_dest;
NAME                              SPACE_LIMIT SPACE_USED      SPACE_RECLAIMABLE NUMBER_OF_FILES
---------------------------------- ---------- ----------------- --------------- ---------------
/opt/oracle/app/fast_recovery_area 4322230272          0                 0               0

默认情况下,归档日志会存放到闪回恢复区($ORACLE_BASE/fast_recovery_area)内,如果闪回恢复区已经使用到4G,归档日志就有可能无法继续归档,数据库夯住。

1)解决方法一

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

[sql]  view plain  copy
  1. --修改语句  
  2. SQL> alter system set db_recovery_file_dest_size=10G scope=both;  
  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  

scope选项spfile保存到spfile里面需要重启生效,both表示立即生效并保存到spfile文件,如果不保存到spfile里面下次重启数据库

要重新设置。

2)解决方法二

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

[sql]  view plain  copy
  1. --修改log_archive_dest_1值来重新制定路径  
  2. SQL> alter system set log_archive_dest_1='location=/u01/oracle/archive' scope=both;  
  3.   
  4. System altered.  
这里特别要注意location参数,并且指定的目录要存在并且有Oracle的权限
立即生效,查看归档路径是否修改成功

[sql]  view plain  copy
  1.    
  2. --再次查看,修改成功  
  3. SQL> archive log list  
  4. Database log mode              Archive Mode  
  5. Automatic archival             Enabled  
  6. Archive destination            /u01/oracle/archive  
  7. Oldest online log sequence     4  
  8. Next log sequence to archive   6  
  9. Current log sequence           6  
可以通过切换日志,查看归档路径下是否有归档日志产生来验证归档路径设置是否正确,可以通过下面的命令切换日志
[sql]  view plain  copy
  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. [oracle@cancer oracle]$ ll /u01/oracle/archive/  
  10. total 36540  
  11. -rw-r----- 1 oracle oinstall  9608704 Oct 20 14:39 1_6_893515662.dbf  
归档格式:

[sql]  view plain  copy
  1. SQL> show parameter log_archive_format  
  2.   
  3. NAME                                 TYPE        VALUE  
  4. ------------------------------------ ----------- ------------------------------  
  5. log_archive_format                   string      %t_%s_%r.dbf  

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值