Oracle使用dump转储数据块

简介:

在对Oracle做一些比较内核的研究时,会用需要用到dump命令把数据库中的信息转储到trace文件中。本文简单介绍使用dump命令把数据块中的信息转储到trace文件中。

实验环境:rhel7.2+11.2.0.4

语法:

alter system dump datafile {File no} block {Block no};
alter system dump datafile 4 block 129;
alter system dump datafile {File no} block min {Block min} block max {Block max};
alter system dump datafile 4 block min 129 block max 133;

alter system dump datafile '{name}' block {Block no};
alter system dump datafile '{name}' block min {Block min} block max {Block max};

1、创建测试表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
zx@ORA11G> drop  table  t;
 
Table  dropped.
 
zx@ORA11G> create  table  as  select  from  dual;
 
Table  created.
 
zx@ORA11G> select  from  t;
 
D
-
X
X
X
 
rows  selected.

2、查询数据表所在的数据块号

1
2
3
4
5
6
7
8
9
zx@ORA11G> select  dbms_rowid.ROWID_RELATIVE_FNO(rowid),dbms_rowid.ROWID_BLOCK_NUMBER(rowid)  from  t;
 
DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------ ------------------------------------
                    4                 37771
                    4                 37771
                    4                 37771
 
rows  selected.

从上面的查询中可以看到三条数据都存储在4号文件的37771块上。

3、使用dump命令转储块信息到trace文件中,并找到相应的trace文件

1
2
3
4
5
6
7
8
9
zx@ORA11G> alter  system dump datafile 4 block 37771;
 
System altered.
 
zx@ORA11G> select  value  from  v$diag_info  where  name = 'Default Trace File' ;
 
VALUE
-------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_5332.trc

4、查看trace文件中的内容

wKiom1ngNYfCh_0zAABwv61ESF0939.png

wKioL1ngMtGy8gXYAACJpOS68sw753.png

上面截取了一些信息:包含表的object_id <objn 90835>,表上的事务槽信息、表中的三行数据的详细信息等。

转储出来的trace文件包含大量的信息,如果能看懂并分析这样的trace文件,说明向大师又迈近了一步。

不同版本对数据库dump出来的trace文件,出处有所不同,可能是从磁盘也可能是从buffer cache中,有兴趣的同学可以自行测试。


参考:《Oracle Core Essential Internals for DBAs and Developers》





      本文转自hbxztc 51CTO博客,原文链接:http://blog.51cto.com/hbxztc/1972013,如需转载请自行联系原作者





相关文章
|
存储 缓存 Oracle
|
Oracle 关系型数据库 数据库
Oracle 数据库impdp导入数据库版本和dmp数据库文件版本不匹配问题解决方法,ORA-39142版本号不兼容、ORA-39000转储文件说明错误解决方法
Oracle 数据库impdp导入数据库版本和dmp数据库文件版本不匹配问题解决方法,ORA-39142版本号不兼容、ORA-39000转储文件说明错误解决方法
1433 0
Oracle 数据库impdp导入数据库版本和dmp数据库文件版本不匹配问题解决方法,ORA-39142版本号不兼容、ORA-39000转储文件说明错误解决方法
|
缓存 Oracle 关系型数据库
|
Oracle 关系型数据库 数据库
|
Oracle 关系型数据库 数据库