ITPub博客

首页 > 数据库 > Oracle > ORACLE异步写实验

ORACLE异步写实验

原创 Oracle 作者:Ashic 时间:2014-05-31 20:06:07 0 删除 编辑

----------修改dept1表中的一行数据并提交

SQL> select deptno,dname,loc,rowid from dept1;

 

    DEPTNO   DNAME                      LOC                    ROWID

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

10     ACCOUNTING          NEW YORK        AAALNOAAFAAAAA8AAA

20     RESEARCH                DALLAS              AAALNOAAFAAAAA8AAB

30     SALES                         CHICAGO          AAALNOAAFAAAAA8AAC

40     OPERATIONS           BOSTON            AAALNOAAFAAAAA8AAD

 

SQL> update dept1 set deptno=12 where loc='NEW YORK';

 

1 row updated.

 

SQL> commit;

 

Commit complete.

 

----------通过rowid可以得到

1.对象号AAALNO

2.文件号AAF

3.块号AAAAA8

4.行号AAA

 


===================================================================================================================================================================================================
                                    A         B           C          D           E         F           G         H          I            J           K         L           M        N           O         P          Q          R           S          T          U          V         W          X          Y          Z

A~Z 0~25                   0          1           2          3           4          5          6          7          8           9         10        11        12        13        14        15        16        17        18        19        20        21        22        23        24        25

a~z 26~51                26        27        28        29        30        31        32        33        34        35        36        37        38        39        40        41        42        43        44        45        46        47        48        49        50        51

0~9 52~61                52        53        54        55        56        57        58        59        60        61                                                                                                                                

+        62

/        63

===================================================================================================================================================================================================



 

AAALNO           select 11*64*64+13*64+14 from dual;                                

 

                            11*64*64+13*64+14

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

                            45902

 

AAF                        4        就是文件编号    select file#,name from v$datafile;

FILE#           NAME

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

     1 +DATA/prod/datafile/system.259.847900779

      2 +DATA/prod/datafile/undotbs1.260.847900791

      3 +DATA/prod/datafile/sysaux.261.847900795

      4 +DATA/prod/datafile/undotbs2.263.84790080

     5 +DATA/prod/datafile/users.264.847900809

 

AAAAA8                60

 

AAA                       row0

 

===================================================================================================================================================================================================

 

SQL> conn / as sysdba

Connected.

----------dump出内存中的块

SQL>  alter system dump datafile 5 block 60;

 

System altered.

----------dump出磁盘中的块

SQL> alter system dump datafile '+DATA/prod/datafile/users.264.847900809' block 60;

 

System altered.

 

----------dump内存中的块

 

block_row_dump:

tab 0, row 0, @0x1f66                                                     row0代表第一行

tl: 26 fb: --H-FL-- lb: 0x2  cc: 3

col  0: [ 2]  c1 0d                                                         col0第一列

col  1: [10]  41 43 43 4f 55 4e 54 49 4e 47

col  2: [ 8]  4e 45 57 20 59 4f 52 4b

tab 0, row 1, @0x1f50

tl: 22 fb: --H-FL-- lb: 0x0  cc: 3

col  0: [ 2]  c1 15

col  1: [ 8]  52 45 53 45 41 52 43 48

col  2: [ 6]  44 41 4c 4c 41 53

tab 0, row 2, @0x1f3c

tl: 20 fb: --H-FL-- lb: 0x0  cc: 3

col  0: [ 2]  c1 1f

col  1: [ 5]  53 41 4c 45 53

col  2: [ 7]  43 48 49 43 41 47 4f

tab 0, row 3, @0x1f24

tl: 24 fb: --H-FL-- lb: 0x0  cc: 3

col  0: [ 2]  c1 29

col  1: [10]  4f 50 45 52 41 54 49 4f 4e 53

col  2: [ 6]  42 4f 53 54 4f 4e

end_of_block_dump

 

----------dump磁盘中的块

 

block_row_dump:

tab 0, row 0, @0x1f66

tl: 26 fb: --H-FL-- lb: 0x0  cc: 3

col  0: [ 2]  c1 0b

col  1: [10]  41 43 43 4f 55 4e 54 49 4e 47

col  2: [ 8]  4e 45 57 20 59 4f 52 4b

tab 0, row 1, @0x1f50

tl: 22 fb: --H-FL-- lb: 0x0  cc: 3

col  0: [ 2]  c1 15

col  1: [ 8]  52 45 53 45 41 52 43 48

col  2: [ 6]  44 41 4c 4c 41 53

tab 0, row 2, @0x1f3c

tl: 20 fb: --H-FL-- lb: 0x0  cc: 3

col  0: [ 2]  c1 1f

col  1: [ 5]  53 41 4c 45 53

col  2: [ 7]  43 48 49 43 41 47 4f

tab 0, row 3, @0x1f24

tl: 24 fb: --H-FL-- lb: 0x0  cc: 3

col  0: [ 2]  c1 29

col  1: [10]  4f 50 45 52 41 54 49 4f 4e 53

col  2: [ 6]  42 4f 53 54 4f 4e

end_of_block_dump

 

 

 

 select dump(10,'16') from dual;

 

DUMP(10,'16')

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

Typ=2 Len=2: c1,b

 

 

select dump(12,'16') from dual;

 

DUMP(12,'16')

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

Typ=2 Len=2: c1,d

 

 

 

可以看出内存中的块已经变成了12,而disk上的块还是10,所以commit只是把日志写到了磁盘上,脏块不一定写到了磁盘中

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

下一篇: 异机恢复
请登录后发表评论 登录
全部评论

注册时间:2014-02-18

  • 博文量
    21
  • 访问量
    102667