Oracle Archive log

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

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

相关文档
最新文档