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,
一共占用8个block,而且是一个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 徐长亮专栏原创
__________________________________________________________________________________