为了更深入的了解内部的机制,难免需要跟踪真实的落地数据实际内容。
Oracle 可通过 各类系统预定义的 events 导出如内存、日志文件头、数据文件头等信息。
这些信息均在 Trace文件存放路径。
简单讲解如何 DUMP 具体表数据。
查看 trace 目录路径
Trace文件存放路径:oracle\diag\rdbms**\trace
见 v$diag_trace_file
ADR_HOME |TRACE_FILENAME |CHANGE_TIME |MODIFY_TIME |CON_ID|
------------------------------------------+------------------------+-----------------------------+-----------------------------+------+
/data/lilin/oracle12c/diag/rdbms/orcl/orcl|orcl_ora_52898.trc |2023-10-25 10:06:52.000 +0800|2023-10-25 10:06:52.000 +0800| 0|
/data/lilin/oracle12c/diag/rdbms/orcl/orcl|orcl_j001_1586.trc |2023-10-24 15:55:00.000 +0800|2023-10-24 15:55:00.000 +0800| 0|
/data/lilin/oracle12c/diag/rdbms/orcl/orcl|orcl_ora_50752.trc |2023-10-25 10:04:59.000 +0800|2023-10-25 10:04:59.000 +0800| 0|
/data/lilin/oracle12c/diag/rdbms/orcl/orcl|orcl_m001_18968.trc |2023-10-12 23:09:05.000 +0800|2023-10-12 23:09:05.000 +0800| 0|
/data/lilin/oracle12c/diag/rdbms/orcl/orcl|orcl_m001_73551.trc |2023-10-25 10:48:10.000 +0800|2023-10-25 10:48:10.000 +0800| 0|
准备数据
create table tab1 (c1 int,c2 varchar(20),c3 timestamp);
insert into tab1 values(1,'test dump',systimestamp);
可以根据 ROWID 定位到所在 表空间及具体 BLOCK ID :
select rowid,
dbms_rowid.rowid_object(rowid) object#,
dbms_rowid.rowid_relative_fno(rowid) file#,
dbms_rowid.rowid_block_number(rowid) block#,
dbms_rowid.rowid_row_number(rowid) row#
from tab1;
表 tab1 数据位于 表空间 1 block 103265。示例仅演示,正常表会占据不连续的多个block。
ROWID |OBJECT#|FILE#|BLOCK#|ROW#|
------------------+-------+-----+------+----+
AABGQRAABAAAZNhAAA| 287761| 1|103265| 0|
DUMP 表数据对应 BLOCK
语法如下,可导出具体数据页或指定范围:
ALTER SYSTEM DUMP DATAFILE <file_id> BLOCK <block_id> ;
ALTER SYSTEM DUMP DATAFILE <file_id> BLOCK MIN <block_id> BLOCK MAX <block_id>;
按照上例,dump 1 103265 位置页
alter system dump datafile 1 block 103265;
查看当前 pid
SELECT spid FROM v$process WHERE addr = (SELECT paddr FROM v$session WHERE sid = userenv('sid'));
SPID |
-----+
11664|
根据 pid,查询对应 trace 文件位置
select * FROM v$diag_trace_file WHERE trace_filename like '%11664%';
trace文件内容如下:
data_block_dump,data header at 0x7fae4547405c
===============
tsiz: 0x1fa0
hsiz: 0x14
pbl: 0x7fae4547405c
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x1f84
avsp=0x1f70
tosp=0x1f70
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x1f84
block_row_dump:
tab 0, row 0, @0x1f84
tl: 28 fb: --H-FL-- lb: 0x1 cc: 3
col 0: [ 2] c1 02
col 1: [ 9] 74 65 73 74 20 64 75 6d 70
col 2: [11] 78 7b 0b 0c 0f 12 0a 2e dd e8 d8
end_of_block_dump