Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Block DUMP OF IOT secondary indexes showing PRIMARY KEY COLUMN VALUES AND ROWID "guess"
- SQL*Plus: RELEASE 12.1.0.2.0 Production ON Sun May 17 23:41:10 2015
- Copyright (c) 1982, 2014, Oracle. ALL rights reserved.
- Connected.
- SQL> COLUMN segment_name new_value segment_name format a30
- SQL> COLUMN index_name new_value index_name format a30
- SQL> COLUMN table_name new_value table_name format a30
- SQL>
- SQL> CREATE TABLESPACE users;
- TABLESPACE created.
- SQL> ALTER USER u DEFAULT TABLESPACE users;
- USER altered.
- SQL>
- SQL> CREATE TABLE tbliot
- 2 (
- 3 p VARCHAR2(10),
- 4 q VARCHAR2(10),
- 5 a VARCHAR2(10),
- 6 b VARCHAR2(10),
- 7 CONSTRAINT tbliot_pk PRIMARY KEY( p,q),
- 8 l clob
- 9 )
- 10 ORGANIZATION INDEX
- 11 including a
- 12 overflow
- 13 lob(l) store AS securefile
- 14 (enable storage IN ROW);
- TABLE created.
- SQL>
- SQL> CREATE INDEX secondarya ON tbliot ( a );
- INDEX created.
- SQL> CREATE INDEX secondaryb ON tbliot ( b );
- INDEX created.
- SQL>
- SQL> SELECT segment_name, segment_type, segment_subtype, tablespace_name FROM user_segments;
- SEGMENT_NAME SEGMENT_TYPE SEGMENT_SU TABLESPACE_NAME
- ------------------------------ ------------------ ---------- ------------------------------
- SYS_IOT_OVER_93301 TABLE ASSM USERS
- SYS_IL0000093301C00005$$ LOBINDEX ASSM USERS
- TBLIOT_PK INDEX ASSM USERS
- SECONDARYA INDEX ASSM USERS
- SECONDARYB INDEX ASSM USERS
- SYS_LOB0000093301C00005$$ LOBSEGMENT SECUREFILE USERS
- 6 ROWS selected.
- SQL> INSERT INTO tbliot(p,q,a,b,l) VALUES ( 'IIII','QQQQ','AAAA','BBBB','LLLL');
- 1 ROW created.
- SQL> COMMIT;
- COMMIT complete.
- SQL> ALTER SYSTEM checkpoint;
- SYSTEM altered.
- SQL> SELECT segment_name, segment_type, segment_subtype, tablespace_name FROM user_segments;
- SEGMENT_NAME SEGMENT_TYPE SEGMENT_SU TABLESPACE_NAME
- ------------------------------ ------------------ ---------- ------------------------------
- SYS_IOT_OVER_93301 TABLE ASSM USERS
- SYS_IL0000093301C00005$$ LOBINDEX ASSM USERS
- TBLIOT_PK INDEX ASSM USERS
- SECONDARYA INDEX ASSM USERS
- SECONDARYB INDEX ASSM USERS
- SYS_LOB0000093301C00005$$ LOBSEGMENT SECUREFILE USERS
- 6 ROWS selected.
- SQL>
- SQL> ALTER SESSION SET tracefile_identifier = iotpk;
- SESSION altered.
- SQL> @ dumpextent.SQL U TBLIOT_PK 0
- SQL> define owner=&&1
- SQL> define segment_name=&&2
- SQL> define exent_id=&&3
- SQL>
- SQL> COLUMN owner format a30
- SQL> COLUMN segment_name format a30
- SQL>
- SQL> COLUMN file_id new_value file_id
- SQL> COLUMN block_min new_value block_min
- SQL> COLUMN block_max new_value block_max
- SQL>
- SQL> SELECT owner, segment_name, extent_id, blocks, file_id, block_id,
- 2 block_id block_min, block_id + blocks - 1 block_max
- 3 FROM dba_extents
- 4 WHERE owner = '&&owner'
- 5 AND segment_name = '&&segment_name'
- 6 AND partition_name IS NULL
- 7 AND extent_id = &&exent_id;
- old 4: WHERE owner = '&&owner'
- NEW 4: WHERE owner = 'U'
- old 5: AND segment_name = '&&segment_name'
- NEW 5: AND segment_name = 'TBLIOT_PK'
- old 7: AND extent_id = &&exent_id
- NEW 7: AND extent_id = 0
- OWNER SEGMENT_NAME EXTENT_ID BLOCKS FILE_ID BLOCK_ID BLOCK_MIN BLOCK_MAX
- ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
- U TBLIOT_PK 0 8 35 160 160 167
- SQL>
- SQL> ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max;
- old 1: ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max
- NEW 1: ALTER SYSTEM DUMP datafile 35 block MIN 160 block MAX 167
- SYSTEM altered.
- SQL>
- SQL> @ tracefile.SQL
- SQL> COLUMN tracefile new_value tracefile format a120
- SQL>
- SQL> SELECT p.tracefile
- 2 FROM v$process p
- 3 join v$session s ON p.addr = s.paddr
- 4 WHERE s.sid = SYS_CONTEXT('userenv', 'sid' );
- TRACEFILE
- ------------------------------------------------------------------------------------------------------------------------
- /u01/app/oracle/diag/rdbms/cdb12102/cdb12102/trace/cdb12102_ora_22863_IOTPK.trc
- SQL>
- SQL>
- SQL> SELECT table_name, segment_name, index_name FROM user_lobs
- 2 WHERE table_name = 'TBLIOT' AND column_name = 'L';
- TABLE_NAME SEGMENT_NAME INDEX_NAME
- ------------------------------ ------------------------------ ------------------------------
- TBLIOT SYS_LOB0000093301C00005$$ SYS_IL0000093301C00005$$
- SQL> ALTER SESSION SET tracefile_identifier = lobseg;
- SESSION altered.
- SQL> @ dumpextent.SQL U &&segment_name 0
- SQL> define owner=&&1
- SQL> define segment_name=&&2
- SQL> define exent_id=&&3
- SQL>
- SQL> COLUMN owner format a30
- SQL> COLUMN segment_name format a30
- SQL>
- SQL> COLUMN file_id new_value file_id
- SQL> COLUMN block_min new_value block_min
- SQL> COLUMN block_max new_value block_max
- SQL>
- SQL> SELECT owner, segment_name, extent_id, blocks, file_id, block_id,
- 2 block_id block_min, block_id + blocks - 1 block_max
- 3 FROM dba_extents
- 4 WHERE owner = '&&owner'
- 5 AND segment_name = '&&segment_name'
- 6 AND partition_name IS NULL
- 7 AND extent_id = &&exent_id;
- old 4: WHERE owner = '&&owner'
- NEW 4: WHERE owner = 'U'
- old 5: AND segment_name = '&&segment_name'
- NEW 5: AND segment_name = 'SYS_LOB0000093301C00005$$'
- old 7: AND extent_id = &&exent_id
- NEW 7: AND extent_id = 0
- OWNER SEGMENT_NAME EXTENT_ID BLOCKS FILE_ID BLOCK_ID BLOCK_MIN BLOCK_MAX
- ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
- U SYS_LOB0000093301C00005$$ 0 16 35 136 136 151
- SQL>
- SQL> ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max;
- old 1: ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max
- NEW 1: ALTER SYSTEM DUMP datafile 35 block MIN 136 block MAX 151
- SYSTEM altered.
- SQL>
- SQL> @ tracefile.SQL
- SQL> COLUMN tracefile new_value tracefile format a120
- SQL>
- SQL> SELECT p.tracefile
- 2 FROM v$process p
- 3 join v$session s ON p.addr = s.paddr
- 4 WHERE s.sid = SYS_CONTEXT('userenv', 'sid' );
- TRACEFILE
- ------------------------------------------------------------------------------------------------------------------------
- /u01/app/oracle/diag/rdbms/cdb12102/cdb12102/trace/cdb12102_ora_22863_LOBSEG.trc
- SQL>
- SQL> ALTER SESSION SET tracefile_identifier = lobidx;
- SESSION altered.
- SQL> @ dumpextent.SQL U &&index_name 0
- SQL> define owner=&&1
- SQL> define segment_name=&&2
- SQL> define exent_id=&&3
- SQL>
- SQL> COLUMN owner format a30
- SQL> COLUMN segment_name format a30
- SQL>
- SQL> COLUMN file_id new_value file_id
- SQL> COLUMN block_min new_value block_min
- SQL> COLUMN block_max new_value block_max
- SQL>
- SQL> SELECT owner, segment_name, extent_id, blocks, file_id, block_id,
- 2 block_id block_min, block_id + blocks - 1 block_max
- 3 FROM dba_extents
- 4 WHERE owner = '&&owner'
- 5 AND segment_name = '&&segment_name'
- 6 AND partition_name IS NULL
- 7 AND extent_id = &&exent_id;
- old 4: WHERE owner = '&&owner'
- NEW 4: WHERE owner = 'U'
- old 5: AND segment_name = '&&segment_name'
- NEW 5: AND segment_name = 'SYS_IL0000093301C00005$$'
- old 7: AND extent_id = &&exent_id
- NEW 7: AND extent_id = 0
- OWNER SEGMENT_NAME EXTENT_ID BLOCKS FILE_ID BLOCK_ID BLOCK_MIN BLOCK_MAX
- ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
- U SYS_IL0000093301C00005$$ 0 8 35 152 152 159
- SQL>
- SQL> ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max;
- old 1: ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max
- NEW 1: ALTER SYSTEM DUMP datafile 35 block MIN 152 block MAX 159
- SYSTEM altered.
- SQL>
- SQL> @ tracefile.SQL
- SQL> COLUMN tracefile new_value tracefile format a120
- SQL>
- SQL> SELECT p.tracefile
- 2 FROM v$process p
- 3 join v$session s ON p.addr = s.paddr
- 4 WHERE s.sid = SYS_CONTEXT('userenv', 'sid' );
- TRACEFILE
- ------------------------------------------------------------------------------------------------------------------------
- /u01/app/oracle/diag/rdbms/cdb12102/cdb12102/trace/cdb12102_ora_22863_LOBIDX.trc
- SQL>
- SQL>
- SQL> COLUMN iot_over new_value iot_over format a30
- SQL> SELECT table_name iot_over, iot_name FROM user_tables WHERE iot_name = 'TBLIOT';
- IOT_OVER IOT_NAME
- ------------------------------ --------------------------------------------------------------------------------------------------------------------------------
- SYS_IOT_OVER_93301 TBLIOT
- SQL> ALTER SESSION SET tracefile_identifier = iotoverflow;
- SESSION altered.
- SQL> @ dumpextent.SQL U &&iot_over 0
- SQL> define owner=&&1
- SQL> define segment_name=&&2
- SQL> define exent_id=&&3
- SQL>
- SQL> COLUMN owner format a30
- SQL> COLUMN segment_name format a30
- SQL>
- SQL> COLUMN file_id new_value file_id
- SQL> COLUMN block_min new_value block_min
- SQL> COLUMN block_max new_value block_max
- SQL>
- SQL> SELECT owner, segment_name, extent_id, blocks, file_id, block_id,
- 2 block_id block_min, block_id + blocks - 1 block_max
- 3 FROM dba_extents
- 4 WHERE owner = '&&owner'
- 5 AND segment_name = '&&segment_name'
- 6 AND partition_name IS NULL
- 7 AND extent_id = &&exent_id;
- old 4: WHERE owner = '&&owner'
- NEW 4: WHERE owner = 'U'
- old 5: AND segment_name = '&&segment_name'
- NEW 5: AND segment_name = 'SYS_IOT_OVER_93301'
- old 7: AND extent_id = &&exent_id
- NEW 7: AND extent_id = 0
- OWNER SEGMENT_NAME EXTENT_ID BLOCKS FILE_ID BLOCK_ID BLOCK_MIN BLOCK_MAX
- ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
- U SYS_IOT_OVER_93301 0 8 35 128 128 135
- SQL>
- SQL> ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max;
- old 1: ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max
- NEW 1: ALTER SYSTEM DUMP datafile 35 block MIN 128 block MAX 135
- SYSTEM altered.
- SQL>
- SQL> @ tracefile.SQL
- SQL> COLUMN tracefile new_value tracefile format a120
- SQL>
- SQL> SELECT p.tracefile
- 2 FROM v$process p
- 3 join v$session s ON p.addr = s.paddr
- 4 WHERE s.sid = SYS_CONTEXT('userenv', 'sid' );
- TRACEFILE
- ------------------------------------------------------------------------------------------------------------------------
- /u01/app/oracle/diag/rdbms/cdb12102/cdb12102/trace/cdb12102_ora_22863_IOTOVERFLOW.trc
- SQL>
- SQL>
- SQL> ALTER SESSION SET tracefile_identifier = secondarya;
- SESSION altered.
- SQL> @ dumpextent.SQL U SECONDARYA 0
- SQL> define owner=&&1
- SQL> define segment_name=&&2
- SQL> define exent_id=&&3
- SQL>
- SQL> COLUMN owner format a30
- SQL> COLUMN segment_name format a30
- SQL>
- SQL> COLUMN file_id new_value file_id
- SQL> COLUMN block_min new_value block_min
- SQL> COLUMN block_max new_value block_max
- SQL>
- SQL> SELECT owner, segment_name, extent_id, blocks, file_id, block_id,
- 2 block_id block_min, block_id + blocks - 1 block_max
- 3 FROM dba_extents
- 4 WHERE owner = '&&owner'
- 5 AND segment_name = '&&segment_name'
- 6 AND partition_name IS NULL
- 7 AND extent_id = &&exent_id;
- old 4: WHERE owner = '&&owner'
- NEW 4: WHERE owner = 'U'
- old 5: AND segment_name = '&&segment_name'
- NEW 5: AND segment_name = 'SECONDARYA'
- old 7: AND extent_id = &&exent_id
- NEW 7: AND extent_id = 0
- OWNER SEGMENT_NAME EXTENT_ID BLOCKS FILE_ID BLOCK_ID BLOCK_MIN BLOCK_MAX
- ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
- U SECONDARYA 0 8 35 168 168 175
- SQL>
- SQL> ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max;
- old 1: ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max
- NEW 1: ALTER SYSTEM DUMP datafile 35 block MIN 168 block MAX 175
- SYSTEM altered.
- SQL>
- SQL> @ tracefile.SQL
- SQL> COLUMN tracefile new_value tracefile format a120
- SQL>
- SQL> SELECT p.tracefile
- 2 FROM v$process p
- 3 join v$session s ON p.addr = s.paddr
- 4 WHERE s.sid = SYS_CONTEXT('userenv', 'sid' );
- TRACEFILE
- ------------------------------------------------------------------------------------------------------------------------
- /u01/app/oracle/diag/rdbms/cdb12102/cdb12102/trace/cdb12102_ora_22863_SECONDARYA.trc
- SQL>
- SQL>
- SQL> ALTER SESSION SET tracefile_identifier = secondaryb;
- SESSION altered.
- SQL> @ dumpextent.SQL U SECONDARYB 0
- SQL> define owner=&&1
- SQL> define segment_name=&&2
- SQL> define exent_id=&&3
- SQL>
- SQL> COLUMN owner format a30
- SQL> COLUMN segment_name format a30
- SQL>
- SQL> COLUMN file_id new_value file_id
- SQL> COLUMN block_min new_value block_min
- SQL> COLUMN block_max new_value block_max
- SQL>
- SQL> SELECT owner, segment_name, extent_id, blocks, file_id, block_id,
- 2 block_id block_min, block_id + blocks - 1 block_max
- 3 FROM dba_extents
- 4 WHERE owner = '&&owner'
- 5 AND segment_name = '&&segment_name'
- 6 AND partition_name IS NULL
- 7 AND extent_id = &&exent_id;
- old 4: WHERE owner = '&&owner'
- NEW 4: WHERE owner = 'U'
- old 5: AND segment_name = '&&segment_name'
- NEW 5: AND segment_name = 'SECONDARYB'
- old 7: AND extent_id = &&exent_id
- NEW 7: AND extent_id = 0
- OWNER SEGMENT_NAME EXTENT_ID BLOCKS FILE_ID BLOCK_ID BLOCK_MIN BLOCK_MAX
- ------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
- U SECONDARYB 0 8 35 176 176 183
- SQL>
- SQL> ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max;
- old 1: ALTER SYSTEM DUMP datafile &&file_id block MIN &&block_min block MAX &&block_max
- NEW 1: ALTER SYSTEM DUMP datafile 35 block MIN 176 block MAX 183
- SYSTEM altered.
- SQL>
- SQL> @ tracefile.SQL
- SQL> COLUMN tracefile new_value tracefile format a120
- SQL>
- SQL> SELECT p.tracefile
- 2 FROM v$process p
- 3 join v$session s ON p.addr = s.paddr
- 4 WHERE s.sid = SYS_CONTEXT('userenv', 'sid' );
- TRACEFILE
- ------------------------------------------------------------------------------------------------------------------------
- /u01/app/oracle/diag/rdbms/cdb12102/cdb12102/trace/cdb12102_ora_22863_SECONDARYB.trc
- SQL>
- SQL>
- SQL> DROP TABLE tbliot purge;
- TABLE dropped.
- SQL>
- SQL> ALTER USER u DEFAULT TABLESPACE SYSTEM;
- USER altered.
- SQL> DROP TABLESPACE users including contents AND datafiles;
- TABLESPACE dropped.
- SQL>
- SQL> quit
- The INSERT VALUES statement was:
- SQL> INSERT INTO tbliot(p,q,a,b,l) VALUES ( 'IIII','QQQQ','AAAA','BBBB','LLLL');
- /u01/app/oracle/diag/rdbms/cdb12102/cdb12102/trace/cdb12102_ora_22863_SECONDARYA.trc
- ROW#0[8007] flag: K------, lock: 2, len=25
- col 0; len 4; (4): 41 41 41 41
- col 1; len 4; (4): 49 49 49 49
- col 2; len 4; (4): 51 51 51 51
- tl: 8 fb: --H-FL-- lb: 0x0 cc: 1
- col 0: [ 4] 08 c0 00 a3
- ----- end of leaf block Logical dump -----
- Interpretation:
- Leaf VALUE IS 'AAAA' (41 41 41 41)
- PRIMARY KEY VALUES are 'IIII','QQQQ' (49 49 49 49 AND 51 51 51 51)
- ROWID "Guess" IS a pointer back TO blocks 0x08 c0 00 a3
- /u01/app/oracle/diag/rdbms/cdb12102/cdb12102/trace/cdb12102_ora_22863_SECONDARYB.trc
- ROW#0[8007] flag: K------, lock: 2, len=25
- col 0; len 4; (4): 42 42 42 42
- col 1; len 4; (4): 49 49 49 49
- col 2; len 4; (4): 51 51 51 51
- tl: 8 fb: --H-FL-- lb: 0x0 cc: 1
- col 0: [ 4] 08 c0 00 a3
- ----- end of leaf block Logical dump -----
- Interpretation:
- Leaf VALUE IS 'BBBB' (42 42 42 42)
- PRIMARY KEY VALUES are 'IIII','QQQQ' (49 49 49 49 AND 51 51 51 51)
- ROWID "Guess" IS a pointer back TO blocks 0x08 c0 00 a3
- /u01/app/oracle/diag/rdbms/cdb12102/cdb12102/trace/cdb12102_ora_22863_IOTPK.trc
- Block header DUMP: 0x08c000a3
- Object id ON Block? Y
- seg/obj: 0x16c79 csc: 0x00.10dba5a itc: 2 flg: E typ: 2 - INDEX
- brn: 0 bdba: 0x8c000a0 ver: 0x01 opc: 0
- inc: 0 exflg: 0
- Itl Xid Uba Flag Lck Scn/Fsc
- 0x01 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
- 0x02 0x000a.012.000018ef 0x0100183b.08ea.19 --U- 1 fsc 0x0000.010dba8a
- Leaf block DUMP
- ===============
- header address 140011531555428=0x7f56f99a5264
- kdxcolev 0
- KDXCOLEV Flags = - - -
- kdxcolok 0
- kdxcoopc 0x90: opcode=0: iot flags=I-- is converted=Y
- kdxconco 2
- kdxcosdc 0
- kdxconro 1
- kdxcofbo 38=0x26
- kdxcofeo 8006=0x1f46
- kdxcoavs 7968
- kdxlespl 0
- kdxlende 0
- kdxlenxt 0=0x0
- kdxleprv 0=0x0
- kdxledsz 0
- kdxlebksz 8032
- ROW#0[8006] flag: K------, lock: 2, len=26
- col 0; len 4; (4): 49 49 49 49
- col 1; len 4; (4): 51 51 51 51
- tl: 14 fb: --H-F--- lb: 0x0 cc: 1
- nrid: 0x08c00084.0
- col 0: [ 4] 41 41 41 41
- ----- end of leaf block Logical dump -----
- Interpretation:
- Block IS 0x08c000a3, WHERE the secondary INDEX pointers are pointing TO.
- PRIMARY KEY VALUES are 'IIII','QQQQ' (49 49 49 49 AND 51 51 51 51)
- Non-KEY VALUE IS 'AAAA' (41 41 41 41)
Add Comment
Please, Sign In to add comment