达梦数据库学习笔记之– 未提交事务的脏数据会落盘吗?
本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客
本文链接地址: 达梦数据库学习笔记之– 未提交事务的脏数据会落盘吗?
在研究达梦数据库相关机制的过程中,突然发现一个点。在Oracle中,我们知道对于数据块的写入其实有很多讲究,比如延迟块清除之类。那么在达梦数据库中,如果一个大事务未提交的情况下,其修改的脏数据是否会落盘呢? 这个疑问其实是在前面做相关恢复测试的过程中想到的。这里进行一下验证。
首先创建测试表,并准备测试数据:
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 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
SQL> create tablespace roger datafile '/opt/dm/dmdbms/data/enmotech/roger01.dbf' size 32; executed successfully used time: 28.953(ms). Execute id is 34. SQL> create table test0829(a varchar2(20),b number) tablespace roger; executed successfully used time: 9.220(ms). Execute id is 35. SQL> insert into test0829 values('enmotech.com',10); affect rows 1 used time: 1.772(ms). Execute id is 36. SQL> insert into test0829 values('baidu.com',11); affect rows 1 used time: 1.322(ms). Execute id is 37. SQL> insert into test0829 values('killdb.com',12); affect rows 1 used time: 1.528(ms). Execute id is 38. SQL> commit; executed successfully used time: 2.107(ms). Execute id is 39. SQL> select id,path,STATUS$,TOTAL_SIZE,FREE_SIZE,PAGE_SIZE from v$datafile; ID PATH STATUS$ TOTAL_SIZE FREE_SIZE PAGE_SIZE ----------- ------------------------------------------- ----------- -------------------- -------------------- ----------- 0 /opt/dm/dmdbms/data/enmotech/SYSTEM.DBF 1 3072 2295 8192 0 /opt/dm/dmdbms/data/enmotech/ROLL.DBF 1 59264 58979 8192 0 /opt/dm/dmdbms/data/enmotech/TEMP.DBF 1 131072 131064 8192 0 /opt/dm/dmdbms/data/enmotech/MAIN.DBF 1 552960 6706 8192 0 /opt/dm/dmdbms/data/enmotech/enmotech01.dbf 1 521728 503931 8192 1 /opt/dm/dmdbms/data/enmotech/enmotech02.dbf 1 24704 24692 8192 0 /opt/dm/dmdbms/data/enmotech/roger01.dbf 1 4096 4081 8192 7 rows got used time: 7.026(ms). Execute id is 40. SQL> select HEADER_FILE,HEADER_BLOCK,BYTES,BLOCKS,EXTENTS,RELATIVE_FNO from DBA_SEGMENTS where segment_name=upper('test0829'); HEADER_FILE HEADER_BLOCK BYTES BLOCKS EXTENTS RELATIVE_FNO ----------- ------------ -------------------- -------------------- -------------------- ------------ 0 16 131072 16 1 0 used time: 122.130(ms). Execute id is 41. SQL> SQL> select rowid,a,b,dump(a,16),dump(b,16) from test0829 order by 1; ROWID A B DUMP(A,16) DUMP(B,16) -------------------- ------------ -- ------------------------------------------------- ----------------- 10753 enmotech.com 10 Typ=2 Len=12: 65,6e,6d,6f,74,65,63,68,2e,63,6f,6d Typ=9 Len=2: c1,b 10754 baidu.com 11 Typ=2 Len=9: 62,61,69,64,75,2e,63,6f,6d Typ=9 Len=2: c1,c 10755 killdb.com 12 Typ=2 Len=10: 6b,69,6c,6c,64,62,2e,63,6f,6d Typ=9 Len=2: c1,d used time: 2.009(ms). Execute id is 44. SQL> SQL> select dump(9,16),dump(10,16),dump(11,16),dump(12,16) from dual; DUMP(9,16) DUMP(10,16) DUMP(11,16) DUMP(12,16) -------------------- -------------------- -------------------- -------------------- Typ=7 Len=4: 9,0,0,0 Typ=7 Len=4: a,0,0,0 Typ=7 Len=4: b,0,0,0 Typ=7 Len=4: c,0,0,0 used time: 2.155(ms). Execute id is 45. SQL> [dmdba@mogdb ~]$ dd if=/opt/dm/dmdbms/data/enmotech/roger01.dbf of=/tmp/dd1.dbf bs=8192 skip=16 count=18 18+0 records in 18+0 records out 147456 bytes (147 kB) copied, 0.00070668 s, 209 MB/s [dmdba@mogdb ~]$ [dmdba@mogdb ~]$ od -x /tmp/dd1.dbf 0000000 0007 0000 0010 0000 ffff ffff ffff ffff 0000020 ffff ffff 0014 0000 0000 0000 04b8 0530 0000040 0000 0000 0002 0062 0000 0000 0000 ffff 0000060 0052 005a ffff 006e 0001 0507 0200 ffff 0000100 ffff ffff ffff ffff 0007 0000 0008 0000 0000120 0034 0000 0000 0000 0000 ffff ffff ffff 0000140 ffff 0000 0001 0000 0012 0000 0000 0000 0000160 0000 0000 0014 0000 0000 0000 0000 0000 0000200 0000 0000 0000 0000 0000 0000 0000 0000 * 0017760 0000 0000 005a 0052 0000 0000 0000 0000 0020000 0007 0000 0011 0000 ffff ffff ffff ffff 0020020 ffff ffff 1a1a 1a1a 0000 0000 04cc 0530 0020040 0000 0000 0002 0062 0000 0000 0000 ffff 0020060 0052 005a ffff 006e 0000 0000 0000 0000 0020100 0000 0000 0000 0001 0000 0003 0000 0000 0020120 0000 ffff ffff ffff 7fff ffff ffff ffff 0020140 ffff 0000 0000 0000 0000 0000 0000 0000 0020160 0000 0000 0000 0000 0000 0000 0000 0000 * 0037760 0000 0000 005a 0052 0000 0000 0000 0000 0040000 0007 0000 0012 0000 ffff ffff ffff 0000 0040020 0013 0000 0014 0000 0000 0000 04b8 0530 0040040 0000 0000 0002 0062 0000 0000 0000 ffff 0040060 0052 005a ffff 006e 0000 0507 0200 0000 0040100 0000 0000 0000 0000 0000 0000 0000 0000 0040120 0000 0013 0000 0000 0000 ffff ffff ffff 0040140 ffff 0000 0000 0000 0000 0000 0000 0000 0040160 0000 0000 0000 0000 0000 0000 0000 0000 * 0057760 0000 0000 005a 0052 0000 0000 0000 0000 0060000 0007 0000 0013 0000 0000 0012 0000 ffff 0060020 ffff ffff 0014 0000 0000 0000 04b8 0530 0060040 0000 0000 0002 0062 0000 0000 0000 ffff 0060060 0052 005a ffff 006e 0000 0507 0200 0000 0060100 0000 0000 0000 0000 0000 0000 0000 0000 0060120 0000 0000 0000 0000 0000 ffff ffff ffff 0060140 ffff 0000 0000 0000 0000 0000 0000 0000 0060160 0000 0000 0000 0000 0000 0000 0000 0000 * 0077760 0000 0000 005a 0052 0000 0000 0000 0000 0100000 0007 0000 0014 0000 ffff ffff ffff 0000 0100020 0015 0000 0014 0000 0000 0000 04b8 0530 0100040 0000 0000 0002 0062 0000 0000 0000 ffff 0100060 0052 005a ffff 006e 0000 0507 0200 0000 0100100 0000 0000 0000 0000 0000 0000 0000 0000 0100120 0000 0015 0000 0000 0000 ffff ffff ffff 0100140 ffff 0000 0000 0000 0000 0000 0000 0000 0100160 0000 0000 0000 0000 0000 0000 0000 0000 * 0117760 0000 0000 005a 0052 0000 0000 0000 0000 0120000 0007 0000 0015 0000 0000 0014 0000 ffff 0120020 ffff ffff 0014 0000 0000 0000 04c9 0530 0120040 0000 0000 0005 00bd 0000 0000 0003 ffff 0120060 0052 005a ffff 00cf 0000 0507 0200 0000 0120100 0000 0000 0000 0000 0000 0000 0000 0000 0120120 0000 0000 0000 0000 0000 ffff ffff ffff 0120140 ffff 2000 8c00 6e65 6f6d 6574 6863 632e --enmotech.com 0120160 6d6f c182 ff0b ffff 7fff ffff 4885 000d 0120200 0000 1d00 8900 6162 6469 2e75 6f63 826d --baidu.com 0120220 0cc1 ffff ffff ff7f 85ff 0d48 0000 0000 0120240 001e 6b8a 6c69 646c 2e62 6f63 826d 0dc1 --roger.com 0120260 ffff ffff ff7f 85ff 0d48 0000 0000 0000 0120300 0000 0000 0000 0000 0000 0000 0000 0000 * 0137740 0000 0000 0000 0000 0000 0000 0000 005a 0137760 009f 0082 0062 0052 0000 0000 0000 0000 0140000 0000 0000 0000 0000 0000 0000 0000 0000 * 0440000 [dmdba@mogdb ~]$ |
接下来我们新开2个session。
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
---session 1 SQL> insert into test0829 values('mogdb.com',66); affect rows 1 used time: 2.582(ms). Execute id is 46. SQL> select checkpoint(100); CHECKPOINT(100) --------------- 0 used time: 6.470(ms). Execute id is 47. SQL> alter system switch logfile; executed successfully used time: 7.887(ms). Execute id is 0. SQL> alter system archive log current; executed successfully used time: 1.424(ms). Execute id is 0. SQL> SQL> select dump('mogdb.com',16),dump(66,16) from dual; DUMP('mogdb.com',16) DUMP(66,16) --------------------------------------- --------------------- Typ=2 Len=9: 6d,6f,67,64,62,2e,63,6f,6d Typ=7 Len=4: 42,0,0,0 used time: 1.582(ms). Execute id is 48. SQL> --session 2 [dmdba@mogdb ~]$ disql sysdba/roger007 Server[LOCALHOST:5236]:mode is normal, state is open login used time : 7.446(ms) disql V8 SQL> select * from test0829; LINEID A B ---------- ------------ -- 1 enmotech.com 10 2 baidu.com 11 3 killdb.com 12 used time: 6.783(ms). Execute id is 204. SQL> |
经过一番操作之后,我们再次dump 数据文件,看看数据是否有所变化:
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 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
--再次dump 表数据 [dmdba@mogdb ~]$ dd if=/opt/dm/dmdbms/data/enmotech/roger01.dbf of=/tmp/dd2.dbf bs=8192 skip=16 count=50 50+0 records in 50+0 records out 409600 bytes (410 kB) copied, 0.00091234 s, 449 MB/s [dmdba@mogdb ~]$ od -x /tmp/dd2.dbf 0000000 0007 0000 0010 0000 ffff ffff ffff ffff 0000020 ffff ffff 0014 0000 0000 0000 04b8 0530 0000040 0000 0000 0002 0062 0000 0000 0000 ffff 0000060 0052 005a ffff 006e 0001 0507 0200 ffff 0000100 ffff ffff ffff ffff 0007 0000 0008 0000 0000120 0034 0000 0000 0000 0000 ffff ffff ffff 0000140 ffff 0000 0001 0000 0012 0000 0000 0000 0000160 0000 0000 0014 0000 0000 0000 0000 0000 0000200 0000 0000 0000 0000 0000 0000 0000 0000 * 0017760 0000 0000 005a 0052 0000 0000 0000 0000 0020000 0007 0000 0011 0000 ffff ffff ffff ffff 0020020 ffff ffff 1a1a 1a1a 0000 0000 04cc 0530 0020040 0000 0000 0002 0062 0000 0000 0000 ffff 0020060 0052 005a ffff 006e 0000 0000 0000 0000 0020100 0000 0000 0000 0001 0000 0003 0000 0000 0020120 0000 ffff ffff ffff 7fff ffff ffff ffff 0020140 ffff 0000 0000 0000 0000 0000 0000 0000 0020160 0000 0000 0000 0000 0000 0000 0000 0000 * 0037760 0000 0000 005a 0052 0000 0000 0000 0000 0040000 0007 0000 0012 0000 ffff ffff ffff 0000 0040020 0013 0000 0014 0000 0000 0000 04b8 0530 0040040 0000 0000 0002 0062 0000 0000 0000 ffff 0040060 0052 005a ffff 006e 0000 0507 0200 0000 0040100 0000 0000 0000 0000 0000 0000 0000 0000 0040120 0000 0013 0000 0000 0000 ffff ffff ffff 0040140 ffff 0000 0000 0000 0000 0000 0000 0000 0040160 0000 0000 0000 0000 0000 0000 0000 0000 * 0057760 0000 0000 005a 0052 0000 0000 0000 0000 0060000 0007 0000 0013 0000 0000 0012 0000 ffff 0060020 ffff ffff 0014 0000 0000 0000 04b8 0530 0060040 0000 0000 0002 0062 0000 0000 0000 ffff 0060060 0052 005a ffff 006e 0000 0507 0200 0000 0060100 0000 0000 0000 0000 0000 0000 0000 0000 0060120 0000 0000 0000 0000 0000 ffff ffff ffff 0060140 ffff 0000 0000 0000 0000 0000 0000 0000 0060160 0000 0000 0000 0000 0000 0000 0000 0000 * 0077760 0000 0000 005a 0052 0000 0000 0000 0000 0100000 0007 0000 0014 0000 ffff ffff ffff 0000 0100020 0015 0000 0014 0000 0000 0000 04b8 0530 0100040 0000 0000 0002 0062 0000 0000 0000 ffff 0100060 0052 005a ffff 006e 0000 0507 0200 0000 0100100 0000 0000 0000 0000 0000 0000 0000 0000 0100120 0000 0015 0000 0000 0000 ffff ffff ffff 0100140 ffff 0000 0000 0000 0000 0000 0000 0000 0100160 0000 0000 0000 0000 0000 0000 0000 0000 * 0117760 0000 0000 005a 0052 0000 0000 0000 0000 0120000 0007 0000 0015 0000 0000 0014 0000 ffff 0120020 ffff ffff 0014 0000 0000 0000 04d0 0530 0120040 0000 0000 0006 00da 0000 0000 0004 ffff 0120060 0052 005a ffff 00ee 0000 0507 0200 0000 0120100 0000 0000 0000 0000 0000 0000 0000 0000 0120120 0000 0000 0000 0000 0000 ffff ffff ffff 0120140 ffff 2000 8c00 6e65 6f6d 6574 6863 632e 0120160 6d6f c182 ff0b ffff 7fff ffff 4885 000d 0120200 0000 1d00 8900 6162 6469 2e75 6f63 826d 0120220 0cc1 ffff ffff ff7f 85ff 0d48 0000 0000 0120240 001e 6b8a 6c69 646c 2e62 6f63 826d 0dc1 0120260 ffff ffff ff7f 85ff 0d48 0000 0000 001d 0120300 6d89 676f 6264 632e 6d6f c182 ff43 ffff ---6d 6f 67 64 62 2e 63 6f 6d (mogdb.com) 0120320 7fff ffff 4886 000d 0000 0000 0000 0000 0120340 0000 0000 0000 0000 0000 0000 0000 0000 * 0137740 0000 0000 0000 0000 0000 0000 005a 00bd 0137760 009f 0082 0062 0052 0000 0000 0000 0000 0140000 0000 0000 0000 0000 0000 0000 0000 0000 * 1440000 [dmdba@mogdb ~]$ |
通过测试来看,触发检查点之后,新写入的脏数据是成功落盘了。
Leave a Reply
You must be logged in to post a comment.