[20150414]只读表空间与没有提交事务.txt

[20150414]只读表空间与没有提交事务.txt

--如果1个表空间在设置只读前,存在没有提交的事务,会出现什么情况呢?自己做1个测试:

1.建立测试环境:
SCOTT@test> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- ----------------------------------------------------------------
x86_64/Linux 2.4.xx            10.2.0.4.0     Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

CREATE TABLESPACE MSSM DATAFILE
  '/mnt/ramdisk/test/mssm01.dbf' SIZE 16M AUTOEXTEND OFF
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT MANUAL
FLASHBACK ON;

create table scott.deptx tablespace mssm as selct * from scott.dept ;

RMAN> report schema ;
Report of database schema

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    510      SYSTEM               ***     /mnt/ramdisk/test/system01.dbf
2    350      UNDOTBS1             ***     /mnt/ramdisk/test/undotbs01.dbf
3    370      SYSAUX               ***     /mnt/ramdisk/test/sysaux01.dbf
4    100      USERS                ***     /mnt/ramdisk/test/users01.dbf
5    100      EXAMPLE              ***     /mnt/ramdisk/test/example01.dbf
6    16       MSSM                 ***     /mnt/ramdisk/test/mssm01.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    20       TEMP                 32767       /mnt/ramdisk/test/temp01.dbf

2.开始测试:
SCOTT@test> select rowid,ora_rowscn,deptx.* from deptx ;
ROWID                ORA_ROWSCN       DEPTNO DNAME          LOC
------------------ ------------ ------------ -------------- -------------
AAAO1FAAGAAAAAKAAA  12688070213           10 ACCOUNTING     new york
AAAO1FAAGAAAAAKAAB  12688070213           20 RESEARCH       dallas
AAAO1FAAGAAAAAKAAC  12688070213           30 SALES          chicago
AAAO1FAAGAAAAAKAAD  12688070213           40 OPERATIONS     boston

SCOTT@test> @ &r/lookup_rowid AAAO1FAAGAAAAAKAAA
      OBJECT         FILE        BLOCK          ROW DBA                  TEXT
------------ ------------ ------------ ------------ -------------------- ----------------------------------------
       60741            6           10            0 6,10                 alter system dump datafile 6 block 10 ;

SCOTT@test> update deptx set loc=upper(loc) ;
4 rows updated.

--打开另外会话执行.
SCOTT@test> alter system checkpoint ;
System altered.
SCOTT@test> alter system flush buffer_cache ;
System altered.

SYS@test> @ &r/bh 6 10
HLADDR                DBARFIL       DBABLK        CLASS CLASS_TYPE         STATE               TCH   CR_SCN_BAS   CR_SCN_WRP   CR_UBA_FIL   CR_UBA_BLK   CR_UBA_SEQ BA               OBJECT_NAME
---------------- ------------ ------------ ------------ ------------------ ---------- ------------ ------------ ------------ ------------ ------------ ------------ ---------------- --------------------
000000007B6FDFD8            6           10            1 data block         free                  0            0            0            0            0            0 000000006C6CA000 DEPTX
000000007B6FDFD8            6           10            1 data block         free                  0            0            0            0            0            0 000000006C6E8000 DEPTX

SYS@test> alter tablespace mssm read only ;
--挂起,也就是有事务没有提交的情况下,无法设置read only.

SYS@test> select p1,p2,p1raw,p2raw,sid,serial#,seq#,event,state,seconds_in_wait from v$session where wait_class'Idle' order by event ;
          P1           P2 P1RAW            P2RAW                     SID      SERIAL#         SEQ# EVENT                                    STATE               SECONDS_IN_WAIT
------------ ------------ ---------------- ---------------- ------------ ------------ ------------ ---------------------------------------- ------------------- ---------------
  1650815232            1 0000000062657100 0000000000000001          140            3           47 SQL*Net message to client                WAITED SHORT TIME                 0
  1415053316       655383 0000000054580004 00000000000A0017          145           21          145 enq: TX - contention                     WAITING                         604

SYS@test> @ &r/ev_name 'enq: TX - contention'
      EVENT#     EVENT_ID NAME                                     PARAMETER1           PARAMETER2           PARAMETER3           WAIT_CLASS_ID  WAIT_CLASS# WAIT_CLASS
------------ ------------ ---------------------------------------- -------------------- -------------------- -------------------- ------------- ------------ --------------------
         580   1629782133 enq: TX - contention                     name|mode            usn

SYS@test> @ &r/tx 655383
old   1: select trunc(&&1/65536) XIDUSN,mod(&&1,65536)  XIDSLOT from dual
new   1: select trunc(655383/65536) XIDUSN,mod(655383,65536)  XIDSLOT from dual
      XIDUSN      XIDSLOT
------------ ------------
          10           23

SYS@test> @ &r/xid

X
------------------------------


XIDUSN      XIDSLOT       XIDSQN       UBAFIL       UBABLK       UBAREC       UBASQN STATUS              USED_UBLK    USED_UREC XID              ADDR             START_DATE
------- ------------ ------------ ------------ ------------ ------------ ------------ ---------------- ------------ ------------ ---------------- ---------------- -------------------
      9           20          796            2         3516            7         1146 ACTIVE                      1            1 090014001C030000 000000007A6F5888 2015-04-14 08:05:56
     10           23         8259            2          216           11         3917 ACTIVE                      1            1 0A00170043200000 000000007A702768 2015-04-14 08:04:53
--正好对上.

3.设置成offline看看是否可行.
--在offline前,执行如下:
SYS@test> select count(*) from x$bh where class in (3, 5);
    COUNT(*)
------------
           0

SYS@test> alter tablespace mssm offline ;
Tablespace altered.

--即使存在没有提交的事务,表空间也可以offline.
SYS@test> select count(*) from x$bh where class in (3, 5);
    COUNT(*)
------------
           2

--存在class=3,5的缓存块2个.
SYS@test> @&r/pt 'select * from x$bh where class in (3, 5)'
old  10:              passing xmltype(cursor( &1 ))
new  10:              passing xmltype(cursor( select * from x$bh where class in (3, 5) ))
     ROW_NUM COL_NAME         COL_VALUE
------------ ---------------- ----------------------------------------------------------------------------------------------------
           1 ADDR             00007FF6613934A8
             INDX             2016
             INST_ID          1
             HLADDR           000000007B74F578
             BLSIZ            8192
             NXT_HASH         000000007B74F810
             PRV_HASH         000000007B74F810
             NXT_REPL         000000006D7E8418
             PRV_REPL         000000006DFE2258
             FLAG             33562625
             RFLAG            0
             SFLAG            0
             LRU_FLAG         0
             TS_x0023_        0
             FILE_x0023_      1
             DBARFIL          1
             DBABLK           63218
             CLASS            3
             STATE            1
             MODE_HELD        0
             CHANGES          1
             CSTATE           0
             LE_ADDR          00
             DIRTY_QUEUE      0
             SET_DS           000000007B03E070
             OBJ              4294967295
             BA               000000006DCB6000
             CR_SCN_BAS       0
             CR_SCN_WRP       0
             CR_XID_USN       0
             CR_XID_SLT       0
             CR_XID_SQN       0
             CR_UBA_FIL       0
             CR_UBA_BLK       0
             CR_UBA_SEQ       0
             CR_UBA_REC       0
             CR_SFL           0
             CR_CLS_BAS       0
             CR_CLS_WRP       0
             LRBA_SEQ         107
             LRBA_BNO         64713
             HSCN_BAS         4098191743
             HSCN_WRP         2
             HSUB_SCN         1
             US_NXT           000000006DFE2128
             US_PRV           000000006DFE2128
             WA_NXT           000000006DFE2138
             WA_PRV           000000006DFE2138
             OBJ_FLAG         2
             TCH              1
             TIM              1428971234
Press Enter to view next row...


     ROW_NUM COL_NAME         COL_VALUE
------------ ---------------- ----------------------------------------------------------------------------------------------------
           2 ADDR             00007FF6613934A8
             INDX             3819
             INST_ID          1
             HLADDR           000000007B7D7730
             BLSIZ            8192
             NXT_HASH         000000007B7D7858
             PRV_HASH         000000007B7D7858
             NXT_REPL         000000006C7EB4F8
             PRV_REPL         000000006C7EB2D8
             FLAG             33562625
             RFLAG            0
             SFLAG            0
             LRU_FLAG         0
             TS_x0023_        0
             FILE_x0023_      1
             DBARFIL          1
             DBABLK           63217
             CLASS            5
             STATE            1
             MODE_HELD        0
             CHANGES          1
             CSTATE           0
             LE_ADDR          00
             DIRTY_QUEUE      0
             SET_DS           000000007B03D068
             OBJ              4294967295
             BA               000000006C5CA000
             CR_SCN_BAS       0
             CR_SCN_WRP       0
             CR_XID_USN       0
             CR_XID_SLT       0
             CR_XID_SQN       0
             CR_UBA_FIL       0
             CR_UBA_BLK       0
             CR_UBA_SEQ       0
             CR_UBA_REC       0
             CR_SFL           0
             CR_CLS_BAS       0
             CR_CLS_WRP       0
             LRBA_SEQ         107
             LRBA_BNO         64713
             HSCN_BAS         4098191740
             HSCN_WRP         2
             HSUB_SCN         1
             US_NXT           000000006C7EB3C8
             US_PRV           000000006C7EB3C8
             WA_NXT           000000006C7EB3D8
             WA_PRV           000000006C7EB3D8
             OBJ_FLAG         2
             TCH              1
             TIM              1428971234

102 rows selected.

SYS@test> @ &r/which_obj.sql 1 63217
OWNER  SEGMENT_NAME         PARTITION_NAME                 SEGMENT_TYPE       TABLESPACE_NAME                   EXTENT_ID      FILE_ID     BLOCK_ID        BYTES       BLOCKS RELATIVE_FNO
------ -------------------- ------------------------------ ------------------ ------------------------------ ------------ ------------ ------------ ------------ ------------ ------------
SYS    1.63217                                             DEFERRED ROLLBACK  SYSTEM                                    0            1        63217        65536            8            1

SYS@test> @ &r/which_obj.sql 1 63218
OWNER  SEGMENT_NAME         PARTITION_NAME                 SEGMENT_TYPE       TABLESPACE_NAME                   EXTENT_ID      FILE_ID     BLOCK_ID        BYTES       BLOCKS RELATIVE_FNO
------ -------------------- ------------------------------ ------------------ ------------------------------ ------------ ------------ ------------ ------------ ------------ ------------
SYS    1.63217                                             DEFERRED ROLLBACK  SYSTEM                                    0            1        63217        65536            8            1

--将回滚信息移到了system表空间.
--回到会话1:
SCOTT@test> select rowid,ora_rowscn,deptx.* from deptx ;
select rowid,ora_rowscn,deptx.* from deptx
                                     *
ERROR at line 1:
ORA-00376: file 6 cannot be read at this time
ORA-01110: data file 6: '/mnt/ramdisk/test/mssm01.dbf'

--看看是否能提交.
SCOTT@test> commit ;
Commit complete.
--居然可以.

SYS@test> select count(*) from x$bh where class in (3, 5);
    COUNT(*)
------------
           2

SYS@test> alter system checkpoint ;
System altered.


--因为offline,执行 alter system dump datafile 6 block 10 ;没有输出,只能使用bbed观察.

BBED> set dba 6,10
        DBA             0x0180000a (25165834 6,10)

BBED> p ktbbh.ktbbhitl[0]
struct ktbbhitl[0], 24 bytes                @44
   struct ktbitxid, 8 bytes                 @44
      ub2 kxidusn                           @44       0x000a
      ub2 kxidslt                           @46       0x0016
      ub4 kxidsqn                           @48       0x00001ff2
   struct ktbituba, 8 bytes                 @52
      ub4 kubadba                           @52       0x00800038
      ub2 kubaseq                           @56       0x0ed0
      ub1 kubarec                           @58       0x0f
   ub2 ktbitflg                             @60       0xa000 (KTBFUPB, KTBFCOM)
   union _ktbitun, 2 bytes                  @62
      b2 _ktbitfsc                          @62       2
      ub2 _ktbitwrp                         @62       0x0002
   ub4 ktbitbas                             @64       0xf4449645

BBED> p ktbbh.ktbbhitl[1]
struct ktbbhitl[1], 24 bytes                @68
   struct ktbitxid, 8 bytes                 @68
      ub2 kxidusn                           @68       0x000a
      ub2 kxidslt                           @70       0x0017
      ub4 kxidsqn                           @72       0x00002043
   struct ktbituba, 8 bytes                 @76
      ub4 kubadba                           @76       0x008000d8
      ub2 kubaseq                           @80       0x0f4d
      ub1 kubarec                           @82       0x0b
   ub2 ktbitflg                             @84       0x0004 (NONE)
   union _ktbitun, 2 bytes                  @86
      b2 _ktbitfsc                          @86       0
      ub2 _ktbitwrp                         @86       0x0000
   ub4 ktbitbas                             @88       0x00000000

--应该事务发生在ktbbh.ktbbhitl[1]上,kxidusn=0x000a(10),kxidslt=0x0017(23).可以发现并没有些提交的scn.实际上会话1的提交相当于延迟块提交.

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0]                              @8096     0x2c

BBED> x /rnccc
rowdata[0]                                  @8096
----------
flag@8096: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8097: 0x02
cols@8098:    3

col    0[2] @8099: 10
col   1[10] @8102: ACCOUNTING
col    2[8] @8113: NEW YORK

4.设置表空间read only看看.
--必须先online,在设置成read only.
SYS@test> alter tablespace mssm online  ;
Tablespace altered.

SYS@test> alter tablespace mssm read only ;
Tablespace altered.

SYS@test> alter system dump datafile 6 block 10 ;
System altered.

Block header dump:  0x0180000a
Object id on Block? Y
seg/obj: 0xed45  csc: 0x02.f44497e6  itc: 2  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.016.00001ff2  0x00800038.0ed0.0f  C-U-    0  scn 0x0002.f4449645
0x02   0x000a.017.00002043  0x008000d8.0f4d.0b  ----    4  fsc 0x0000.00000000

--可以确定这个时候读取会出现链接的情况http://blog.itpub.net/267265/viewspace-1561104/
SCOTT@test> select rowid,ora_rowscn,deptx.* from deptx ;
ROWID                ORA_ROWSCN       DEPTNO DNAME          LOC
------------------ ------------ ------------ -------------- -------------
AAAO1FAAGAAAAAKAAA  12688136414           10 ACCOUNTING     NEW YORK
AAAO1FAAGAAAAAKAAB  12688136414           20 RESEARCH       DALLAS
AAAO1FAAGAAAAAKAAC  12688136414           30 SALES          CHICAGO
AAAO1FAAGAAAAAKAAD  12688136414           40 OPERATIONS     BOSTON

SYS@test> select count(*) from x$bh where class in (3, 5);
    COUNT(*)
------------
           0

SYS@test> @ &r/bh 6 10
HLADDR                DBARFIL       DBABLK        CLASS CLASS_TYPE         STATE               TCH   CR_SCN_BAS   CR_SCN_WRP   CR_UBA_FIL   CR_UBA_BLK   CR_UBA_SEQ BA               OBJECT_NAME
---------------- ------------ ------------ ------------ ------------------ ---------- ------------ ------------ ------------ ------------ ------------ ------------ ---------------- --------------------
000000007B6FDFD8            6           10            1 data block         cr                    3   4294967295        65535            0            0            0 0000000064ECC000 DEPTX
000000007B6FDFD8            6           10            1 data block         cr                    1   4294967295        65535            0            0            0 0000000064F7E000 DEPTX
000000007B6FDFD8            6           10            1 data block         cr                    1   4294967295        65535            0            0            0 0000000064CF0000 DEPTX
000000007B6FDFD8            6           10            1 data block         cr                    1   4294967295        65535            0            0            0 0000000064E46000 DEPTX
000000007B6FDFD8            6           10            1 data block         cr                    1   4294967295        65535            0            0            0 00000000652F4000 DEPTX

--可以发现state=CR.关闭数据库看看.

SCOTT@test> select rowid,ora_rowscn,deptx.* from deptx ;

ROWID                ORA_ROWSCN       DEPTNO DNAME          LOC
------------------ ------------ ------------ -------------- -------------
AAAO1FAAGAAAAAKAAA  12688136477           10 ACCOUNTING     NEW YORK
AAAO1FAAGAAAAAKAAB  12688136477           20 RESEARCH       DALLAS
AAAO1FAAGAAAAAKAAC  12688136477           30 SALES          CHICAGO
AAAO1FAAGAAAAAKAAD  12688136477           40 OPERATIONS     BOSTON

--ORA_ROWSCN 会变.视乎这个的ORA_ROWSCN来之哪里呢?

SCOTT@test> alter tablespace mssm read write ;
Tablespace altered.

SCOTT@test> select rowid,ora_rowscn,deptx.* from deptx ;
ROWID                ORA_ROWSCN       DEPTNO DNAME          LOC
------------------ ------------ ------------ -------------- -------------
AAAO1FAAGAAAAAKAAA  12688136483           10 ACCOUNTING     NEW YORK
AAAO1FAAGAAAAAKAAB  12688136483           20 RESEARCH       DALLAS
AAAO1FAAGAAAAAKAAC  12688136483           30 SALES          CHICAGO
AAAO1FAAGAAAAAKAAD  12688136483           40 OPERATIONS     BOSTON


BBED> set dba 6,10
        DBA             0x0180000a (25165834 6,10)

BBED> p ktbbh.ktbbhitl[1]
struct ktbbhitl[1], 24 bytes                @68
   struct ktbitxid, 8 bytes                 @68
      ub2 kxidusn                           @68       0x000a
      ub2 kxidslt                           @70       0x0017
      ub4 kxidsqn                           @72       0x00002043
   struct ktbituba, 8 bytes                 @76
      ub4 kubadba                           @76       0x008000d8
      ub2 kubaseq                           @80       0x0f4d
      ub1 kubarec                           @82       0x0b
   ub2 ktbitflg                             @84       0xa000 (KTBFUPB, KTBFCOM)
   union _ktbitun, 2 bytes                  @86
      b2 _ktbitfsc                          @86       2
      ub2 _ktbitwrp                         @86       0x0002
   ub4 ktbitbas                             @88       0xf4459923


SCOTT@test> @&r/16to10 f4459923
16 to 10 DEC
------------
  4098201891

SCOTT@test> select 2*power(2,32)+4098201891 from dual ;
2*POWER(2,32)+4098201891
------------------------
             12688136483

--正好对上.


5.重复测试,不过这次rollback看看情况如何.

--session 1:

SCOTT@test> update deptx set loc=lower(loc) ;
4 rows updated.

--修改为小写.
SYS@test> alter tablespace mssm offline ;
Tablespace altered.

SCOTT@test> @ &r/xid
X
------------------------------
8.45.697

      XIDUSN      XIDSLOT       XIDSQN       UBAFIL       UBABLK       UBAREC       UBASQN STATUS              USED_UBLK    USED_UREC XID              ADDR             START_DATE
------------ ------------ ------------ ------------ ------------ ------------ ------------ ---------------- ------------ ------------ ---------------- ---------------- -------------------
           8           45          697            2          759           23         1212 ACTIVE                      1            1 08002D00B9020000 000000007A702768 2015-04-14 08:57:29

SYS@test> select count(*) from x$bh where class in (3, 5);

    COUNT(*)
------------
           2

SYS@test> select DBARFIL ,DBABLK   from x$bh where class in (3, 5);
     DBARFIL       DBABLK
------------ ------------
           1        63218
           1        63217

SYS@test> @ &r/bh 1 63217
HLADDR                DBARFIL       DBABLK        CLASS CLASS_TYPE         STATE               TCH   CR_SCN_BAS   CR_SCN_WRP   CR_UBA_FIL   CR_UBA_BLK   CR_UBA_SEQ BA               OBJECT_NAME
---------------- ------------ ------------ ------------ ------------------ ---------- ------------ ------------ ------------ ------------ ------------ ------------ ---------------- --------------------
000000007B7D7730            1        63217            5 save undo header   xcur                  1            0            0            0            0            0 000000006AEF6000

SYS@test> @ &r/bh 1 63218
HLADDR                DBARFIL       DBABLK        CLASS CLASS_TYPE         STATE               TCH   CR_SCN_BAS   CR_SCN_WRP   CR_UBA_FIL   CR_UBA_BLK   CR_UBA_SEQ BA               OBJECT_NAME
---------------- ------------ ------------ ------------ ------------------ ---------- ------------ ------------ ------------ ------------ ------------ ------------ ---------------- --------------------
000000007B74F578            1        63218            3 save undo block    xcur                  1            0            0            0            0            0 000000006AF58000

--回到会话1:
SCOTT@test> rollback ;
Rollback complete.

BBED> set dba 6,10
        DBA             0x0180000a (25165834 6,10)

BBED> p ktbbh.ktbbhitl[0]
struct ktbbhitl[0], 24 bytes                @44
   struct ktbitxid, 8 bytes                 @44
      ub2 kxidusn                           @44       0x0008
      ub2 kxidslt                           @46       0x002d
      ub4 kxidsqn                           @48       0x000002b9
   struct ktbituba, 8 bytes                 @52
      ub4 kubadba                           @52       0x008002f7
      ub2 kubaseq                           @56       0x04bc
      ub1 kubarec                           @58       0x17
   ub2 ktbitflg                             @60       0x0004 (NONE)
   union _ktbitun, 2 bytes                  @62
      b2 _ktbitfsc                          @62       0
      ub2 _ktbitwrp                         @62       0x0000
   ub4 ktbitbas                             @64       0x00000000

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0]                              @8096     0x2c

BBED> x /rnccc
rowdata[0]                                  @8096
----------
flag@8096: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8097: 0x01
cols@8098:    3

col    0[2] @8099: 10
col   1[10] @8102: ACCOUNTING
col    2[8] @8113: new york

--可以发现磁盘里面的内容loc字段已经是小写.(注意我没有提交事务).

SYS@test> select count(*) from x$bh where class in (3, 5);
    COUNT(*)
------------
           2

alter tablespace mssm online ;
alter tablespace mssm read only ;

BBED> set dba 6,10
        DBA             0x0180000a (25165834 6,10)

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0]                              @8096     0x2c

BBED> p ktbbh.ktbbhitl[0]
struct ktbbhitl[0], 24 bytes                @44
   struct ktbitxid, 8 bytes                 @44
      ub2 kxidusn                           @44       0x000a
      ub2 kxidslt                           @46       0x0016
      ub4 kxidsqn                           @48       0x00001ff2
   struct ktbituba, 8 bytes                 @52
      ub4 kubadba                           @52       0x00800038
      ub2 kubaseq                           @56       0x0ed0
      ub1 kubarec                           @58       0x0f
   ub2 ktbitflg                             @60       0xa000 (KTBFUPB, KTBFCOM)
   union _ktbitun, 2 bytes                  @62
      b2 _ktbitfsc                          @62       2
      ub2 _ktbitwrp                         @62       0x0002
   ub4 ktbitbas                             @64       0xf4449645

BBED> p ktbbh.ktbbhitl[1]
struct ktbbhitl[1], 24 bytes                @68
   struct ktbitxid, 8 bytes                 @68
      ub2 kxidusn                           @68       0x000a
      ub2 kxidslt                           @70       0x0017
      ub4 kxidsqn                           @72       0x00002043
   struct ktbituba, 8 bytes                 @76
      ub4 kubadba                           @76       0x008000d8
      ub2 kubaseq                           @80       0x0f4d
      ub1 kubarec                           @82       0x0b
   ub2 ktbitflg                             @84       0xa000 (KTBFUPB, KTBFCOM)
   union _ktbitun, 2 bytes                  @86
      b2 _ktbitfsc                          @86       2
      ub2 _ktbitwrp                         @86       0x0002
   ub4 ktbitbas                             @88       0xf4459923


BBED> x /rnccc
rowdata[0]                                  @8096
----------
flag@8096: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8097: 0x00
cols@8098:    3

col    0[2] @8099: 10
col   1[10] @8102: ACCOUNTING
col    2[8] @8113: NEW YORK
--可以发现在设置成only是已经应用rollback.

SYS@test> select count(*) from x$bh where class in (3, 5);
    COUNT(*)
------------
           1

SYS@test> select count(*) from x$bh where class in (3, 5);
    COUNT(*)
------------
           1

SYS@test> select DBARFIL ,DBABLK   from x$bh where class in (3, 5);
     DBARFIL       DBABLK
------------ ------------
           1        63218

SYS@test> @ &r/bh   1        63218
old  23:   dbarfil = &1 and
new  23:   dbarfil = 1 and
old  24:   dbablk = &2
new  24:   dbablk = 63218
HLADDR                DBARFIL       DBABLK        CLASS CLASS_TYPE         STATE               TCH   CR_SCN_BAS   CR_SCN_WRP   CR_UBA_FIL   CR_UBA_BLK   CR_UBA_SEQ BA               OBJECT_NAME
---------------- ------------ ------------ ------------ ------------------ ---------- ------------ ------------ ------------ ------------ ------------ ------------ ---------------- --------------------
000000007B74F578            1        63218            3 save undo block    free                  0            0            0            0            0            0 000000006AF58000

--注意状态state=free.

SCOTT@test> select rowid,ora_rowscn,deptx.* from deptx ;
ROWID                ORA_ROWSCN       DEPTNO DNAME          LOC
------------------ ------------ ------------ -------------- -------------
AAAO1FAAGAAAAAKAAA  12688136483           10 ACCOUNTING     NEW YORK
AAAO1FAAGAAAAAKAAB  12688136483           20 RESEARCH       DALLAS
AAAO1FAAGAAAAAKAAC  12688136483           30 SALES          CHICAGO
AAAO1FAAGAAAAAKAAD  12688136483           40 OPERATIONS     BOSTON


SCOTT@test> @ &r/16to10 f4449645
16 to 10 DEC
------------
  4098135621

SCOTT@test> select power(2,33)+4098135621 from dual ;
POWER(2,33)+4098135621
----------------------
           12688070213
--奇怪不一致?

SYS@test> @&r/bh 6 10
HLADDR                DBARFIL       DBABLK        CLASS CLASS_TYPE         STATE               TCH   CR_SCN_BAS   CR_SCN_WRP   CR_UBA_FIL   CR_UBA_BLK   CR_UBA_SEQ BA               OBJECT_NAME
---------------- ------------ ------------ ------------ ------------------ ---------- ------------ ------------ ------------ ------------ ------------ ------------ ---------------- --------------------
000000007B6FDFD8            6           10            1 data block         xcur                  2            0            0            0            0            0 000000006A1E6000 DEPTX

--状态是xcur.

SCOTT@test> alter system dump datafile 6 block 10 ;
System altered.

Block header dump:  0x0180000a
Object id on Block? Y
seg/obj: 0xed45  csc: 0x02.f4459b72  itc: 2  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.016.00001ff2  0x00800038.0ed0.0f  C-U-    0  scn 0x0002.f4449645
0x02   0x000a.017.00002043  0x008000d8.0f4d.0b  C-U-    0  scn 0x0002.f4459923

--与这个0x0002.f4459923是对上的.

上一篇:8月12日阿里云服务升级公告


下一篇:大数据框架Hadoop主要模块介绍