Redo internals update single row

  看了travel dba的blog 关于 redo internal 的干货,自己也学习研究了一下,俗话说好记忆不如烂笔头,我就写下来,记之。
   

点击(此处)折叠或打开

  1. -- +----------------------------------------------------------------------------+
  2. -- | Travel Liu |
  3. -- | travel.liu@outlook.com |
  4. -- | www.traveldba.com |
  5. -- |----------------------------------------------------------------------------|
  6. -- | |
  7. -- |----------------------------------------------------------------------------|
  8. -- | DATABASE : Oracle |
  9. -- | FILE : redo_internals_update.sql |
  10. -- | CLASS : Redo_Internal |
  11. -- | PURPOSE : This script will Single row update statement |
  12. -- | and dump the log file |
  13. -- +----------------------------------------------------------------------------+
  14. -- | MODIFIED (YYYY/MM/DD) |
  15. -- | Travel.liu 2013/09/14 - First Edition |
  16. -- +----------------------------------------------------------------------------+


  17. -- |----------------------------------------------------------------------------|
  18. set serveroutput on size 1000000
  19. prompt Test case : Redo internals : Single row update on heap table with no index

  20. drop table redo_internals;
  21. create table redo_internals
  22. (
  23. col1 char(2),
  24. col2 varchar2(20)
  25. )
  26. ;
  27. -- insert into table two record
  28. --
  29. insert into redo_internals values ('A1','FIRST ROW');
  30. insert into redo_internals values ('A2','SECOND ROW');


  31. commit;

  32. alter system switch logfile;

  33. def scn_1="NA"
  34. col CURRENT_scn new_value scn_1
  35. select CURRENT_scn from v$DATABASE;

  36. exec dbms_output.put_line ('scn_1 :'||&scn_1);

  37. select getmystat('redo size') from dual;

  38. update redo_internals set col2='FIRST ROW UPD' where col1 ='A1';

  39. select getmystat('redo size') from dual;

  40. def scn_2="NA"
  41. col CURRENT_scn new_value scn_2
  42. select CURRENT_scn from v$DATABASE;
  43. exec dbms_output.put_line ('scn_2 :'||&scn_2);


  44. def scn_3="NA"
  45. col CURRENT_scn new_value scn_3
  46. select CURRENT_scn from v$DATABASE;
  47. exec dbms_output.put_line ('scn_3 :'||&scn_3);

  48. commit;

  49. def scn_4="NA"
  50. col CURRENT_scn new_value scn_4
  51. select CURRENT_scn from v$DATABASE;
  52. exec dbms_output.put_line ('scn_4 :'||&scn_4);

  53. -- |----------------------------------------------------------------------------|
  54. -- | dump redo last log
  55. -- |----------------------------------------------------------------------------|

  56. def log_file="NA"
  57. col member for a50 new_value log_file;
  58. select member from
  59. v$log lg, v$logfile lgfile
  60. where lg.group# = lgfile.group# and lg.status='CURRENT';

  61. alter system dump logfile '&log_file' scn min &scn_1 scn max &scn_2;

  62. exec dbms_output.put_line ('dumo sql :'||'alter system dump logfile '||chr(39)||'&log_file'||chr(39)||' scn min '||&scn_1 ||' scn max '|| &scn_2);

  63. alter system dump logfile '&log_file' scn min &scn_2 scn max &scn_3;

  64. exec dbms_output.put_line ('dumo sql :'||'alter system dump logfile '||chr(39)||'&log_file'||chr(39)||' scn min '||&scn_2 ||' scn max '|| &scn_3);

  65. alter system dump logfile '&log_file' scn min &scn_3 scn max &scn_4;

  66. exec dbms_output.put_line ('dumo sql :'||'alter system dump logfile '||chr(39)||'&log_file'||chr(39)||' scn min '||&scn_3 ||' scn max '|| &scn_4);
  67. -- |----------------------------------------------------------------------------|

  68. col trace_file_name for a100

  69. SELECT d.VALUE || '/' || UPPER(RTRIM(i.INSTANCE, CHR(0))) || '_ora_' ||      --modify by desert_xu
  70.        p.spid || '.trc' trace_file_name
  71.   FROM (SELECT p.spid
  72.           FROM v$mystat m, v$session s, v$process p
  73.          WHERE m.statistic# = 1
  74.            AND s.SID = m.SID
  75.            AND p.addr = s.paddr) p,
  76.        (SELECT t.INSTANCE
  77.           FROM v$thread t, v$parameter v
  78.          WHERE v.NAME = 'thread'
  79.            AND (v.VALUE = 0 OR t.thread# = TO_NUMBER(v.VALUE))) i,
  80.        (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') d;
  81. -- |----------------------------------------------------------------------------|

  82. undef log_file
  83. undef scn_1
  84. undef scn_2
  85. undef scn_3
  86. undef scn_4

 执行如上脚本 
sys@PROD@148> @redo_internals_update.sql
Test case : Redo internals : Single row update on heap table with no index
drop table redo_internals
        *
ERROR at line 1:
ORA-00942: table or view does not exist

Table created.
1 row created.

1 row created.

Commit complete.

System altered.

CURRENT_SCN
-----------
   13228213

scn_1 :13228213

PL/SQL procedure successfully completed.


GETMYSTAT('REDOSIZE')
---------------------
                12124

1 row updated.

GETMYSTAT('REDOSIZE')
---------------------
                12680
CURRENT_SCN
-----------
   13228215
scn_2 :13228215

PL/SQL procedure successfully completed.

CURRENT_SCN
-----------
   13228216

scn_3 :13228216

PL/SQL procedure successfully completed.

Commit complete.

CURRENT_SCN
-----------
   13228219

scn_4 :13228219

PL/SQL procedure successfully completed.

MEMBER
--------------------------------------------------
+DATA/prod/redo01.log

old   1: alter system dump logfile '&log_file' scn min &scn_1 scn max &scn_2
new   1: alter system dump logfile '+DATA/prod/redo01.log' scn min   13228213 scn max  13228215

System altered.

dumo sql  :alter system dump logfile '+DATA/prod/redo01.log' scn min 13228213 scn max 13228215

PL/SQL procedure successfully completed.

old   1: alter system dump logfile '&log_file' scn min &scn_2 scn max &scn_3
new   1: alter system dump logfile '+DATA/prod/redo01.log' scn min   13228215 scn max  13228216

System altered.

dumo sql  :alter system dump logfile '+DATA/prod/redo01.log' scn min 13228215 scn max 13228216

PL/SQL procedure successfully completed.

old   1: alter system dump logfile '&log_file' scn min &scn_3 scn max &scn_4
new   1: alter system dump logfile '+DATA/prod/redo01.log' scn min   13228216 scn max  13228219

System altered.

dumo sql  :alter system dump logfile '+DATA/prod/redo01.log' scn min 13228216 scn max 13228219

PL/SQL procedure successfully completed.

TRACE_FILE_NAME
----------------------------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/prod/PROD/trace/prod_ora_7071.trc



点击(此处)折叠或打开

  1. [root@ocp02 /]# more /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_ora_7071.trc
  2. Trace file /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_ora_7071.trc
  3. Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
  4. With the Partitioning, Automatic Storage Management, OLAP, Data Mining
  5. and Real Application Testing options
  6. ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1
  7. System name: Linux
  8. Node name: ocp02
  9. Release: 3.8.13-16.2.1.el6uek.x86_64
  10. Version: #1 SMP Thu Nov 7 17:01:44 PST 2013
  11. Machine: x86_64
  12. Instance name: PROD
  13. Redo thread mounted by this instance: 1
  14. Oracle process number: 23
  15. Unix process pid: 7071, image: oracle@ocp02 (TNS V1-V3)


  16. *** 2015-09-11 17:20:34.861
  17. *** SESSION ID:(148.21) 2015-09-11 17:20:34.861
  18. *** CLIENT ID:() 2015-09-11 17:20:34.861
  19. *** SERVICE NAME:(SYS$USERS) 2015-09-11 17:20:34.861
  20. *** MODULE NAME:(sqlplus@ocp02 (TNS V1-V3)) 2015-09-11 17:20:34.861
  21. *** ACTION NAME:() 2015-09-11 17:20:34.861
  22.  
  23. Initial buffer sizes: read 1024K, overflow 832K, change 805K
  24.  
  25. DUMP OF REDO FROM FILE '+DATA/prod/redo01.log'
  26.  Opcodes *.*
  27.  RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff
  28.  SCNs: scn: 0x0000.00c9d8b5 (13228213) thru scn: 0x0000.00c9d8b7 (13228215)
  29.  Times: creation thru eternity
  30.  FILE HEADER:
  31.         Compatibility Vsn = 186647552=0xb200400
  32.         Db ID=256082616=0xf4382b8, Db Name='PROD'
  33.         Activation ID=280829487=0x10bd1e2f
  34.         Control Seq=15559=0x3cc7, File size=102400=0x19000
  35.         File Number=1, Blksiz=512, File Type=2 LOG
  36.  descrip:"Thread 0001, Seq# 0000000157, SCN 0x000000c9d8b4-0xffffffffffff"
  37.  thread: 1 nab: 0xffffffff seq: 0x0000009d hws: 0x1 eot: 1 dis: 0
  38.  resetlogs count: 0x33cb6ac8 scn: 0x0000.0081cdf7 (8506871)
  39.  prev resetlogs count: 0x33ae8481 scn: 0x0000.007a5b94 (8018836)
  40.  Low scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
  41.  Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
  42.  Enabled scn: 0x0000.0081cdf7 (8506871) 01/14/2015 12:19:20
  43.  Thread closed scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
  44.  Disk cksum: 0x92cd Calc cksum: 0x92cd
  45.  Terminal recovery stop scn: 0x0000.00000000
  46.  Terminal recovery 01/01/1988 00:00:00
  47.  Most recent redo scn: 0x0000.00000000
  48.  Largest LWN: 0 blocks
  49.  End-of-redo stream : No
  50.  Unprotected mode
  51.  Miscellaneous flags: 0x800000
  52.  Thread internal enable indicator: thr: 0, seq: 0 scn: 0x0000.00000000
  53.  Zero blocks: 0
  54.  Format ID is 2
  55.  redo log key is 17e3d82ad2e75c99be94764bae96f58
  56.  redo log key flag is 5
  57.  Enabled redo threads: 1
  58.  
  59. REDO RECORD - Thread:1 RBA: 0x00009d.00000002.0010 LEN: 0x022c VLD: 0x05
  60. SCN: 0x0000.00c9d8b6 SUBSCN: 1 09/11/2015 17:20:34
  61. (LWN RBA: 0x00009d.00000002.0010 LEN: 0002 NST: 0001 SCN: 0x0000.00c9d8b4)
  62. CHANGE #1 TYP:0 CLS:19 AFN:3 DBA:0x00c00090 OBJ:4294967295 SCN:0x0000.00c9d894 SEQ:1 OP: undo header transaction status 更新为10 
  63. 5.2 ENC:0 RBL:
  64. ktudh redo: slt: 0x0003 sqn: 0x00001562 flg: 0x0012 siz: 168 fbi: 0
  65.             uba: 0x00c00dba.0187.0e pxid: 0x0000.000.00000000
  66. CHANGE #2 TYP:0 CLS:20 AFN:3 DBA:0x00c00dba OBJ:4294967295 SCN:0x0000.00c9d893 SEQ:3 OP:undo block, 回滚值 写入 undo block  
  67. 5.1 ENC:0 RBL:0
  68. ktudb redo: siz: 168 spc: 6100 flg: 0x0012 seq: 0x0187 rec: 0x0e
  69.             xid: 0x0002.003.00001562
  70. ktubl redo: slt: 3 rci: 0 opc: 11.1 [objn: 21291 objd: 21291 tsn: 0]
  71. Undo type: Regular undo Begin trans Last buffer split: No
  72. Temp Object: No
  73. Tablespace Undo: No
  74.              0x00000000 prev ctl uba: 0x00c00dba.0187.0b
  75. prev ctl max cmt scn: 0x0000.00c9d528 prev tx cmt scn: 0x0000.00c9d53e
  76. txn start scn: 0xffff.ffffffff logon user: 0 prev brb: 12586386 prev bcl: 0 BuExt id
  77. x: 0 flg2: 0
  78. KDO undo record:
  79. KTB Redo
  80. op: 0x03 ver: 0x01
  81. compat bit: 4 (post-11) padding: 1
  82. op: Z
  83. KDO Op code: URP row dependencies Disabled
  84.   xtype: XA flags: 0x00000000 bdba: 0x0040fc09 hdba: 0x0040fc08
  85. itli: 2 ispac: 0 maxfr: 4863
  86. tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 0
  87. ncol: 2 nnew: 1 size: -4
  88. col 1: [ 9] 46 49 52 53 54 20 52 4f 57  UPDATE 之前的原值
  89. CHANGE #3 TYP:2 CLS:1 AFN:1 DBA:0x0040fc09 OBJ:21291 SCN:0x0000.00c9d8b0 SEQ:1 OP:11.5 E   redo 记录 行更新操作 11.5 记录更新后的值如下
  90. NC:0 RBL:0
  91. KTB Redo
  92. op: 0x11 ver: 0x01
  93. compat bit: 4 (post-11) padding: 1
  94. op: F xid: 0x0002.003.00001562 uba: 0x00c00dba.0187.0e
  95. Block cleanout record, scn: 0x0000.00c9d8b6 ver: 0x01 opt: 0x02, entries follow...
  96.   itli: 1 flg: 2 scn: 0x0000.00c9d8b0
  97. KDO Op code: URP row dependencies Disabled
  98.   xtype: XA flags: 0x00000000 bdba: 0x0040fc09 hdba: 0x0040fc08
  99. itli: 2 ispac: 0 maxfr: 4863
  100. tabn: 0 slot: 0(0x0) flag: 0x2c lock: 2 ckix: 0
  101. ncol: 2 nnew: 1 size: 4
  102. col 1: [13] 46 49 52 53 54 20 52 4f 57 20 55 50 44    update 后的新值
  103. CHANGE #4 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:0 OP:5.20 ENC:0  事物审计记录
  104. session number = 148
  105. serial number = 21
  106. transaction name =
  107. version 186647552
  108. audit sessionid 4294967295
  109. Client Id =
  110. login username = SYS
  111. END OF REDO DUMP
  112. ----- Redo read statistics for thread 1 -----
  113. Read rate (ASYNC): 1Kb in 0.26s => 0.00 Mb/sec
  114. Total redo bytes: 1023Kb Longest record: 0Kb, moves: 0/1 moved: 0Mb (0%)
  115. Longest LWN: 1Kb, reads: 1
  116. Last redo scn: 0x0000.00c9d8b6 (13228214)
  117. Change vector header moves = 1/4 (25%)
  118. ----------------------------------------------
  119. 第二次 redo dump
  120. *** 2015-09-11 17:20:35.577
  121. Initial buffer sizes: read 1024K, overflow 832K, change 805K
  122. redo文件头 
  123. DUMP OF REDO FROM FILE '+DATA/prod/redo01.log'
  124.  Opcodes *.*
  125.  RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff
  126.  SCNs: scn: 0x0000.00c9d8b7 (13228215) thru scn: 0x0000.00c9d8b8 (13228216)
  127.  Times: creation thru eternity
  128.  FILE HEADER:
  129.         Compatibility Vsn = 186647552=0xb200400
  130.         Db ID=256082616=0xf4382b8, Db Name='PROD'
  131.         Activation ID=280829487=0x10bd1e2f
  132.         Control Seq=15559=0x3cc7, File size=102400=0x19000
  133.         File Number=1, Blksiz=512, File Type=2 LOG
  134.  descrip:"Thread 0001, Seq# 0000000157, SCN 0x000000c9d8b4-0xffffffffffff"
  135.  thread: 1 nab: 0xffffffff seq: 0x0000009d hws: 0x1 eot: 1 dis: 0
  136.  resetlogs count: 0x33cb6ac8 scn: 0x0000.0081cdf7 (8506871)
  137.  prev resetlogs count: 0x33ae8481 scn: 0x0000.007a5b94 (8018836)
  138.  Low scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
  139.  Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
  140.  Enabled scn: 0x0000.0081cdf7 (8506871) 01/14/2015 12:19:20
  141.  Thread closed scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
  142.  Disk cksum: 0x92cd Calc cksum: 0x92cd
  143.  Terminal recovery stop scn: 0x0000.00000000
  144.  Terminal recovery 01/01/1988 00:00:00
  145.  Most recent redo scn: 0x0000.00000000
  146.  Largest LWN: 0 blocks
  147.  End-of-redo stream : No
  148.  Unprotected mode
  149.  Miscellaneous flags: 0x800000
  150.  Thread internal enable indicator: thr: 0, seq: 0 scn: 0x0000.00000000
  151.  Zero blocks: 0
  152.  Format ID is 2
  153.  redo log key is 17e3d82ad2e75c99be94764bae96f58
  154.  redo log key flag is 5
  155.  Enabled redo threads: 1
  156. END OF REDO DUMP
  157. ----- Redo read statistics for thread 1 -----
  158. Read rate (ASYNC): 1Kb in 0.07s => 0.01 Mb/sec
  159. Total redo bytes: 1023Kb Longest record: 0Kb, moves: 0/1 moved: 0Mb (0%)
  160. Longest LWN: 1Kb, reads: 1
  161. Last redo scn: 0x0000.00c9d8b6 (13228214)
  162. Change vector header moves = 1/4 (25%)
  163. ----------------------------------------------
  164. Initial buffer sizes: read 1024K, overflow 832K, change 805K
  165. 第3次 dump redo 
  166. DUMP OF REDO FROM FILE '+DATA/prod/redo01.log'
  167.  Opcodes *.*
  168.  RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff
  169.  SCNs: scn: 0x0000.00c9d8b8 (13228216) thru scn: 0x0000.00c9d8bb (13228219)
  170.  Times: creation thru eternity
  171.  FILE HEADER:
  172.         Compatibility Vsn = 186647552=0xb200400
  173.         Db ID=256082616=0xf4382b8, Db Name='PROD'
  174.         Activation ID=280829487=0x10bd1e2f
  175.         Control Seq=15559=0x3cc7, File size=102400=0x19000
  176.         File Number=1, Blksiz=512, File Type=2 LOG
  177.  descrip:"Thread 0001, Seq# 0000000157, SCN 0x000000c9d8b4-0xffffffffffff"
  178.  thread: 1 nab: 0xffffffff seq: 0x0000009d hws: 0x1 eot: 1 dis: 0
  179.  resetlogs count: 0x33cb6ac8 scn: 0x0000.0081cdf7 (8506871)
  180.  prev resetlogs count: 0x33ae8481 scn: 0x0000.007a5b94 (8018836)
  181.  Low scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
  182.  Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
  183.  Enabled scn: 0x0000.0081cdf7 (8506871) 01/14/2015 12:19:20
  184.  Thread closed scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
  185.  Disk cksum: 0x92cd Calc cksum: 0x92cd
  186.  Terminal recovery stop scn: 0x0000.00000000
  187.  Terminal recovery 01/01/1988 00:00:00
  188.  Most recent redo scn: 0x0000.00000000
  189.  Largest LWN: 0 blocks
  190.  End-of-redo stream : No
  191.  Unprotected mode
  192.  Miscellaneous flags: 0x800000
  193.  Thread internal enable indicator: thr: 0, seq: 0 scn: 0x0000.00000000
  194.  Zero blocks: 0
  195.  Format ID is 2
  196.  redo log key is 17e3d82ad2e75c99be94764bae96f58
  197.  redo log key flag is 5
  198.  Enabled redo threads: 1
  199.  
  200. REDO RECORD - Thread:1 RBA: 0x00009d.00000003.004c LEN: 0x00a4 VLD: 0x01
  201. SCN: 0x0000.00c9d8b9 SUBSCN: 1 09/11/2015 17:20:34
  202. (LWN RBA: 0x00009d.00000002.0010 LEN: 0002 NST: 0001 SCN: 0x0000.00c9d8b4)
  203. CHANGE #1 TYP:0 CLS:19 AFN:3 DBA:0x00c00090 OBJ:4294967295 SCN:0x0000.00c9d8b6 SEQ:1 OP:
  204. 5.4 ENC:0 RBL:0  事物提交操作
  205. ktucm redo: slt: 0x0003 sqn: 0x00001562 srt: 0 sta: 9 flg: 0x2 ktucf redo: uba: 0x00c00d
  206. ba.0187.0e ext: 2 spc: 5930 fbi: 0
  207. CHANGE #2 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:0 OP:24.4 ENC:0
  208. END OF REDO DUMP
  209. ----- Redo read statistics for thread 1 -----
  210. Read rate (ASYNC): 1Kb in 0.06s => 0.02 Mb/sec
  211. Total redo bytes: 1023Kb Longest record: 0Kb, moves: 0/2 moved: 0Mb (0%)
  212. Longest LWN: 1Kb, reads: 1
  213. Last redo scn: 0x0000.00c9d8b9 (13228217)
  214. Change vector header moves = 1/6 (16%)
  215. ----------------------------------------------

IN_MEMORY_UNDO 没有起作用,可能虚拟机环境有限


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

转载于:http://blog.itpub.net/21980353/viewspace-1797547/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值