Oracle日志操作模式

Oracle数据库包含两种日志操作模式:NONARCHIVELOG和ARCHIVELOG。
3.1 NONARCHIVELOG模式
非归档模式是指不保留重做记录的日志操作模式。这种模式只能适合于实例恢复,不适合于介质恢复。特点:
1、 当检查点完成之后,LGWR进程可以覆盖重作日志内容。
2、 数据库恢复只能恢复到过去的某个完全备份点
3、 数据库处于OPEN状态时,不能够备份数据库
4、 执行数据库备份时,只能执行SHUTDOWN IMMEDIATE、SHUTDOWN NORMAL、SHUTDOWN TRANSACTIONAL。
5、 执行数据库备份时,必须备份所有的控制文件和重做日志文件。

3.2 ARCHIVELOG模式
归档模式是指能够保留重做记录的日志操作模式,这种模式适合于实例和介质恢复,当数据库处于归档模式时,后台进程LGWR会在日志切换的时候,将重做日志的内容复制到归档日志文件中。特点:
1、 可以在数据库处于OPEN状态备份数据库
2、 出现介质失败时,除了SYSTEM表空间之外,其他表空间的数据文件可以在OPEN状态恢复。
3、 数据库恢复可以执行完全恢复,也可以执行基于时间点的恢复。

3.3 改变日志操作模式
Oracle建议OLTP系统应采用ARCHIVELOG模式,数据仓库系统采用NONARCHIVELOG。另外开发的时候可以采用NONARCHIVELOG,投入生产时使用ARCHIVELOG。
改变日志操作模式必须以SYSDBA或者SYSOPER身份执行,具体的操作如下:
1、 检查日志操作模式


2、 关闭数据库

3、 改变日志操作模式

只有在实例已启动数据块已经装载但是未被打开的情况下才能更改日志运行模式。

注意:从oracle 10g开始,数据库设置为archivelog模式后,arcH进程自动启动,而之前的版本需要配置初始化参数log_archive_start=true;


3.4 配置其他归档参数
从oracle 10g开始,归档日志会存放在快速恢复区所对应的目录(对应初始化参数db_recovery_file_dest)。如需要改变归档日志文件的位置或名称,需要进行修改配置参数。

1、 配置归档日志文件的名称格式
初始化参数log_archive_format设置归档日志的名称格式,使用的通配符如下:
 %s:日志序列号
 %S:日志序列号(带前导0)
 %t:重做线程编号
 %T:重做线程编号(带前导0)
 %d:数据库ID号
 %r:RESETLOGS的ID值
注意:oracle 10g开始,%s、%t、%r是必须的,因为log_archive_format参数是静态的的,所以修改之后需要重启数据库。示例如下:
SQL>alter system set log_archive_format=’%s_%t_%r.log’ scope=spfile;
SQL>shutdown;
SQL>startup;

2、 使用log_archive_dest_n配置归档的位置
初始化参数log_archive_dest_n用于指定多个归档日志的位置,n表示1到10的整数。使用这个参数不仅可以配置本地多个归档日志的位置,也可以配置远程归档位置。该参数与log_archive_dest(指定第一个位置)与log_archive_duplex_dest(指定第二个位置)的区别。
 log_archive_dest_n可以配置本地的归档位置和远程的归档位置,而其他两个只能配置本地归档位置。
 log_archive_dest_n可以配置10个归档位置,而其他两个只能配置最多两个归档位置。
 log_archive_dest_n不能与其他两个同时使用。
使用示例:
SQL>alter system set log_archive_dest_1=’location=C:/demo/log optional’;
SQL>alter system set log_archive_dest_2=’location=D:/demo/log mandatory’;
SQL>alter system set log_archive_dest_1=’service=afei’;(远程归档)
其中optional是默认的选项,表示无论归档是否成功,都可以覆盖重做日志,mandatory表示只有归档成功之后才能覆盖重做日志。

3、 使用log_archive_dest_state_n控制归档的位置
如果归档的位置出现磁盘空间不够,那么归档将失败,为了解决这个问题,可能需要临时禁用相应的规定位置,而这个参数正好可以用来控制该规定日志位置是否可用。Enable表示可用(默认值),而defer表示不可用。示例:
SQL>alter system set log_archive_dest_state_2=defer;

4、 使用log_archive_max_processes控制归档进程的个数
默认情况下,oracle会启动两个归档进程,示例:
SQL>alter system set log_archive_max_processes=4;

5、 使用log_archive_min_succeed_dest控制最小日志归档成功个数
SQL>alter system set log_archive_min_succeed_dest=2;
执行以上语句之后,如果本地生成的归档日志数小于两个,就不能覆盖重做日志。
3.5 显示归档信息
1、 使用archive log list
2、 显示归档日志信息
SQL>select name,sequence#,first_changed# from v$archived_log;
3、 显示归档日志的位置
SQL>select dest_name,destination,status from v$archive_dest;
4、 显示日志历史信息
SQL>select * from v$loghist;
5、 显示归档进程信息
SQL>select * from v$archive_processes;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值