oracle检查点相关(一)

oracle查看当前的检查点
 
SQL> select CURRENT_SCN from v$database;
 
CURRENT_SCN
-----------
    2160376
 
SQL> select CURRENT_SCN,scn_to_timestamp(current_scn) from v$database;
 
CURRENT_SCN
-----------
SCN_TO_TIMESTAMP(CURRENT_SCN)
---------------------------------------------------------------------------
    2160439
27-NOV-17 10.37.28.000000000 PM
 
scn记录在control file
dump control file
 
SQL> alter session set events 'immediate trace name controlf level 2';
 
Session altered.
 
SQL> select * from v$diag_info;
 
/u01/app/oracle/diag/rdbms/testdb1/testdb1/trace/testdb1_ora_27659.trc
 
 
信息如下:
 
DATABASE ENTRY
***************************************************************************
 (size = 316, compat size = 316, section max = 1, section in-use = 1,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 1, numrecs = 1)
 11/16/2017 20:31:49
 DB Name "TESTDB1"
 Database flags = 0x40404001 0x00001200
 Controlfile Creation Timestamp  11/16/2017 20:31:49
 Incmplt recovery scn: 0x0000.00000000
 Resetlogs scn: 0x0000.000e2006 Resetlogs Timestamp  11/16/2017 20:31:51
 Prior resetlogs scn: 0x0000.00000001 Prior resetlogs Timestamp  08/24/2013 11:37:30
 Redo Version: compatible=0xb200400
 #Data files = 6, #Online files = 6
 Database checkpoint: Thread=1 scn: 0x0000.0020e2c0
 Threads: #Enabled=1, #Open=1, Head=1, Tail=1
 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 
转成scn 10进制:
SQL> select to_number('0e2006','xxxxxxxxxxxxxxxxxxxxxxxxxxxxx') from dual;
 
TO_NUMBER('0E2006','XXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
---------------------------------------------------
                                             925702
 
 
在v$datafile_head也是有文件头;
 
 
SQL> select file#,checkpoint_change# from v$datafile_header;
 
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            2155200
         2            2155200
         3            2155200
         4            2155200
         5            2155200
         6            2155200
 
6 rows selected.
 
只有发生检查点的时候会写入文件头:
 
SQL> alter system checkpoint;
 
System altered.
 
SQL> select file#,checkpoint_change# from v$datafile_header;
 
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            2161353    checkponit SCN
         2            2161353
         3            2161353
         4            2161353
         5            2161353
         6            2161353
 
6 rows selected.
 

RBA就是redo byte address
第一个部分sequence:
 
 
SQL> select group#,sequence#,members from v$log;
 
    GROUP#  SEQUENCE#    MEMBERS
---------- ---------- ----------
         1        151          1
         2        149          1
         3        150          1
 
SQL> alter system switch logfile;
 
System altered.
 
SQL> select group#,sequence#,memberS,STATUS from v$log;
 
    GROUP#  SEQUENCE#    MEMBERS STATUS
---------- ---------- ---------- --------------------
         1        151          1 ACTIVE
         2        152          1 CURRENT
         3        150          1 INACTIVE
第二部分是文件的第一个块:
 
 
RBA=SEQUENCE+BLOCK+OFFSET
 
 
 
 
SQL> select * from testogg where rownum <2;
 
        ID ID2
---------- --------------------
       356 356oggtest1
 
SQL> update testogg set id2='AAAAAA' where id=356;
 
1 row updated.
 
SQL> commit;
 
Commit complete.
 
SQL> select * from v$logfile;
 
    GROUP# STATUS                TYPE
---------- --------------------- ---------------------
MEMBER
--------------------------------------------------------------------------------
IS_RECOVE
---------
         3                       ONLINE
/u01/app/oracle/oradata/testdb1/redo03.log
NO
 
         2                       ONLINE
/u01/app/oracle/oradata/testdb1/redo02.log
NO
 
    GROUP# STATUS                TYPE
---------- --------------------- ---------------------
MEMBER
--------------------------------------------------------------------------------
IS_RECOVE
---------
 
         1                       ONLINE
/u01/app/oracle/oradata/testdb1/redo01.log
NO
 
 
2号组对应:/u01/app/oracle/oradata/testdb1/redo02.log
 
dump对应的日志文件
 
 
SQL> alter system dump logfile '/u01/app/oracle/oradata/testdb1/redo02.log';
 
System altered.
 
SQL> select * from v$diag_info;     
 
 
Default Trace File
/u01/app/oracle/diag/rdbms/testdb1/testdb1/trace/testdb1_ora_30396.trc
 
 
修改前的值转化成16进制
 
SQL> select dump('356oggtest1',16) FROM DUAL;
 
DUMP('356OGGTEST1',16)
--------------------------------------------------------------------------------
Typ=96 Len=11: 33,35,36,6f,67,67,74,65,73,74,31
 
 
在日志文件中找到,相应的日志文件如下:
 
 
REDO RECORD - Thread:1 RBA: 0x000098.00001d56.0010 LEN: 0x0228 VLD: 0x05
SCN: 0x0000.002102a5 SUBSCN:  1 11/27/2017 23:17:41
(LWN RBA: 0x000098.00001d56.0010 LEN: 0002 NST: 0001 SCN: 0x0000.002102a5)
CHANGE #1 TYP:0 CLS:25 AFN:3 DBA:0x00c000c0 OBJ:4294967295 SCN:0x0000.0021028e SEQ:1 OP:5.2 ENC:0 RBL:0
ktudh redo: slt: 0x0009 sqn: 0x000007ae flg: 0x0012 siz: 168 fbi: 0
            uba: 0x00c0020b.01e4.0c    pxid:  0x0000.000.00000000
CHANGE #2 TYP:0 CLS:26 AFN:3 DBA:0x00c0020b OBJ:4294967295 SCN:0x0000.0021028d SEQ:3 OP:5.1 ENC:0 RBL:0
ktudb redo: siz: 168 spc: 6764 flg: 0x0012 seq: 0x01e4 rec: 0x0c
            xid:  0x0005.009.000007ae
ktubl redo: slt: 9 rci: 0 opc: 11.1 [objn: 87501 objd: 87504 tsn: 7]
Undo type:  Regular undo        Begin trans    Last buffer split:  No
Temp Object:  No
Tablespace Undo:  No
             0x00000000  prev ctl uba: 0x00c0020b.01e4.09
prev ctl max cmt scn:  0x0000.0020fe6d  prev tx cmt scn:  0x0000.0020fe78
txn start scn:  0xffff.ffffffff  logon user: 85  prev brb: 12585597  prev bcl: 0 BuExt idx: 0 flg2: 0
KDO undo record:
KTB Redo
op: 0x03  ver: 0x01
compat bit: 4 (post-11) padding: 1
op: Z
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x01800083  hdba: 0x01800082
itli: 2  ispac: 0  maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 0
ncol: 2 nnew: 1 size: 5
col  1: [11]  33 35 36 6f 67 67 74 65 73 74 31
CHANGE #3 TYP:2 CLS:1 AFN:6 DBA:0x01800083 OBJ:87504 SCN:0x0000.001af770 SEQ:1 OP:11.5 ENC:0 RBL:0
KTB Redo
op: 0x11  ver: 0x01
compat bit: 4 (post-11) padding: 1
op: F  xid:  0x0005.009.000007ae    uba: 0x00c0020b.01e4.0c
Block cleanout record, scn:  0x0000.002102a5 ver: 0x01 opt: 0x02, entries follow...
  itli: 1  flg: 2  scn: 0x0000.001af770
 
 
...
  itli: 1  flg: 2  scn: 0x0000.001af770
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x01800083  hdba: 0x01800082
itli: 2  ispac: 0  maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 2 ckix: 0
ncol: 2 nnew: 1 size: -5
col  1: [ 6]  41 41 41 41 41 41
CHANGE #4 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:0 OP:5.20 ENC:0
session number   = 202
serial  number   = 38997
transaction name =
version 186647552
audit sessionid 52438
Client Id =
login   username = OGGTEST
 
找出objectname:
SQL> select object_name from dba_objects where data_object_id ='87504';
 
OBJECT_NAME
--------------------------------------------------------------------------------
TESTOGG
 
 
 
0x000098.00001d56.0010 
 
000098 = 152
 
00001d56= 7510
 
0010=16
 
 
 
 
 
 
posted @ 2017-11-28 11:15  修行从29开始  阅读(315)  评论(0编辑  收藏  举报