oracle dump表数据

为了更深入的了解内部的机制,难免需要跟踪真实的落地数据实际内容。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值