您的位置:首页 > 数据库 > Oracle

ORACLE异步写实验

2015-01-25 11:05 288 查看
----------修改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只是把日志写到了磁盘上,脏块不一定写到了磁盘中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: