看了travel dba的blog 关于 redo internal 的干货,自己也学习研究了一下,俗话说好记忆不如烂笔头,我就写下来,记之。
点击(此处)折叠或打开
- -- +----------------------------------------------------------------------------+
- -- | Travel Liu |
- -- | travel.liu@outlook.com |
- -- | www.traveldba.com |
- -- |----------------------------------------------------------------------------|
- -- | |
- -- |----------------------------------------------------------------------------|
- -- | DATABASE : Oracle |
- -- | FILE : redo_internals_update.sql |
- -- | CLASS : Redo_Internal |
- -- | PURPOSE : This script will Single row update statement |
- -- | and dump the log file |
- -- +----------------------------------------------------------------------------+
- -- | MODIFIED (YYYY/MM/DD) |
- -- | Travel.liu 2013/09/14 - First Edition |
- -- +----------------------------------------------------------------------------+
-
-
- -- |----------------------------------------------------------------------------|
- set serveroutput on size 1000000
- prompt Test case : Redo internals : Single row update on heap table with no index
-
- drop table redo_internals;
- create table redo_internals
- (
- col1 char(2),
- col2 varchar2(20)
- )
- ;
- -- insert into table two record
- --
- insert into redo_internals values ('A1','FIRST ROW');
- insert into redo_internals values ('A2','SECOND ROW');
-
-
- commit;
-
- alter system switch logfile;
-
- def scn_1="NA"
- col CURRENT_scn new_value scn_1
- select CURRENT_scn from v$DATABASE;
-
- exec dbms_output.put_line ('scn_1 :'||&scn_1);
-
- select getmystat('redo size') from dual;
-
- update redo_internals set col2='FIRST ROW UPD' where col1 ='A1';
-
- select getmystat('redo size') from dual;
-
- def scn_2="NA"
- col CURRENT_scn new_value scn_2
- select CURRENT_scn from v$DATABASE;
- exec dbms_output.put_line ('scn_2 :'||&scn_2);
-
-
- def scn_3="NA"
- col CURRENT_scn new_value scn_3
- select CURRENT_scn from v$DATABASE;
- exec dbms_output.put_line ('scn_3 :'||&scn_3);
-
- commit;
-
- def scn_4="NA"
- col CURRENT_scn new_value scn_4
- select CURRENT_scn from v$DATABASE;
- exec dbms_output.put_line ('scn_4 :'||&scn_4);
-
- -- |----------------------------------------------------------------------------|
- -- | dump redo last log
- -- |----------------------------------------------------------------------------|
-
- def log_file="NA"
- col member for a50 new_value log_file;
- select member from
- v$log lg, v$logfile lgfile
- where lg.group# = lgfile.group# and lg.status='CURRENT';
-
- alter system dump logfile '&log_file' scn min &scn_1 scn max &scn_2;
-
- 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);
-
- alter system dump logfile '&log_file' scn min &scn_2 scn max &scn_3;
-
- 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);
-
- alter system dump logfile '&log_file' scn min &scn_3 scn max &scn_4;
-
- 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);
- -- |----------------------------------------------------------------------------|
-
- col trace_file_name for a100
-
- SELECT d.VALUE || '/' || UPPER(RTRIM(i.INSTANCE, CHR(0))) || '_ora_' || --modify by desert_xu
- p.spid || '.trc' trace_file_name
- FROM (SELECT p.spid
- FROM v$mystat m, v$session s, v$process p
- WHERE m.statistic# = 1
- AND s.SID = m.SID
- AND p.addr = s.paddr) p,
- (SELECT t.INSTANCE
- FROM v$thread t, v$parameter v
- WHERE v.NAME = 'thread'
- AND (v.VALUE = 0 OR t.thread# = TO_NUMBER(v.VALUE))) i,
- (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') d;
- -- |----------------------------------------------------------------------------|
-
- undef log_file
- undef scn_1
- undef scn_2
- undef scn_3
- 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
点击(此处)折叠或打开
- [root@ocp02 /]# more /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_ora_7071.trc
- Trace file /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_ora_7071.trc
- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, Automatic Storage Management, OLAP, Data Mining
- and Real Application Testing options
- ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1
- System name: Linux
- Node name: ocp02
- Release: 3.8.13-16.2.1.el6uek.x86_64
- Version: #1 SMP Thu Nov 7 17:01:44 PST 2013
- Machine: x86_64
- Instance name: PROD
- Redo thread mounted by this instance: 1
- Oracle process number: 23
- Unix process pid: 7071, image: oracle@ocp02 (TNS V1-V3)
-
-
- *** 2015-09-11 17:20:34.861
- *** SESSION ID:(148.21) 2015-09-11 17:20:34.861
- *** CLIENT ID:() 2015-09-11 17:20:34.861
- *** SERVICE NAME:(SYS$USERS) 2015-09-11 17:20:34.861
- *** MODULE NAME:(sqlplus@ocp02 (TNS V1-V3)) 2015-09-11 17:20:34.861
- *** ACTION NAME:() 2015-09-11 17:20:34.861
-
- Initial buffer sizes: read 1024K, overflow 832K, change 805K
-
- DUMP OF REDO FROM FILE '+DATA/prod/redo01.log'
- Opcodes *.*
- RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff
- SCNs: scn: 0x0000.00c9d8b5 (13228213) thru scn: 0x0000.00c9d8b7 (13228215)
- Times: creation thru eternity
- FILE HEADER:
- Compatibility Vsn = 186647552=0xb200400
- Db ID=256082616=0xf4382b8, Db Name='PROD'
- Activation ID=280829487=0x10bd1e2f
- Control Seq=15559=0x3cc7, File size=102400=0x19000
- File Number=1, Blksiz=512, File Type=2 LOG
- descrip:"Thread 0001, Seq# 0000000157, SCN 0x000000c9d8b4-0xffffffffffff"
- thread: 1 nab: 0xffffffff seq: 0x0000009d hws: 0x1 eot: 1 dis: 0
- resetlogs count: 0x33cb6ac8 scn: 0x0000.0081cdf7 (8506871)
- prev resetlogs count: 0x33ae8481 scn: 0x0000.007a5b94 (8018836)
- Low scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
- Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
- Enabled scn: 0x0000.0081cdf7 (8506871) 01/14/2015 12:19:20
- Thread closed scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
- Disk cksum: 0x92cd Calc cksum: 0x92cd
- Terminal recovery stop scn: 0x0000.00000000
- Terminal recovery 01/01/1988 00:00:00
- Most recent redo scn: 0x0000.00000000
- Largest LWN: 0 blocks
- End-of-redo stream : No
- Unprotected mode
- Miscellaneous flags: 0x800000
- Thread internal enable indicator: thr: 0, seq: 0 scn: 0x0000.00000000
- Zero blocks: 0
- Format ID is 2
- redo log key is 17e3d82ad2e75c99be94764bae96f58
- redo log key flag is 5
- Enabled redo threads: 1
-
- REDO RECORD - Thread:1 RBA: 0x00009d.00000002.0010 LEN: 0x022c VLD: 0x05
- SCN: 0x0000.00c9d8b6 SUBSCN: 1 09/11/2015 17:20:34
- (LWN RBA: 0x00009d.00000002.0010 LEN: 0002 NST: 0001 SCN: 0x0000.00c9d8b4)
- CHANGE #1 TYP:0 CLS:19 AFN:3 DBA:0x00c00090 OBJ:4294967295 SCN:0x0000.00c9d894 SEQ:1 OP: undo header transaction status 更新为10
- 5.2 ENC:0 RBL:0
- ktudh redo: slt: 0x0003 sqn: 0x00001562 flg: 0x0012 siz: 168 fbi: 0
- uba: 0x00c00dba.0187.0e pxid: 0x0000.000.00000000
- CHANGE #2 TYP:0 CLS:20 AFN:3 DBA:0x00c00dba OBJ:4294967295 SCN:0x0000.00c9d893 SEQ:3 OP:undo block, 回滚值 写入 undo block
- 5.1 ENC:0 RBL:0
- ktudb redo: siz: 168 spc: 6100 flg: 0x0012 seq: 0x0187 rec: 0x0e
- xid: 0x0002.003.00001562
- ktubl redo: slt: 3 rci: 0 opc: 11.1 [objn: 21291 objd: 21291 tsn: 0]
- Undo type: Regular undo Begin trans Last buffer split: No
- Temp Object: No
- Tablespace Undo: No
- 0x00000000 prev ctl uba: 0x00c00dba.0187.0b
- prev ctl max cmt scn: 0x0000.00c9d528 prev tx cmt scn: 0x0000.00c9d53e
- txn start scn: 0xffff.ffffffff logon user: 0 prev brb: 12586386 prev bcl: 0 BuExt id
- x: 0 flg2: 0
- KDO undo record:
- KTB Redo
- op: 0x03 ver: 0x01
- compat bit: 4 (post-11) padding: 1
- op: Z
- KDO Op code: URP row dependencies Disabled
- xtype: XA flags: 0x00000000 bdba: 0x0040fc09 hdba: 0x0040fc08
- itli: 2 ispac: 0 maxfr: 4863
- tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 0
- ncol: 2 nnew: 1 size: -4
- col 1: [ 9] 46 49 52 53 54 20 52 4f 57 UPDATE 之前的原值
- CHANGE #3 TYP:2 CLS:1 AFN:1 DBA:0x0040fc09 OBJ:21291 SCN:0x0000.00c9d8b0 SEQ:1 OP:11.5 E redo 记录 行更新操作 11.5 记录更新后的值如下
- NC:0 RBL:0
- KTB Redo
- op: 0x11 ver: 0x01
- compat bit: 4 (post-11) padding: 1
- op: F xid: 0x0002.003.00001562 uba: 0x00c00dba.0187.0e
- Block cleanout record, scn: 0x0000.00c9d8b6 ver: 0x01 opt: 0x02, entries follow...
- itli: 1 flg: 2 scn: 0x0000.00c9d8b0
- KDO Op code: URP row dependencies Disabled
- xtype: XA flags: 0x00000000 bdba: 0x0040fc09 hdba: 0x0040fc08
- itli: 2 ispac: 0 maxfr: 4863
- tabn: 0 slot: 0(0x0) flag: 0x2c lock: 2 ckix: 0
- ncol: 2 nnew: 1 size: 4
- col 1: [13] 46 49 52 53 54 20 52 4f 57 20 55 50 44 update 后的新值
- CHANGE #4 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:0 OP:5.20 ENC:0 事物审计记录
- session number = 148
- serial number = 21
- transaction name =
- version 186647552
- audit sessionid 4294967295
- Client Id =
- login username = SYS
- END OF REDO DUMP
- ----- Redo read statistics for thread 1 -----
- Read rate (ASYNC): 1Kb in 0.26s => 0.00 Mb/sec
- Total redo bytes: 1023Kb Longest record: 0Kb, moves: 0/1 moved: 0Mb (0%)
- Longest LWN: 1Kb, reads: 1
- Last redo scn: 0x0000.00c9d8b6 (13228214)
- Change vector header moves = 1/4 (25%)
- ----------------------------------------------
- 第二次 redo dump
- *** 2015-09-11 17:20:35.577
- Initial buffer sizes: read 1024K, overflow 832K, change 805K
- redo文件头
- DUMP OF REDO FROM FILE '+DATA/prod/redo01.log'
- Opcodes *.*
- RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff
- SCNs: scn: 0x0000.00c9d8b7 (13228215) thru scn: 0x0000.00c9d8b8 (13228216)
- Times: creation thru eternity
- FILE HEADER:
- Compatibility Vsn = 186647552=0xb200400
- Db ID=256082616=0xf4382b8, Db Name='PROD'
- Activation ID=280829487=0x10bd1e2f
- Control Seq=15559=0x3cc7, File size=102400=0x19000
- File Number=1, Blksiz=512, File Type=2 LOG
- descrip:"Thread 0001, Seq# 0000000157, SCN 0x000000c9d8b4-0xffffffffffff"
- thread: 1 nab: 0xffffffff seq: 0x0000009d hws: 0x1 eot: 1 dis: 0
- resetlogs count: 0x33cb6ac8 scn: 0x0000.0081cdf7 (8506871)
- prev resetlogs count: 0x33ae8481 scn: 0x0000.007a5b94 (8018836)
- Low scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
- Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
- Enabled scn: 0x0000.0081cdf7 (8506871) 01/14/2015 12:19:20
- Thread closed scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
- Disk cksum: 0x92cd Calc cksum: 0x92cd
- Terminal recovery stop scn: 0x0000.00000000
- Terminal recovery 01/01/1988 00:00:00
- Most recent redo scn: 0x0000.00000000
- Largest LWN: 0 blocks
- End-of-redo stream : No
- Unprotected mode
- Miscellaneous flags: 0x800000
- Thread internal enable indicator: thr: 0, seq: 0 scn: 0x0000.00000000
- Zero blocks: 0
- Format ID is 2
- redo log key is 17e3d82ad2e75c99be94764bae96f58
- redo log key flag is 5
- Enabled redo threads: 1
- END OF REDO DUMP
- ----- Redo read statistics for thread 1 -----
- Read rate (ASYNC): 1Kb in 0.07s => 0.01 Mb/sec
- Total redo bytes: 1023Kb Longest record: 0Kb, moves: 0/1 moved: 0Mb (0%)
- Longest LWN: 1Kb, reads: 1
- Last redo scn: 0x0000.00c9d8b6 (13228214)
- Change vector header moves = 1/4 (25%)
- ----------------------------------------------
- Initial buffer sizes: read 1024K, overflow 832K, change 805K
- 第3次 dump redo
- DUMP OF REDO FROM FILE '+DATA/prod/redo01.log'
- Opcodes *.*
- RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff
- SCNs: scn: 0x0000.00c9d8b8 (13228216) thru scn: 0x0000.00c9d8bb (13228219)
- Times: creation thru eternity
- FILE HEADER:
- Compatibility Vsn = 186647552=0xb200400
- Db ID=256082616=0xf4382b8, Db Name='PROD'
- Activation ID=280829487=0x10bd1e2f
- Control Seq=15559=0x3cc7, File size=102400=0x19000
- File Number=1, Blksiz=512, File Type=2 LOG
- descrip:"Thread 0001, Seq# 0000000157, SCN 0x000000c9d8b4-0xffffffffffff"
- thread: 1 nab: 0xffffffff seq: 0x0000009d hws: 0x1 eot: 1 dis: 0
- resetlogs count: 0x33cb6ac8 scn: 0x0000.0081cdf7 (8506871)
- prev resetlogs count: 0x33ae8481 scn: 0x0000.007a5b94 (8018836)
- Low scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
- Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
- Enabled scn: 0x0000.0081cdf7 (8506871) 01/14/2015 12:19:20
- Thread closed scn: 0x0000.00c9d8b4 (13228212) 09/11/2015 17:20:34
- Disk cksum: 0x92cd Calc cksum: 0x92cd
- Terminal recovery stop scn: 0x0000.00000000
- Terminal recovery 01/01/1988 00:00:00
- Most recent redo scn: 0x0000.00000000
- Largest LWN: 0 blocks
- End-of-redo stream : No
- Unprotected mode
- Miscellaneous flags: 0x800000
- Thread internal enable indicator: thr: 0, seq: 0 scn: 0x0000.00000000
- Zero blocks: 0
- Format ID is 2
- redo log key is 17e3d82ad2e75c99be94764bae96f58
- redo log key flag is 5
- Enabled redo threads: 1
-
- REDO RECORD - Thread:1 RBA: 0x00009d.00000003.004c LEN: 0x00a4 VLD: 0x01
- SCN: 0x0000.00c9d8b9 SUBSCN: 1 09/11/2015 17:20:34
- (LWN RBA: 0x00009d.00000002.0010 LEN: 0002 NST: 0001 SCN: 0x0000.00c9d8b4)
- CHANGE #1 TYP:0 CLS:19 AFN:3 DBA:0x00c00090 OBJ:4294967295 SCN:0x0000.00c9d8b6 SEQ:1 OP:
- 5.4 ENC:0 RBL:0 事物提交操作
- ktucm redo: slt: 0x0003 sqn: 0x00001562 srt: 0 sta: 9 flg: 0x2 ktucf redo: uba: 0x00c00d
- ba.0187.0e ext: 2 spc: 5930 fbi: 0
- CHANGE #2 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:0 OP:24.4 ENC:0
- END OF REDO DUMP
- ----- Redo read statistics for thread 1 -----
- Read rate (ASYNC): 1Kb in 0.06s => 0.02 Mb/sec
- Total redo bytes: 1023Kb Longest record: 0Kb, moves: 0/2 moved: 0Mb (0%)
- Longest LWN: 1Kb, reads: 1
- Last redo scn: 0x0000.00c9d8b9 (13228217)
- Change vector header moves = 1/6 (16%)
- ----------------------------------------------
IN_MEMORY_UNDO 没有起作用,可能虚拟机环境有限
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21980353/viewspace-1797547/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21980353/viewspace-1797547/