DBA之路---oracle的标准时间SCN

oracle的标准时间SCN

作为oracle中区分数据库不同操作的时间号,作为oracle中的北京标准时间存在。如果采取时间区分的话必定会涉及到时区变化的处理,不同时区不同时间的记录会导致无法区分执行顺序。所以采取SCN方式用于标定标准时间。

SCN常用于设定检查点,用于数据损坏时依照重启时获取的SCN与数据库本地记录的SCN数据,用于确定恢复保存在在线重做日志文件中数据的两个基准时间

#以下操作建议使用sys权限用户

select dbms_flashback.get_system_change_number from dual;
 #查看当前执行的标准时间
select checkpoint_change from v$database
 #查看数据库保存基准时间(checkpoint机制被触发时所使用的SCN)
select GROUP#, STATUS, FIRST_CHANGE# from v$log;
 #查看当前数据库记录所有分组的scn值,以及数据库真正做故障恢复所采用的时间节点记录组current
  1	INACTIVE	567994
  2	CURRENT	    573874 #做故障恢复,执行crash recobery时使用的时此时间节点的日志
  3	INACTIVE	534907
  
select dbms_flashback.get_system_change_number from dual;
 #查询当前redo重放日志所记录的最后一次commit时间。

SCN与redo重放日志工作原理

#oracle数据库每次进行更新后,DBMS会自动维护和累积一个数字。该数字为SCN
#而只有发生过commit,LGWR日志写入进程才会将数据和增加的SCN值写入redo日志文件中供后续恢复使用
#所以只有我们的操作事务完成commit transaction时和交易成功讯息返回之前的这个时间段内,等待LRGWR完成写入redo重放日志后才能看到commit成功的信息
  select dbms_flashback.get_system_change_number from dual;#可以查到commit最后一次写入redo日志的scn时间

SCN与checkpoint关联工作原理

#首先要知道,当数据库进行一个commit交易时,oracle进程会先将redoBuffer日志缓冲区(所有不完成提交的数据都会存放在这里)对应的commit内容写入到redo重放日志文件中,但是不会立即将其写入到物理磁盘数据文件中,用以方式多事务提交下导致磁盘IO过高影响数据库查询性能。会采取batch(批量写入)方式进行写入
#以上过程称为checkpoint

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值