首页 > 代码库 > 【ORACLE】DUMP转储 redo log , undo段及table段

【ORACLE】DUMP转储 redo log , undo段及table段

1.1 使用oradebug

--启动任务

oradebug setmypid

--设置dump文件的名称标示

alter session set tracefile_identifier=undo

--查看dump文件

SQL> oradebug tracefile_name;

c:\opt\oracle\product\10.2.0\admin\rundb\udump\rundb_ora_6660_pra1.trc

--设置权限

oradebug unlimit

--查看可以转储的列表:

SQL> oradebug dumplist

EVENTS

TRACE_BUFFER_ON

TRACE_BUFFER_OFF

--oradebug dump 命令

(1) oradebug dump buffers 1

   转储缓冲区信息: 1=仅缓冲头

1.2 使用alter system dump redo日志

--dump redo日志

alter system dump logfile ‘C:\OPT\ORACLE\PRODUCT\10.2.0\ORADATA\RUNDB\REDO02.LOG‘;

1.3 使用alter system dump table数据块

--查看scott.stu表的位置:

select HEADER_FILE, HEADER_BLOCK,BYTES,BLOCKS,INITIAL_EXTENT,EXTENTS,NEXT_EXTENT from dba_segme

nts where segment_type=‘TABLE‘ and owner=‘SCOTT‘  and segment_name=‘STU‘;

 

HEADER_FILE HEADER_BLOCK      BYTES     BLOCKS INITIAL_EXTENT    EXTENTS

----------- ------------ ---------- ---------- -------------- ----------

NEXT_EXTENT

-----------

          4          203      65536          8          65536          1

//scott.stu的位置为: datafile 4 block 203,一共占用8block,而且是一个exntents连续空间中的。

--dump 表头信息(segment header)信息

alter system dump datafile 4 block 203;

--dump所有表的所有数据块(8个)信息

alter system dump datafile 4 block min 203 block max 210;

1.4 使用alter system dump  undo段信息及undo记录信息

1.4.1 dump undo header信息

---查看undo segments_name

SQL> select segment_name from dba_segments where segment_type=‘TYPE2 UNDO‘;

 

SEGMENT_NAME

--------------------------------------------------------------------------------

_SYSSMU1$

_SYSSMU2$

_SYSSMU3$

_SYSSMU4$

…..

或者SQL> select segment_id,segment_name,block_id,status from dba_rollback_segs;

SEGMENT_ID SEGMENT_NAME                     BLOCK_ID STATUS

---------- ------------------------------ ---------- ----------------

         0 SYSTEM                                  9 ONLINE

         1 _SYSSMU1$                               9 ONLINE

         2 _SYSSMU2$                              25 ONLINE

……

 

----dump undo

SQL> alter system dump undo header ‘_SYSSMU1$‘;

1.4.2 根据xid dump undo记录

       --查询xid:  undo段号,slot号,wrap

SQL> select trunc(id1/65536) usn,mod(id1,65536) slot,id2 wrap,lmode  from v$lock where type=‘TX‘;

 

       USN       SLOT       WRAP      LMODE

---------- ---------- ---------- ----------

         2         43        313          6

 

--dump unod记录

ALTER SYSTEM DUMP UNDO BLOCK ‘_SYSSMU2$‘ XID 2 43 313

1.5 stu segment表(段)中某个数据块的dump信息

--数据块信息:

buffer tsn: 4 rdba: 0x010000cc (4/204)

 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc

0x01   0x0006.012.0000013b  0x00800127.011a.01  --U-    1  fsc 0x0000.000c44bc

0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000

block_row_dump:

tab 0, row 0, @0x1f85

tl: 19 fb: --H-FL-- lb: 0x1  cc: 4

col  0: [ 2]  c1 06

col  1: [ 3]  c2 15 09

col  2: [ 5]  73 6d 69 74 68

col  3: [ 2]  c1 1a

end_of_block_dump

 

//itl事务列表索引,该值用于行的锁字节:lb:显示被那个事务锁住。

//xid undo中的事务ID

//uba: 事务产生的undo记录地址

//flag: 事务状态。--u—上界提交;c------提交清楚;

Lck: 块中改事务锁住行数。

 

 

_________________________________________________________________________________

http://blog.csdn.net/clark_xu               徐长亮专栏原创

__________________________________________________________________________________

 

【ORACLE】DUMP转储 redo log , undo段及table段