关于System Change Number(SCN)的常用操作

--查看一下系统当前SCN

sys@TESTDB11>select current_scn from v$database;

 

CURRENT_SCN

-----------

    2543498

   

--查看一下更新语句的操作的SCN,确定它应该比系统当前SCN

-- 26caed从对应的redo record中获取

sys@TESTDB11>select to_number('26caed', 'xxxxxxxxx') from dual;

 

TO_NUMBER('26CAED','XXXXXXXXX')

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

                        2542317

                       

--RBA: redo byte address (日志序号.块号.行号  redo记录的RBA)

--经常做16进制转换,可以考虑使用替换变量,到前面确定一下当前的日志序号是否为87

sys@TESTDB11>select to_number('&a', 'xxxxxxxxx') from dual;

Enter value for a: 57

old   1: select to_number('&a', 'xxxxxxxxx') from dual

new   1: select to_number('57', 'xxxxxxxxx') from dual

 

TO_NUMBER('57','XXXXXXXXX')

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

                         87

                        

--AFNAbsolute File Number)绝对文件编号. 查看CHANGE #3, AFN:3, 确定3号文件是undo表空间中的文件

sys@TESTDB11>select file#, name from v$datafile;

 

     FILE# NAME

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

         1 /u01/app/oracle/oradata/TestDB11/system01.dbf

         2 /u01/app/oracle/oradata/TestDB11/sysaux01.dbf

         3 /u01/app/oracle/oradata/TestDB11/undotbs01.dbf

         4 /u01/app/oracle/oradata/TestDB11/users01.dbf

         5 /u01/app/oracle/oradata/TestDB11/example01.dbf

        

sys@TESTDB11>select tablespace_name, file_name from dba_data_files;

 

TABLESPACE_NAME                FILE_NAME

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

USERS                          /u01/app/oracle/oradata/TestDB11/users01.dbf

UNDOTBS1                       /u01/app/oracle/oradata/TestDB11/undotbs01.dbf

SYSAUX                         /u01/app/oracle/oradata/TestDB11/sysaux01.dbf

SYSTEM                         /u01/app/oracle/oradata/TestDB11/system01.dbf

EXAMPLE                        /u01/app/oracle/oradata/TestDB11/example01.dbf

 

--查看系统默认的undo表空间(确定正是UNDOTBS1)

sys@TESTDB11>show parameter undo

 

NAME                                 TYPE        VALUE

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

undo_management                      string      AUTO

undo_retention                       integer     900

undo_tablespace                      string      UNDOTBS1                       

 

--DBA (Data Block Address  CHANGE #3 DBA:0x00c00301)

sys@TESTDB11>select to_number('c00301', 'xxxxxxxxxx') from dual;

 

TO_NUMBER('C00301','XXXXXXXXXX')

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

                        12583681

--确定这个DBA地址对应于哪个文件哪个块

sys@TESTDB11>select dbms_utility.data_block_address_file(12583681) file#,

  2  dbms_utility.data_block_address_block(12583681) block# from dual;

 

     FILE#     BLOCK#

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

         3        769

 

--查看修改之前工资1600对应的16进制值, redo日志中CHANGE #3内容对比,可以确定CHANGE #3记录的是修改之前的值

sys@TESTDB11>select dump(1600, 16) from dual;

 

DUMP(1600,16)

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

Typ=2 Len=2: c2,11

 

--识别修改的那行记录

scott@TESTDB11>select rowid from emp where empno = 7499;

 

ROWID

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

AAASb2AAEAAAACXAAB

 

--rowid转换为文件..  redo中记录的信息进行对比

scott@TESTDB11>select dbms_rowid.rowid_relative_fno('AAASb2AAEAAAACXAAB') file#,

  2  dbms_rowid.rowid_block_number('AAASb2AAEAAAACXAAB') block#,

  3  dbms_rowid.rowid_row_number('AAASb2AAEAAAACXAAB') row# from dual;

 

     FILE#     BLOCK#       ROW#

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

         4        151          1

--查看CHANGE #1中的 AFN:4 DBA:0x01000097, 可以确定CHANGE记录的是对数据文件中的改变

sys@TESTDB11>select to_number('1000097', 'xxxxxxxxxxx') from dual;

 

TO_NUMBER('1000097','XXXXXXXXXXX')

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

                          16777367

        

sys@TESTDB11>select dbms_utility.data_block_address_file(16777367) file#,

  2  dbms_utility.data_block_address_block(16777367) block# from dual;

 

     FILE#     BLOCK#

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

         4        151  

 

--先操作的数据先恢复,后操作的数据后恢复

--发生检查点事件,也会产生SCN(假设为1000),要要求将data buffer cache scn < 1000的数据块写到数据文件

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1151253/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17013648/viewspace-1151253/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值