1. 归档模式的定义
在归档模式下,当LGWR后台进程的写操作从一个重做日志组切换到另一个重做日志组后,归档写后台进程(ARCH/ARCHn)就会将原来的重做日志文件中的信息复制到归档文件中。
1.1. 可以进行如下不完全恢复
*恢复到某一特定的时间点;
*恢复到某一特定的SCN号;
*恢复到某一特定的归档文件的结尾;
1.2. 归档模式下的全恢复过程
*可以在联机或者脱机的情况下执行恢复;
*将损坏的数据文件物理备份复制回原来的位置;
*使用归档日志文件将数据库从上一次备份逮到数据文件崩溃的那个时间点;
2. 将数据库设置为归档模式
2.1. 设置步骤
*以SYSDBA身份登录Oracle数据库;
*使用archive log list 命令查看数据库与归档相关的信息;
*正常关闭数据库,使用shutdown immediate;
*以加载的方式启动数据库(startup mount);
*用ALTER DATAVASE的命令将数据库设置为归档模式(alter database archivelog);
*打开数据库(alter database open);
*再用archive log list 查看数据库的归档模式;
*做数据库的全备份,因为之前在非归档模式下的数据库备份以不能使用了;这个新的备份就是在归档模式下的备份的起点。
2.2. 手动完成重做日志文件的归档
切换当前重做在线日志,出发归档进程,测试是否归档成功。
alter system archive log current;
SQL> alter system switch logfile;
System altered.
//切换redo log 从一个组到另一个组,这时将触发checkpoint,归档
SQL> alter system switch logfile;
System altered.
- 实际例子
- 查看是否为归档模式
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 31
Current log sequence 33 - 关闭数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down. - 启动数据库到mount模式
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 2020384 bytes
Variable Size 318770144 bytes
Database Buffers 889192448 bytes
Redo Buffers 14753792 bytes
Database mounted.
4. 修改数据库为归档模式
SQL> alter database archivelog;
Database altered.
5. 打开数据库库
SQL> alter database open;
SQL> SELECT NAME,created,log_mode FROM v$database;
NAME CREATED LOG_MODE
ORCL 04-JUN-12 ARCHIVELOG
Database altered
6. 查看设置是否成功
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 D:\oracle\arch3
最早的联机日志序列 223
下一个存档日志序列 225
当前日志序列 225
SQL>
7. 手动切换在线重做日志
SQL> alter system archive log current;
系统已更改。
SQL>
SQL> alter system switch logfile;
System altered.
//切换redo log 从一个组到另一个组,这时将触发checkpoint,归档
SQL> alter system switch logfile;
System altered.
alter system switch logfile 是强制日志切换,不一定就归档当前的重做日志文件(若自动归档打开,就归档前的重做日志,若自动归档没有打开,就不归档当前重做日志。)
alter system archive log current 是归档当前的重做日志文件,不管自动归档有没有打都归档。
主要的区别在于:
ALTER SYSTEM SWITCH LOGFILE对单实例数据库或RAC中的当前实例执行日志切换;而ALTER SYSTEM ARCHIVE LOG CURRENT会对数据库中的所有实例执行日志切换。为什么执行热备后要执行alter system archive log current 这个语句,看到很多脚本都是这样写的。是不是必须的?
一般的RMAN脚本都是这样写的,因为RMAN是可以备份归档日志的。alter system archive log current 这样后就可以将所有的归档都备份出来了。这样做是为了保证数据的完整和一致
4. 归档路径和其他参数的设置
从oracle database 10g开始,当将日志操作模式转变未ARCHIVELOG模式时,oracle会自动启动ARCH进程。如果要使用手工归档,那么在改变日志操作模式时必须使用命令ALTER DATABASE ARCHIVELOG MANUAL。
4.1. 手工归档方式
需要注意,使用手工归档方式,数据库管理员必须手工执行归档命令.如果没有执行手工归档命令,日志组的原有内容将不能被覆盖.ALTER DATABASE ARCHIVELOG MANUAL 命令是为了与先前的版本兼容而保留的,.将来的oracle版本会淘汰该命令,使用手工归档方式是,数据库管理员可以执行以下命令归档重做日志:
SLTER SY