oracle 重做日志文件和归档日志
- 格式:ppt
- 大小:1.34 MB
- 文档页数:81


重做日志文件
重做日志文件记录的两类数据:1.修改前的数据2.修改后的数据
当满足一定条件时先将修改操作所产生的重做记录写入重做日志文件中,然后才将内存中的修改结果成批的写入数据文件,最后在提交事务
重做日志文件是由重做记录组成的,重做记录是由修改向量组成的。当用户执行一条update语句对某一个表中的记录进行修改时,会生成一条记录,这条记录用多个向量记录下了被这条语句修改过的各个db块中的信息。
重做记录采用循环的方式在SGA区的重做日志缓存区中进行缓冲,并且由后台进程LGWR
写入到其中的某个重做日志文件中。用户无论何时提交事务,LGWR都会将该事务的重做记录从SGA的重做日志缓存区写入到某个重做日志文件中,并且为提交的每个事务分别分配一个识别重做记录的系统修改编号。只有当与已知事务相关的所有重做记录都安全的写入重做日志文件后,用户进程才被告之已经提交。
LGWR进程在开始写入下一个重做日志文件之前,必须确保这个即将覆盖的重做日志文件已经完成了如下的工作:
1. 如果数据库处于“非归档日志模式(noarchivelog)”,则该重做日志文件中的所有重做记录所对应的修改结果,必须全部被写入到数据文件中。
2. 如果数据库处于“归档日志模式(archivelog)”,则该重做日志文件中的所有重做记录所对应的修改结果,必须全部被写入到数据文件中,并且归档进程ARCH已经将该重做日志文件进行了归档。
活动的,非活动的,当前的联机重做日志文件
LGWR当前写入的重做日志文件称为当前的联机重做日志文件,例程恢复时需要的重做日志文件称为活动的重做日志文件,例程恢复时不需要的重做日志文件称为非活动的重做日志文件。如果已经能够进行归档,oracle就不能重新使用或重写活动的重做日志文件,知道ARCH存储了这个文件的内容。如果不能进行归档,当最后一个重做日志文件被填满是时,将通过重写的方法继续使用第一个可用的活动重做日志文件。
Oracle 使用RMAN备份数据库文件和归档日志
当数据库打开时,可以使用RMAN BACKUP命令备份如下对象:
数据库
表空间
数据文件
归档重做日志
控制文件
备份集
在使用BACKUP命令备份数据文件时,可以为其设置参数,定义备份段的文件名,文件数和每个输入文件的通道。
1.备份数据库
如果备份操作是在数据库被安全关闭之后进行的,那么对整个数据库的备份是一致的;与之相对应,如果数据库是在打开状态下对整个数据库进行的备份,则该备份是非一致的。非一致性备份整个数据库的操作步骤如下:
(1)启动RMAN并连接到目标数据库,输入BACKUP DATABASE命令备份数据库。在BACKUP命令中可以指定FORMAT参数,为RMAN生成的每个备份片段指定一个惟一的名称,以及存储的位置。
C:\>rman target system/admin nocatalog
RMAN> backup database format 'f:\oracle_backup\ora11g_%Y_%M_%D_%U.bak' maxsetsize=2G;
还可以为BACKUP命令指定TAG参数,为备份片段定义备份标签。例如:
RMAN>backup database tag='weekly_backup';
(2)如果建立的是非一致性备份,那么必须在完成备份后对当前的联机重做日志进行归档,因为在使用备份恢复数据库需要使用当前重做日志中的重做记录。
RMAN>sql'alter system archive log current';
(3)在RMAN中执行LIST BACKUP OF DATABASE命令,查看建立的备份集与备份片段的信息。
RMAN> list backup of database;
如果需要对整个数据库进行一致性备份,则首先需要关闭数据库,并启动数据库到MOUNT状态。例如:
数据库归档模式介绍
简介:
归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换时,后台进程ARCH会将重做日志的内容保存到归档日志中,当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。在Oracle10g中,只要启动数据库的归档模式,Oracle就会启用自动归档,从而避免了10g以前由于用户疏忽所带来的一系列问题。
日志操作模式:ARCHIVELOG(归档),NOARCHIVELOG(非归档)
启动Oracle10g数据库的归档模式详细步骤
对于非归档模式的数据库改为归档模式(主要以Oracle 10g为参考)使用以下步骤:
步骤1(查看数据库的归档状态)
首先查看数据库现有模式可使用以下语句,显示数据库处于非归档模式下
SQL> select name,log_mode from v$database;
NAME LOG_MODE
--------- ------------
ZHQHDB NOARCHIVELOG
也可以用下面的语句
[oracle@wangdm ~ 10:28 #9]$ sqlplus / as sysdba
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination ?/dbs/arch
Oldest online log sequence 534
Current log sequence 536
步骤2(设置归档日志文件路径)
SQL>alter system set log_archive_dest_1='location=/u01/arch';
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