实验:
alter system set db_recovery_file_dest_size=30M scope=spfile;
--手工设置快闪恢复区为300M
重启动生效
shutdown immediate
startup
重新启动切换到归档
startup mount;
alter database archivelog;
alter database open;
show parameter db_recovery
--查看归档
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:\oracle\product\10.2.0\flash
_recovery_area
db_recovery_file_dest_size big integer 30M
select recid from v$archived_log;
--刚开始,归档日志记录v$archived_log中,没有任何记录信息的
进行一些DML操作之后,就会生成redo log记录
select recid, stamp, name, sequence# from v$archived_log;
select name from v$archived_log;
Archive Redo Log写满故障现象
create table test as select * from dba_objects;
/
/
/
在delete现在产生了一些日志信息
此时,我们观察到如下现象:
进行所有DML等生成Redo Log操作,系统无响应
此时,任何会生成Redo Log记录的操作,都不能获取到响应。Online Redo Log要保证在被下次覆写之前
,完成归档操作。由于归档空间不能实现写入,所以归档操作进程arch就被停止住,进而写redo log的动
作也会被block住。
除sys用户外的普通用户,连接失败
当我们尝试使用非sys用户登录系统时,Oracle提出拒绝。
SQL> conn test2/test2
ERROR:
ORA-00257: archiver error. Connect internal only, until freed.
此时观察alert_log,可以看到错误提示。
Fri Oct 04 17:03:25 2013
ARCH: Archival stopped, error occurred. Will continue retrying
Fri Oct 04 17:03:25 2013
Errors in file d:\oracle\product\10.2.0\admin\test\bdump\test_arc1_2208.trc:
ORA-16014: log 3 sequence# 9 not archived, no available destinations
ORA-00312: online log 3 thread 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG'
现在用户不能登陆了,归档进程arch被停止了,redo log的动作也会被锁住现在怎么办撒???
尝试解决此类型问题,要根据不同的数据库配置环境依据不同的方法来确定。如果是生产环境,可以考虑
暂时扩大恢复区、或者直接删除归档日志之后全库备份的策略。
删除归档日志的方式上,有一些注意方面。因为归档记录是写入进控制文件Control File的,所以即使直
接从文件系统中删除,Oracle数据库也不会认为该文件已经删除。解决的方式就是使用RMAN工具。
RMAN TARGET /
crosscheck archivelog all;
--显示归档日志
delete archivelog all completed before 'sysdate';
--删当前日期的所有归档日志
此时,普通用户可以登录,其他故障现象消除。
在设置归档日志大小alter system set db_recovery_file_dest_size=2G scope=spfile;
结论:
不同的数据库结构、用途和系统要求,恢复archived log写满的方案是不同的。针对不同的结构,指定出
不同的解决策略方法;
关注归档空间策略和尽早制定解决之道。在系统切换或者计划切换到归档模式的那一刻起,就要开始针对
归档日志、空间的管理策略制度。同时,要保证时刻进行空间监控,不要等出现hange住,特别是生产环
境业务峰期hange住再解决问题;
对归档环境下的大规模dml操作要慎重,防止短时间内redo log归档生成失控;
不要贸然rm掉归档,要关注整体的备份集合状态和系统要求;