粗看scn

SCN可以理解为数据库的内部时间。


查看当前系统的SCN号:
SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                56780435

or:


SQL> select current_scn from v$database;    \\\10g以后才有

CURRENT_SCN
-----------
   56780458


数据文件头会保存一个特殊的SCN(stop scn)。当数据库处于打开状态时,stop scn被设置为最大值0xffff.ffffffff。
在数据库正常关闭的过程中,stop scn被设置为当前系统的最大SCN值。在数据库打开的过程中,Oracle会比较各文件的stop scn
和checkpoint scn ,如果不一致,表明数据库先前没有正常关闭,需要做恢复。

检查点的scn是一个特殊的scn号,小于该号码的块都已经存盘了,数据库的恢复只需要恢复该scn号之一的操作就可以了。


scn号码和物理的时间对照表:

SQL> desc smon_scn_time
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 THREAD                                             NUMBER
 TIME_MP                                            NUMBER
 TIME_DP                                            DATE
 SCN_WRP                                            NUMBER
 SCN_BAS                                            NUMBER
 NUM_MAPPINGS                                       NUMBER
 TIM_SCN_MAP                                        RAW(1200)
 SCN                                                NUMBER
 ORIG_THREAD                                        NUMBER


SQL> select TIME_MP,TIME_DP,SCN from smon_scn_time where rownum<10;


   TIME_MP TIME_DP             SCN
---------- ------------ ----------
1430380240 30-APR-15      56622737
1430472313 01-MAY-15      56664969
1430472913 01-MAY-15      56665202
1430473214 01-MAY-15      56665316
1430473814 01-MAY-15      56665561
1430475014 01-MAY-15      56666229
1430292582 29-APR-15      56572596
1430517332 01-MAY-15      56685957
1430517935 01-MAY-15      56686286

9 rows selected.


查看数据库的检查点号:
SQL> col name for a40
SQL> select name ,checkpoint_change# from v$database;


NAME                                     CHECKPOINT_CHANGE#
---------------------------------------- ------------------
ORCL                                               56770975




查看数据文件的检查点号:
SQL> col name for a40
SQL> select name ,checkpoint_change# from v$datafile;


NAME                                     CHECKPOINT_CHANGE#
---------------------------------------- ------------------
/u01/app/oracle/oradata/orcl/system01.db           56770975
f


/u01/app/oracle/oradata/orcl/sysaux01.db           56770975
f


/u01/app/oracle/oradata/orcl/undotbs01.d           56770975
bf


/u01/app/oracle/oradata/orcl/users01.dbf           56770975
/u01/app/oracle/oradata/orcl/rmantbs01.d           56770975

NAME                                     CHECKPOINT_CHANGE#
---------------------------------------- ------------------
bf

/u01/app/oracle/oradata/orcl/test01.dbf            56770975
/u01/app/oracle/oradata/orcl/hclob01.dbf           56770975

7 rows selected.



SQL> select GROUP#,SEQUENCE#,STATUS,FIRST_CHANGE#,to_char(FIRST_TIME,'yyyy/mm/dd:hh24:mi:ss') time from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# TIME
---------- ---------- ---------------- ------------- -------------------
         1         13 CURRENT               56757295 2015/05/03:23:45:08
         2         11 INACTIVE              56664266 2015/05/01:17:00:16
         3         12 INACTIVE              56708688 2015/05/02:20:00:06




11号日志记录了56664266到56708688之间的数据库变化,12号日志记录了56708688到56757295的变化,
13号日志记录了56757295到最后scn之间的数据库变化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值