Oracle使用dump转储数据块
在对Oracle做一些比较内核的研究时,会用需要用到dump命令把数据库中的信息转储到trace文件中。本文简单介绍使用dump命令把数据块中的信息转储到trace文件中。
发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及酒店设计等,在网站建设、成都全网营销、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。
实验环境: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、创建测试表
zx@ORA11G>drop table t; Table dropped. zx@ORA11G>create table t as select * from dual; Table created. zx@ORA11G>select * from t; D - X X X 3 rows selected.
2、查询数据表所在的数据块号
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 3 rows selected.
从上面的查询中可以看到三条数据都存储在4号文件的37771块上。
3、使用dump命令转储块信息到trace文件中,并找到相应的trace文件
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文件中的内容
上面截取了一些信息:包含表的object_id
转储出来的trace文件包含大量的信息,如果能看懂并分析这样的trace文件,说明向大师又迈近了一步。
不同版本对数据库dump出来的trace文件,出处有所不同,可能是从磁盘也可能是从buffer cache中,有兴趣的同学可以自行测试。
参考:《Oracle Core Essential Internals for DBAs and Developers》
本文题目:Oracle使用dump转储数据块
分享地址:http://scyanting.com/article/pciscs.html