Oracle管理归档日志文件

Oracle使用"归档日志文件"来提前一步保存这些即将被覆盖掉的重做日志记录。归档日志文件默认情况下存放在快速恢复区所对应的目录(初始化参数db_recovery_file_dest设定)

一、日志模式分类

归档模式(archivelog):

在重做日志文件被覆盖前,oracle将已经写满的重做日志文件通过复制保存到指定为位置 ,保存下来的所有重做日志文件称为“归档重做日志”。

归档日志文件不仅包含了被覆盖的日志文件,还抱好了重做日志文件使用的顺序号。

在该模式下,LGWR在写下一个日志文件之前,需要等待该日志文件归档完成,否则LGWR暂停执行。归档操作有ARCN自动完成,也可有管理员手动完成。为了提高效率,可以考虑使用多个ARCN进程加速归档的速度。

归档模式的优势:

若发生磁盘损坏,可以使用数据库备份和归档重做日志文件恢复已提交的事务。

若为当前数据库建立了备份数据库,可以通过给备份数据库应用归档重做日志文件,保证两者之间一致性。

利用归档重做日志文件,可以实现使用在数据库打开状态下创建的备份文件进行数据库恢复。

 

非归档模式(noarchivelog):

只能保护实例故障而不能保证介质故障。

如果进行日志切换,生成的新内容将直接覆盖原来的日志记录。

在该模式下,管理员应经常对数据库进行完整的备份。

特点:

检查点完成后,就可以覆盖原来的重做日志文件。

若数据库备份后的重做日志内容已经被覆盖,那么当数据库文件损坏时,只能恢复到最近一次的某个完整备份点,而且这个备份点的时间无法控制,甚至可能有数据的丢失。

 

二、日志模式切换

(1)查看当前日志模式  select log_mode from v$database;

(2)关闭并重启数据库  shutdown immediate;

                                   startup mount;

(3)切换日志模式   alter database archivelog; 或者 alter database noarchivelog;

(4)打开数据库   alter database open;

 

三、配置归档进程

若LGWR经常处于等待状态,可以考虑启用多个ARCN,通过修改初始化参数log_archive_max_processes,默认为2。

alter system set  log_archive_max_processes=3。

 

 四、设置归档文件位置 

归档日志文件保存的 位置称为归档目标,不同的归档目标最好位于不同的磁盘中,以缓解归档操作时磁盘I/O的压力。

归档目标在初始化参数LOG_ARCHIVE_DEST_n中进行设置,n为1到10的整数,即可以为数据库指定1到10个归档目标。在进行归档时,oracle会将重做日志文件组以相同的方式归档到归档目标。在设置归档目标时,可以指定本地机器作为归档目标,也可以选择远程服务器作为归档目标。


本地归档目标(LOCATION):

alter sysytem set log_archive_dest_1='location=D:\OracleFiles\archive1';

同时还可以指定optional、mandatory、reopen选项

alter sysytem set log_archive_dest_1='location=D:\OracleFiles\archive1 optional';

alter sysytem set log_archive_dest_1='location=D:\OracleFiles\archive2 mandatory‘ ;

alter sysytem set log_archive_dest_1='location=D:\OracleFiles\archive3 mandatory reopen=400’;

optional:默认选项,无论归档是否成功,都可以覆盖重做日志文件。

mandatory:只有在归档成功后,才能覆盖重做日志文件。

reopen:默认为300秒。但reopen必须在mandatory后使用。

在使用log_archive_desc_n设置归档位置时,还可以设置初始化参数log_archive_min_succeed_dest控制本地成功归档的“最小个数”。如果成功归档数少于该值,则重做日志文件不能被覆盖。

alter system set  log_archive_min_succeed_dest=3;

设置归档目标是否可用

alter system set log_archive_dest_state_4=defer或者enable;

这里的log_archive_dest_stat_n中n的值要大于log_archive_min_succeed_dest,否则会报错。


远程归档目标(SERVER):

alter system set log_archive_dest_1='service=ZLH';

ZLH为远程的服务器名。


五、查看归档日志信息

v$database:           查询数据库日志模式

v$archived_log:        包含控制文件中所有已经归档的日志信息

v$archive_dest:       包含所有归档目标信息

v$archive_processes: 包含已启动的ARCN进程状态信息 

v$backup_redolog:       包含所有已经备份的归档日志信息



Oracle日志管理攻略    ORACLE数据库的日志文件$ORACLE_BASE/admin/orasid/bdump/alert_orasid.log记录了重作日志的转换,数据库启动和关闭,数据库结构的改变,回退段的修改,死锁,内部错误等信息.   数据库管理员需要检查这个文件有无ORA-错误并定期地对这个日志文件进行存档整理。   在UNIX下可以用grep命令把alert_orasid.log里出现的错误保存到另一个文件。然后去找原因。   $grep ORA- alert_orasid.log > error.log   大家都知道,文件越大,其打开和读写的开销越大。如果日志文件太大了(超过5M), 需要对它截断处理。   直接删除它,让ORACLE重新生成不是好的方法。因为ORACLE是通过一个指向文件的指针进行写操作。   在数据库运行时删除了这个文件, ORACLE仍然用原来的文件指针进行写操作,有可能写一个不存在的文件导致硬盘空间占用。   我们要采用以下的方法:   $tail -100 $ORACLE_BASE/admin/orasid/bdump/alert_orasid.log > /tmp/oracle_temp.log   $cp /tmp/oracle_temp.log $ORACLE_BASE/admin/orasid/bdump/alert_orasid.log   $rm /tmp/oracle_temp.log   对日志文件进行截断处理。   listener的日志文件$ORACLE_HOME/network/log/listener.log记录了通过listener处理的网络请求信息,它包含客户端请求的时间,连接方式(专用或共享),连接程序,网络协议,主机名,网络端口号等信息。   我们也需要周期地截断它,方法是先停止listener记日志的工作:   $lsnrctl set log_status off   然后进行文件处理( 把原来的日志保存到备份文件夹, 使原来的listener.log置空 )   $cp $ORACLE_HOME/network/log/listener.log $ORACLE_BACKUP/network/log/listener_1.log   $cp /dev/null $ORACLE_HOME/network/log/listener.log   文件操作完成后,打开listener记日志的工作:   $lsnrctl set log_status on   如果你会写简单的shell程序,可以把上面的步骤固化成一个脚本,定一个时间表, 让操作系统去做。   下面是我写的一个按天分割保存listener.log的文件auto_listener.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值