目录
Oracle利用重做日志文件来记录用户对数据库所做的修改,但是重做日志文件是以循环方式使用的,在重新写入重做日志文件是,原来保存的重做记录会被覆盖。为了完整地记录数据库的全部修改过程,Oracle使用“归档日志文件”来提前一步保存即将被覆盖掉的重做日志记录。
日志模式分类
1.归档模式(ARCHIVELOG)
数据库处于归档模式下的优势:
- 如果发生磁盘介质损坏,则可以使用数据库备份与归档 重做日志恢复已经提交的事务,保证不会发生任何数据丢失;
- 如果为当前数据库建立了一个备份数据库,通过持续地位备份数据库应用归档重做日志,可以保证源数据库与备份数据库的一致性;
- 利用归档日志文件,可以实现使用数据库在打开状态下创建的备份文件来进行数据库恢复;
![](https://i-blog.csdnimg.cn/blog_migrate/a0dde718a779bbd96c48e47b0d4cc9e9.png)
2.非归档模式(NOARCHIVELOG)
非归档模式下的特点:
- 当检查点完成之后,后台进程LGWR可以覆盖原来的重做日志文件。
- 如果数据库备份后的重做日志内容以及被覆盖掉,那么当出现数据库文件损坏时,只能恢复到最近一次的完整备份点,而且这个备份点的时间手动无法控制,甚至可能会有数据丢失。
管理归档操作
1. 日志模式切换
--(1)查看当前日志模式
select log_mode from v$database;
--(2)关闭并重新启动数据库
shutdown immediate;
start mount;
说明:改变日志操作模式必须在mount状态下进行,另外,改变日志操作模式时,关闭数据库不能说使用shutdown about命令。
--(3)改变日志模式
alter database archivelog;
--(4)打开数据库
alter database open;
说明:若是要把归档日志模式改变成非归档日志模式,只需要将alter database archivelog 语句中的关键字改成“noarchivelog即可,其它步骤基本相同。”
2.配置归档进程
如果Oracle系统的后台进程LGWR经常出现等待的状态,就可以考虑启动多个ARCN进程
alter system set log_archive_max_processes=3;
说明:当数据库处于archivelog模式式,默认情况下Oracle会自动启动两个归档日志进程。
设置归档文件位置
1.本地归档目标
若在设置LOG_ARCHIVE_DEST_n参数时使用LOCATION关键字,则表示指定的归档目标在本地机器上。
--在本地机器上建立4个归档目标
alter system set log_archive_dest_1='location=D:\OracleFiles\archive1';
alter system set log_archive_dest_2='location=D:\OracleFiles\archive2';
alter system set log_archive_dest_3='location=D:\OracleFiles\archive3';
alter system set log_archive_dest_4='location=D:\OracleFiles\archive4';
在使用初始化参数LOG_ARCHIVE_DEST_n时,还可以指定OPTIONAL、MANDATORY、REOPEN选项。
OPTIONAL:该选项是默认选项,使用该选项时,无论“归档操作”是否执行成功,都可以覆盖重做日志文件;
MANDATORY:该选项用于强制进行“归档操作”,使用该选项后,只有归档成功后,重做日志文件才能被覆盖;
REOPEN:它用于设定重新归档的时间间隔,默认值为300秒。但需要注意的是,REOPEN属性必须跟在MANDATORY选项后。
alter system set log_archvie_dest_1='location=D:\OracleFiles\archive1 optional';
alter system set log_archvie_dest_2='location=D:\OracleFiles\archive2 mandatory';
alter system set log_archvie_dest_3='location=D:\OracleFiles\archive3 mandatory
reopen=400';
alter system set log_archvie_dest_4='location=D:\OracleFiles\archive4';
在本地机器上,设置最小归档数为3个
alter system set log_archive_min_succeed_dest=3;
禁用log_archive_dest_state_4对应的归档位置:
alter system set log_archive_dest_state_4=defer;
--如果激活相应的归档位置,则为enable,否则为defer
2. 远程归档目标
--建立一个远程归档目标,其目录位置在名称为‘MRKJ’的服务器上
alter system set log_archive_dest_1='service=MRKJ';
查看归档日志信息
使用数据字典和动态性能视图
--显示所有的归档目标参数名称
select dest_name from v$archive_dest;
字典视图 | 说明 |
V$DATABASE | 用于查询数据库是否处于归档模式 |
V$ARCHIVE_LOG | 包含控制文件中所有已经归档的日志信息 |
V$ARCHIVE_DEST | 包含所欲归档目标信息 |
V$ARCHIVE_PROCESSES | 包含已启动的ARCH进程信息 |
V$BACKUP_REDOLOG | 包含所有已经备份的归档日志信息 |
使用archive log list命令显示当前数据库的归档信息