oracle哈希检查数据一致性,数据文件SCN的一致性问题

数据文件SCN的一致性问题

6ee5639a40442445944d63b514b2dd02.png

1、数据库正常运行中,所有数据文件的SCN都是一致的吗?

2、将一数据文件offline后,再将其online时,这个数据文件的SCN会前提吗?假如是,前提到的SCN是怎么确定的?

1.数据库正常运行时,所有数据文件的SCN不一定一致。

问题在这个所有上,比如Offline表空间,数据文件的SCN会被冻结,而且表空间的数据文件offline/online时又会发生文件检查点,使单个数据文件SCN和数据库其他问题不一致。

2.表空间online时,Oracle会取得当前SCN,解冻offline文件SCN,和当前SCN同步。

简单的实验就可以清晰地看到这些变化:

SQL> set echo on

SQL> @a

SQL> alter system checkpoint;

System altered.

SQL> select file#,checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#

---------- ------------------

1 546198149

2 546198149

3 546198149

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

546198149

SQL> alter tablespace users offline;

Tablespace altered.

SQL> select file#,checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#

---------- ------------------

1 546198149

2 546198149

3 546198153

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

546198159

SQL> alter tablespace users online;

Tablespace altered.

SQL> select file#,checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#

---------- ------------------

1 546198149

2 546198149

3 546198162

SQL>

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

546198178

如果是单纯的offline datafile,那么将不会触发文件检查点,只有针对offline tablespace的时候才会触发文件检查点,这也是为什么online datafile需要media recovery而online tablespace不需要。

By eygle on 2005-08-06 23:28 |

Comments (6) |

Backup&Recovery | 368 |

6 Comments

对于数据文件的offline我补充一点吧,如果是单纯的offline datafile,那么将不会触发文件检查点,只有针对offline tablespace的时候才会触发文件检查点,这也是为什么online datafile需要media recovery而online tablespace不需要。

有个问题,想请教一下啊?

对于第二点:我的理解也是这样的,但现在看到一个问题

2.表空间online时,Oracle会取得当前SCN,解冻offline文件SCN,和当前SCN同步。

SQL> alter tablespace users online;

Tablespace altered.

SQL> select file#,checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#

---------- ------------------

1 546198149

2 546198149

3 546198162

SQL>

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

546198178

这两个所看到的并不一致啊?

数据库的SCN会不停变化的,GET_SYSTEM_CHANGE_NUMBER获得的是当前SCN,会高于数据文件的SCN的.

我对通过dbms_flashback.get_system_change_number 是不断的变化,并没有像eygle大师那样说的情况。。

但是select file#,checkpoint_change# from v$datafile

是offline然后online之后就可以了。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值