« 当Oracle9i的OPTIMIZER_MODE = FIRST_ROWS时EXP过慢的解决方法 | Blog首页 | 对referrers.cgi(反向链接)的一点调整 »
数据文件SCN的一致性问题
作者:eygle | 【转载请注出处】|【云和恩墨 领先的zData数据库一体机 | zCloud PaaS云管平台 | SQM SQL审核平台 | ZDBM 数据库备份一体机】
链接:https://www.eygle.com/archives/2005/08/eiaescnaeooeaoi.html
回答几个留言板上的问题:链接:https://www.eygle.com/archives/2005/08/eiaescnaeooeaoi.html
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不需要。
实验结果是最好的明证。
历史上的今天...
>> 2012-08-06文章:
>> 2010-08-06文章:
>> 2009-08-06文章:
>> 2008-08-06文章:
>> 2007-08-06文章:
历史上的今天...
>> 2012-08-06文章:
>> 2010-08-06文章:
>> 2009-08-06文章:
>> 2008-08-06文章:
>> 2007-08-06文章:
By eygle on 2005-08-06 23:28 | Comments (6) | Backup&Recovery | 368 |
对于数据文件的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之后就可以了。。
Hopewell_Go 说的是什么意思啊?我没大看明白