看了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博客 ” ,链接:https://blog.itpub.net/21980353/viewspace-1797547/
,如需转载,请注明出处,否则将追究法律责任。