zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle归档日志满了怎么办

Oracle日志 怎么办 归档
2023-09-14 09:01:48 时间

归档满了

如果服务器进不去查看pfile文件,在pfile文件里面有归档除存放的路径

*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'

 

 

如果服务器本地可以进去,就可以查看归档目录

SQL> archive log list;
Database log mode        Archive Mode
Automatic archival        Enabled
Archive destination        USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     35
Next log sequence to archive   38
Current log sequence        38

SQL> show parameter DB_RECOVERY_FILE_DEST;


NAME      TYPE        VALUE
------------------------------------ --------------------------------- ------------------------------
db_recovery_file_dest      string        /u01/app/oracle/flash_recovery
       _area
db_recovery_file_dest_size      big integer        10G
SQL> 
SQL> alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area';

更改完之后所有的自动备份路径全部都会保存在此目录。

在安装数据库时会询问是启动快速恢复区(/u01/app/oracle/flash_recovery_area;),如果不设置的话默认在(/u01/app/oracle/product/11.2.0/db_1/dbs/)下。所以需要进行DB_RECOVERY_FILE_DEST设置。

 

解决方法:

 

如果不自己设置归档目录,一般和闪回区在一起,无法登录sqlplus可以先去闪回区看看,如果是在那里,可以删掉些很久以前的归档,然后就能暂时进入数据库和rman了

然后可以在rman里面删除过期归档。

进入rman

crosscheck copy of archivelog all;

crosscheck archivelog all;

resync catalog;

delete force obsolete;

delete expired archivelog all;

通过crosscheck archivelog all;可以看到备份的归档

RMAN> crosscheck archivelog all;


using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=42 device type=DISK
validation succeeded for archived log
archived log file name=/u01/oracle/fast_recovery_area/ORADB/archivelog/2017_12_21/o1_mf_1_7_f3qkhw2r_.arc RECID=5 STAMP=963297151
validation succeeded for archived log
archived log file name=/u01/oracle/fast_recovery_area/ORADB/archivelog/2017_12_21/o1_mf_1_8_f3ql8mtr_.arc RECID=6 STAMP=963297940
validation succeeded for archived log
archived log file name=/u01/oracle/fast_recovery_area/ORADB/archivelog/2017_12_27/o1_mf_1_9_f46pr89q_.arc RECID=7 STAMP=963794061
validation succeeded for archived log
archived log file name=/u01/oracle/fast_recovery_area/ORADB/archivelog/2017_12_27/o1_mf_1_10_f47lh3qm_.arc RECID=8 STAMP=963822437
Crosschecked 4 objects

因为db_recovery_file_dest_size      big integer        10G     因为只有10G,就可以删除过期的归档。

 

如果上面删除归档无效的话,可以:

DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

这个命令是删除七天以前的所有归档,然后就可以去归档目录删掉命令没删掉的7天前的所有归档了。

如果不想删归档,归档在闪回区,闪回区本身所在磁盘空间还有多的话,可以修改闪回区大小(

查看回闪恢复区的大小和存放目标:>show parameter db_recovery_file_dest

修改回闪恢复区的大小>alter system set db_recovery_file_dest_size = 15G(可以根据实际情况调整大小)

也可以通过修改归档路径  alter system set log_archive_dest_1='location=D:\arch';设置到一个空间比较大的地方

 

 

补充

 

SQL> archive log list

数据库日志模式             非存档模式

自动存档             禁用

存档终点            USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列     321

当前日志序列           326。

上面的存档终点USE_DB_RECOVERY_FILE_DEST默认就是闪回恢复区($ORACLE_BASE/flash_recovery_area),可以通过下面的SQL查看闪回恢复区的信息。

SQL> show parameter db_recover

NAME                        TYPE         VALUE

--------------------------  ----------- ----------------------------

db_recovery_file_dest       string      D:\oracle\flash_recovery_area

db_recovery_file_dest_size  big integer   2G

通过上面的SQL结果可以看到,闪回恢复区为D:\oracle\flash_recovery_area,大小为2G,也可以通过查询v$recovery_file_dest视图查看闪回恢复的限制信息。

SQL> select name,SPACE_LIMIT,SPACE_USED from v$recovery_file_dest;

NAME                           SPACE_LIMIT SPACE_USED

------------------------------ ----------- ----------

D:\oracle\flash_recovery_area   2147483648   21225472

默认情况下,归档日志会存放到闪回恢复区(D:\oracle\flash_recovery_area)内,如果闪回恢复区已经使用到2G,归档日志就有可能无法继续归档,数据库夯住,通常的解决方法是增大闪回恢复区,可以用以下SQL实现。

SQL> alter system set db_recovery_file_dest_size=3G;

系统已更改。

即使用这种方法解决的当前燃眉之急,虽然闪回恢复区ORACLE会自动管理,如果闪回恢复区空间不足就会清理掉没用的数据,但是如果备份策略不是很完善,数据库非常繁忙的情况下,还有可能遇到这种情况,通常需要修改归档日志的路径,将归档日志放到其他不受限制的路径下来解决这个问题,可通过下面的SQL来修改归档日志的存放路径。

SQL> alter system set log_archive_dest_1='location=D:\arch';

系统已更改。