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
    评论
您好!关于 Oracle 数据库的导出,您可以使用 Oracle 提供的 EXP 工具来进行数据库的导出。EXP 是一个命令行工具,可以将整个数据库或者指定的空间、用户等导出为一个二进制文件,也被称为 Oracle 数据库的备份文件或者导出文件。使用 EXP 工具可以方便地将数据库的结构和数据导出到其他环境中进行恢复或者迁移。 以下是使用 EXP 工具导出 Oracle 数据库的基本步骤: 1. 打开命令行终端或者命令提示符窗口。 2. 进入 Oracle 安装目录下的 bin 目录,例如:cd /u01/app/oracle/product/12.2.0/dbhome_1/bin。 3. 输入以下命令来执行导出操作: exp username/password@connect_string file=export.dmp 其中,username 是你要导出的数据库用户的用户名,password 是对应的密码,connect_string 是连接字符串,用于指定数据库的主机名、端口号和服务名等信息;file=export.dmp 是导出文件的路径和名称。 4. 执行命令后,EXP 工具会连接到数据库并开始导出操作。导出过程可能需要一些时间,具体时间取决于数据库的大小和复杂性。 5. 导出完成后,在指定的路径下会生成一个二进制的导出文件(.dmp 文件),这就是数据库的导出内容。 请注意,EXP 工具是 Oracle 过去版本的备份和导出工具,在较新的 Oracle 版本中,推荐使用更强大和灵活的 EXPDP 工具来进行数据库导出操作。EXPDP 工具提供了更多选项和功能,可以更好地满足不同的导出需求。 希望以上信息能够帮助到您!如果您有任何进一步的问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值