在对甲骨文做一些比较内核的研究时,会用需要用到转储命令把数据库中的信息转储到跟踪文件中。本文简单介绍使用转储命令把数据块中的信息转储到跟踪文件中。
实验环境:rhel7.2 + 11.2.0.4
语法:
强>
1,创建测试表
zx@ORA11G> drop table t; Table 下降。 zx@ORA11G> create  table t as  select *,得到双; Table 创建。 zx@ORA11G> select *,得到t; D - X X X 3,rows 选中。
2,查询数据表所在的数据块号
zx@ORA11G> select dbms_rowid.ROWID_RELATIVE_FNO (rowid), dbms_rowid.ROWID_BLOCK_NUMBER (rowid),得到t; DBMS_ROWID.ROWID_RELATIVE_FNO (ROWID), DBMS_ROWID.ROWID_BLOCK_NUMBER (ROWID) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4,,,,,,37771 4,,,,,,37771 4,,,,,,37771 3,rows 选中。
从上面的查询中可以看到三条数据都存储在4号文件的37771块上。
3,使用转储命令转储块信息到跟踪文件中,并找到相应的跟踪文件
zx@ORA11G> alter system dump datafile 4, block 37771; System 改变。 zx@ORA11G> select  value 得到v $ diag_info where name=' Default Trace 文件; 价值 -------------------------------------------------------------------------/u01/app/oracle/诊断接头/rdbms/ora11g/ora11g/跟踪/ora11g_ora_5332。委员会
4,查看跟踪文件中的内容
上面截取了一些信息:包含表的object_id & lt; objn 90835祝辞,表上的事务槽信息,表中的三行数据的详细信息等。
转储出来的跟踪文件包含大量的信息,如果能看懂并分析这样的跟踪文件,说明向大师又迈近了一步。
不同版本对数据库倾倒出来的跟踪文件,出处有所不同,可能是从磁盘也可能是从缓冲区缓存中,有兴趣的同学可以自行测试。
参考:《甲骨文 核心基本内部dba和开发人员》