oracle的offline scn/online scn
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,offline scn/online scn 当表空间或数据文件被offline时,其对应的数据文件的scn会写入一个值,被称为offline scn. 不过有一些值得注意的地方, 我这里用实验来进行
千家信息网最后更新 2026年11月01日oracle的offline scn/online scnoffline scn/online scn
当表空间或数据文件被offline时,其对应的数据文件的scn会写入一个值,被称为offline scn. 不过有一些值得注意的地方, 我这里用实验来进行剖析,让大家更容易理解:
查看当前的4号表空间的scn SYS@hyyk> select file#,checkpoint_change# from v$datafile where ts#=4;
FILE# CHECKPOINT_CHANGE# ---------- ------------------ 4 1819632
SYS@hyyk> select file#,checkpoint_change# from v$datafile_header where ts#=4;
FILE# CHECKPOINT_CHANGE# ---------- ------------------ 4 1819632
SYS@hyyk> alter tablespace users offline;
Tablespace altered.
SQL> oradebug setmypid SQL> alter session set events 'immediate trace name CONTROLF level 4';
SQL> alter session set events 'immediate trace name FILE_HDRS level 3';
SQL> oradebug close_trace
SYS@hyyk> oradebug tracefile_name /u01/app/oracle/diag/rdbms/hyyk/hyyk/trace/hyyk_ora_25045.trc
控制文件 DATA FILE #4: name #4: /u01/app/oracle/oradata/hyyk/users01.dbf creation size=0 block size=8192 status=0x80 head=4 tail=4 dup=1 tablespace 4, index=4 krfil=4 prev_file=0 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00 Checkpoint cnt:201 scn: 0x0000.001be049 02/22/2018 13:02:20 Stop scn: 0x0000.001be049 02/22/2018 13:02:20 Creation Checkpointed at scn: 0x0000.00004649 08/15/2009 00:17:30 thread:0 rba:(0x0.0.0) enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000 .................. Offline scn: 0x0000.001bc3b5 prev_range: 1 Online Checkpointed at scn: 0x0000.001bc3f0 02/12/2018 11:35:20 thread:1 rba:(0x3c.183.10)
数据文件 DATA FILE #4: name #4: /u01/app/oracle/oradata/hyyk/users01.dbf creation size=0 block size=8192 status=0x80 head=4 tail=4 dup=1 tablespace 4, index=4 krfil=4 prev_file=0 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00 Checkpoint cnt:201 scn: 0x0000.001be049 02/22/2018 13:02:20 Stop scn: 0x0000.001be049 02/22/2018 13:02:20 Creation Checkpointed at scn: 0x0000.00004649 08/15/2009 00:17:30 thread:0 rba:(0x0.0.0) enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000 ....................... Offline scn: 0x0000.001bc3b5 prev_range: 1 ---offline scn Online Checkpointed at scn: 0x0000.001bc3f0 02/12/2018 11:35:20 ----如果该datafile online,那么该值将被更新 ...................... thread:1 rba:(0x3c.183.10) enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
首先,我们切换一次日志,再次观察checkpoint的变化: SQL> alter system switch logfile; SYS@hyyk> select file#,STATUS,CHECKPOINT_CHANGE#,ONLINE_CHANGE# from v$datafile; ---------------------------------------------- 控制文件
FILE# STATUS CHECKPOINT_CHANGE# ONLINE_CHANGE# ---------- ------- ------------------ -------------- 1 SYSTEM 1827251 945184 2 ONLINE 1827251 945184 3 ONLINE 1827251 945184 4 OFFLINE 1826889 1819632 5 ONLINE 1827251 974060 6 ONLINE 1827251 0 7 ONLINE 1827251 0 8 ONLINE 1827251 0
SYS@hyyk> select file#,STATUS,CHECKPOINT_CHANGE#,CHECKPOINT_COUNT from v$datafile_header order by 1; -------------------- 数据文件头部
FILE# STATUS CHECKPOINT_CHANGE# CHECKPOINT_COUNT ---------- ------- ------------------ ---------------- 1 ONLINE 1827251 201 2 ONLINE 1827251 201 3 ONLINE 1827251 126 4 OFFLINE 0 0 5 ONLINE 1827251 122 6 ONLINE 1827251 72 7 ONLINE 1827251 59 8 ONLINE 1827251 59
SYS@hyyk> alter tablespace users online;
Tablespace altered.
SQL> oradebug setmypid Statement processed. SQL> alter session set events 'immediate trace name CONTROLF level 4';
SQL> alter session set events 'immediate trace name FILE_HDRS level 3';
SQL> oradebug close_trace
SQL> oradebug tracefile_name /u01/app/oracle/diag/rdbms/hyyk/hyyk/trace/hyyk_ora_26044.trc
DATA FILE #4: name #4: /u01/app/oracle/oradata/hyyk/users01.dbf creation size=0 block size=8192 status=0xe head=4 tail=4 dup=1 tablespace 4, index=4 krfil=4 prev_file=0 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00 Checkpoint cnt:202 scn: 0x0000.001be1dd 02/22/2018 13:20:24 Stop scn: 0xffff.ffffffff 02/22/2018 13:02:20 Creation Checkpointed at scn: 0x0000.00004649 08/15/2009 00:17:30 thread:0 rba:(0x0.0.0) enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
Offline scn: 0x0000.001be049 prev_range: 2 Online Checkpointed at scn: 0x0000.001be1dd 02/22/2018 13:20:24
thread:1 rba:(0x3f.8.10) enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
从上面的小实验,我们可以得出如下结论:
1. archivelog模式下,当表空间offline时,其对应的数据文件头stop scn会更新,同时controlfile中该datafile 的stop scn信息也会更新. 此时也会更新offline scn,并且offline scn等于stop scn.
2. 当online后,对应的数据文件头的online scn等于datafile checkpoint scn值。
3. 当online后,controlfile中关于该表空对应的datafile和对应的数据文件头的stop scn都会重新被置于最大值,即为无穷大.
当表空间或数据文件被offline时,其对应的数据文件的scn会写入一个值,被称为offline scn. 不过有一些值得注意的地方, 我这里用实验来进行剖析,让大家更容易理解:
查看当前的4号表空间的scn SYS@hyyk> select file#,checkpoint_change# from v$datafile where ts#=4;
FILE# CHECKPOINT_CHANGE# ---------- ------------------ 4 1819632
SYS@hyyk> select file#,checkpoint_change# from v$datafile_header where ts#=4;
FILE# CHECKPOINT_CHANGE# ---------- ------------------ 4 1819632
SYS@hyyk> alter tablespace users offline;
Tablespace altered.
SQL> oradebug setmypid SQL> alter session set events 'immediate trace name CONTROLF level 4';
SQL> alter session set events 'immediate trace name FILE_HDRS level 3';
SQL> oradebug close_trace
SYS@hyyk> oradebug tracefile_name /u01/app/oracle/diag/rdbms/hyyk/hyyk/trace/hyyk_ora_25045.trc
控制文件 DATA FILE #4: name #4: /u01/app/oracle/oradata/hyyk/users01.dbf creation size=0 block size=8192 status=0x80 head=4 tail=4 dup=1 tablespace 4, index=4 krfil=4 prev_file=0 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00 Checkpoint cnt:201 scn: 0x0000.001be049 02/22/2018 13:02:20 Stop scn: 0x0000.001be049 02/22/2018 13:02:20 Creation Checkpointed at scn: 0x0000.00004649 08/15/2009 00:17:30 thread:0 rba:(0x0.0.0) enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000 .................. Offline scn: 0x0000.001bc3b5 prev_range: 1 Online Checkpointed at scn: 0x0000.001bc3f0 02/12/2018 11:35:20 thread:1 rba:(0x3c.183.10)
数据文件 DATA FILE #4: name #4: /u01/app/oracle/oradata/hyyk/users01.dbf creation size=0 block size=8192 status=0x80 head=4 tail=4 dup=1 tablespace 4, index=4 krfil=4 prev_file=0 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00 Checkpoint cnt:201 scn: 0x0000.001be049 02/22/2018 13:02:20 Stop scn: 0x0000.001be049 02/22/2018 13:02:20 Creation Checkpointed at scn: 0x0000.00004649 08/15/2009 00:17:30 thread:0 rba:(0x0.0.0) enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000 ....................... Offline scn: 0x0000.001bc3b5 prev_range: 1 ---offline scn Online Checkpointed at scn: 0x0000.001bc3f0 02/12/2018 11:35:20 ----如果该datafile online,那么该值将被更新 ...................... thread:1 rba:(0x3c.183.10) enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
首先,我们切换一次日志,再次观察checkpoint的变化: SQL> alter system switch logfile; SYS@hyyk> select file#,STATUS,CHECKPOINT_CHANGE#,ONLINE_CHANGE# from v$datafile; ---------------------------------------------- 控制文件
FILE# STATUS CHECKPOINT_CHANGE# ONLINE_CHANGE# ---------- ------- ------------------ -------------- 1 SYSTEM 1827251 945184 2 ONLINE 1827251 945184 3 ONLINE 1827251 945184 4 OFFLINE 1826889 1819632 5 ONLINE 1827251 974060 6 ONLINE 1827251 0 7 ONLINE 1827251 0 8 ONLINE 1827251 0
SYS@hyyk> select file#,STATUS,CHECKPOINT_CHANGE#,CHECKPOINT_COUNT from v$datafile_header order by 1; -------------------- 数据文件头部
FILE# STATUS CHECKPOINT_CHANGE# CHECKPOINT_COUNT ---------- ------- ------------------ ---------------- 1 ONLINE 1827251 201 2 ONLINE 1827251 201 3 ONLINE 1827251 126 4 OFFLINE 0 0 5 ONLINE 1827251 122 6 ONLINE 1827251 72 7 ONLINE 1827251 59 8 ONLINE 1827251 59
SYS@hyyk> alter tablespace users online;
Tablespace altered.
SQL> oradebug setmypid Statement processed. SQL> alter session set events 'immediate trace name CONTROLF level 4';
SQL> alter session set events 'immediate trace name FILE_HDRS level 3';
SQL> oradebug close_trace
SQL> oradebug tracefile_name /u01/app/oracle/diag/rdbms/hyyk/hyyk/trace/hyyk_ora_26044.trc
DATA FILE #4: name #4: /u01/app/oracle/oradata/hyyk/users01.dbf creation size=0 block size=8192 status=0xe head=4 tail=4 dup=1 tablespace 4, index=4 krfil=4 prev_file=0 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00 Checkpoint cnt:202 scn: 0x0000.001be1dd 02/22/2018 13:20:24 Stop scn: 0xffff.ffffffff 02/22/2018 13:02:20 Creation Checkpointed at scn: 0x0000.00004649 08/15/2009 00:17:30 thread:0 rba:(0x0.0.0) enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
Offline scn: 0x0000.001be049 prev_range: 2 Online Checkpointed at scn: 0x0000.001be1dd 02/22/2018 13:20:24
| ---从这里可以看到,文件头的online scn值也更新了。 |
从上面的小实验,我们可以得出如下结论:
1. archivelog模式下,当表空间offline时,其对应的数据文件头stop scn会更新,同时controlfile中该datafile 的stop scn信息也会更新. 此时也会更新offline scn,并且offline scn等于stop scn.
2. 当online后,对应的数据文件头的online scn等于datafile checkpoint scn值。
3. 当online后,controlfile中关于该表空对应的datafile和对应的数据文件头的stop scn都会重新被置于最大值,即为无穷大.
文件
数据
更新
空间
实验
控制
最大
信息
再次
同时
地方
头部
无穷大
日志
最大值
模式
结论
面的
中关
切换
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技图片
互联网佳科技有限公司
重生之互联网科技帝国
互联网科技公司的优势
互联网科技保险
互联网 卓越科技
互联网与新科技
互联网汽车科技小镇
互联网教育科技公司vipkid
创业天下互联网科技有限公司
承德科技产业互联网发展
以后互联网后是啥科技
玉溪互联网科技怎么选
爱医互联网络科技
工业互联网山东科技大学
银行科技岗属于互联网吗
江苏互联网智能科技软件
扫呗互联网科技有限公司
全球科技与互联网公司市值变化
互联网科技收购价值
互联网科技公司简介
互联网医疗科技
互联网科技logo
广州紫鲸互联网科技
互联网科技中介
央行互联网金融科技公司
花神(南京)互联网科技有限公司
厦门江牛科技互联网
河南商务圈互联网科技有限公司
互联网企业和网络科技有限公司