Oracle Archive log
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle归档日志(Archive Log 一)
归档日志即重做日志的备份,使用归档日志的目的是为了实现介质恢复。
一.日志操作模式
1.Noarchivelog(非归档模式)
不保存重做日志。
不能在open状态下进行物理备份;要定期执行完全数据库备份;只能将数据库恢复到上次的完全备份点。
2.Archivelog
当进行日志切换时,ARCH进程会将重做日志的内容复制到归档日志中。
在归档重做日志前,新事务变化不能覆盖旧事务变化。
可以在open 状态下进行物理备份。
可以将数据库恢复到失败前的状态。
可以是用备份数据库与主数据库保持同步。
二.开启归档
1.改变日志操作模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
修改日志操作模式后,必须重新备份数据库
2.归档重做日志
1).手工归档
alter system archive log all;
2).自动归档
设置初始化参数:log_archive_start=true
shutdown immediate;
startup pfile=.
3).检查日志操作模式
archive log list;
三.指定归档位置
1.使用log_archive_dest
1).设置归档目录
log_archive_dest log_archive_duplex_dest 2).设置归档日志格式
2.使用log_archive_dest_n
1).指定归档位置
log_archive_dest_1=’location=f:\arc1’log_archive_dest_3=’service=standby’2).设置其他初始化参数
log_archive_dest_state_1=enable
log_archive_dest_state_3=defer
四.相关的一些脚本
1.显示日志操作模式
select log_mode from v$database
2.显示归档日志信息
select name,sequence#,first_change# from v$archived_log
3.显示归档日志位置
select destination from v$arvhive_dest
4.显示日志历史信息
select * from v$loghist;
Oracle中的归档日志(Archive Log 二)在Oracle中,数据一般是存放在数据文件中,不过数据库与Oracle 最大的区别之一就是数据库可以在数据出错的时候进行恢复。这个也就是我们常见的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分,一个是在线重做日志文件,另外一个就是归档日志
文件。
这里不详细说明在线重做日志,而是说一下归档日志(Archive Log)。在线重做日志大小毕竟是有限的,当都写满了的时候,就面临着2个选择,第一个就是把以前在线重做日志从头擦除开始继续写,第二种就是把以前的在线重做日志先进行备份,然后对被备份的日志擦除
开始写新的在线Redo File。这种备份的在线重做日志就是归档日志。而数据库如果采用这种生成归档日志的模式的话,就是归档日志模式(ARCHIVELOG模式),反之如果不生成归档日志,就是非归档日志
模式(NOARCHIVELOG模式)。
有了归档日志有什么好处了。比如在这个月1号的时候备份了一次数据,然后过了10天,这10天生成了成百上千个在线重做日志,突然发现其中有一个数据磁盘出问题了,不能用了,那该如何是好呢。
如果没有采用归档日志,那么实际上磁盘中只会有几个最新的在线重做日志。那么我只能要不然把出问题的数据磁盘上所占据的表空间都删除掉。但是如果是SYSTEM表空间所涉及的磁盘出错,就没办法这么做了,只能用第二种方法。那第二种方法就是把1号备份的数据拿出来恢复。那么1号到10号之间的10天的数据都丢了,如果是关键系统,比如证券金融什么的系统,就要赔钱赔到死掉。
但是如果有了归档日志,那么这10天的重做日志都会存放起来,那么DBA首先把1号的备份数据恢复,然后再拿这10天的REDO日志来进行一次数据操作重放,那么就可以完全恢复最新的数据库,不会
有什么后果了。
在软件开发的时候,由于测试服务器的配置有限,特别是磁盘空间有限,所以有可能要限制REDO文件的大小,有可能就把系统设置为
NOARCHIVELOG 模式了。但是在实际的生产运行环境下,建议一定要使用ARCHIVELOG模式,在一定程度上保证数据的基本安全。
有人可能会怕归档日志造成性能损失。其实完全是杞人忧天,归档日志只是做一个备份,多耗一些磁盘空间。在当前的软件系统中,硬盘的存储容量成本已经属于低到可以忽略的地步,而最重要的是数据库的安全。DBA的任务本来就是确保数据的安全,系统的稳定性是首要保
证的。▋
Oracle归档方式下丢失非当前联机日志(Archive Log 三)
C:\>del D:\oracle9\oradata\nbxtdb\REDO03.LOG
C:\>exit
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 378608760 bytes
Fixed Size 453752 bytes
Variable Size 167772160 bytes
Database Buffers 209715200 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组3 (线程1) 的成员
ORA-00312: 联机日志3 线程1: 'D:\ORACLE9\ORADATA\NBXTDB\REDO03.LOG'
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------