oracle数据库同步异步优劣点,Oracle 同步、异步完全检查点

Oracle 同步、异步完全检查点

Oracle检查点分为:全量检查点和增量检查点,全量检查点分为同步全量检查点和异步全量检查点。

全量检查点

从当前(也就是最新的)重做记录开始,LGWR将所有的重做记录写入到redo log文件中,DBWn进程将当前重做记录之前产生的脏数据块写入到数据文件中,最后CKPT将检查点SCN写入到数据文件头和控制文件中。

同步全量检查点优先级高,检查点没有完成,命令不会返回。包括:除shutdown abort之外的其他关闭命令,以及alter system checkpoint命名。针对表空间文件的全量检查点命令alter tablespace offline、online、begin backup、end backup、readonly、readwrite,这些命令会修改对应表空间文件的文件头检查点SCN以及控制文件中文件SCN。

异步全量检查点优先级低,检查点没有完成(可能是没有将redo buffer全部写入到redo log file、可能正在归档、也可能是脏数据还没有写入到data file中)的情况下就会返回命令,比如alter systemswitch logfile(将在后续试验中证明该命令是异步全量检查点)以及日志的自动却换。

增量检查点

取一条重做记录,该重做记录由oracle内部决定,LGWR将该重做记录之前的数据写入到在线日志文件中,DBWN将该重做日志之前的脏数据写入到data file中,最后CKPT进程将检查点SCN记录到控制文件中。需要仔细得体会下增量检查点与异步全量检查点的区别。

实验

实验一

目的:

证明alter system checkpoint为同步全量检查点,alter system switch logfile为异步全量检查点。

过程:

1、  开启检查点alert信息。

alter system set log_checkpoints_to_alert= true;

2、  监控alert文件

tail -f alert_orcl.log

3、  查看控制文件检查点SCN、查看控制文件文件头SCN、查看文件头SCN。

select t.NAME,t.CHECKPOINT_CHANGE#,t.CHECKPOINT_TIME,t.CHECKPOINT_COUNT from v$datafile_headert;--文件头检查点scn

select t.CHECKPOINT_CHANGE#,T.CURRENT_SCN fromv$database t;--控制文件检查点scn

select t.NAME,t.CHECKPOINT_CHANGE#,T.LAST_CHANGE#,t.CHECKPOINT_TIME fromv$datafile t;---控制文件文件头检查点SCN

查看控制文件检查点SCN、查看控制文件文件头SCN、查看文件头SCN都是16341058。

4、  执行alter system checkpoint。

5、  查看alert日志信息。

Beginning global checkpoint up to RBA [0xe7.ffd4.10],SCN:16348837

Completed checkpoint up to RBA[0xe7.ffd4.10], SCN:16348837

开始了一个全局检查点,检查点SCN为16348837,并立即返回完成检查点,这就是同步全量检查点。

6、再次查看控制文件检查点SCN、查看控制文件文件头SCN、查看文件头SCN。

结果全为16348837。与alert日志中的信息一致。

7、执行alter system switch logfile,手动切换日志

8、查看alert日志信息

Beginning log switch checkpoint up to RBA [0xe8.2.10],SCN: 16348963

Thread 1 advanced to log sequence 232 (LGWR switch)

Current log# 1 seq# 232 mem# 0:/u01/app/oracle/oradata/orcl/redo01.log

Tue May 07 22:21:32 2013

Archived Log entry 15 added for thread 1sequence 231 ID 0x4f6b0381 dest 1:

开始一个log switch检查点,并切换了日志,归档了在线日志文件,检查点没有完成。

9、再次查看控制文件检查点SCN、查看控制文件文件头SCN、查看文件头SCN。

结果全为16348837。没有发生变化。

10、过了一段时间后,alert日志自动刷新了,

Tue May 07 22:25:54 2013

Completed checkpoint up to RBA[0xe8.2.10], SCN:16348963

提示完成了检查点。这就是异步完全检查点,并不立即返回检查点结果。

11、再次查看控制文件检查点SCN、查看控制文件文件头SCN、查看文件头SCN。

检查点SCN全为16348963。这就是异步全量检查点,并不会立即完成检查点,完成检查点后会更新控制文件和数据文件头的检查点SCN。

12、 查看日志文件select * from v$log;

状态为current的日志文件的开始SCN也是16348963。

总结

综上所述,alter systemcheckpoint为同步全量检查点,alter system switch logfile为异步全量检查点,两者都能调用CKPT进程将检查点SCN设置到控制文件和数据文件中。两则区别在于,一个是立刻返回并设置检查点SCN,一个是延迟返回并设置检查点SCN

实验二

增量检查点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值