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 '{name}' block {Block no}; 1、创建测试表 zx@ORA11G>droptablet; Tabledropped. zx@ORA11G>createtabletasselect*fromdual; Tablecreated. zx@ORA11G>select*fromt; D - X X X 3rowsselected. 2、查询数据表所在的数据块号 zx@ORA11G>selectdbms_rowid.ROWID_RELATIVE_FNO(rowid),dbms_rowid.ROWID_BLOCK_NUMBER(rowid)fromt; DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) ------------------------------------------------------------------------ 4 37771 4 37771 4 37771 3rowsselected. 从上面的查询中可以看到三条数据都存储在4号文件的37771块上。 3、使用dump命令转储块信息到trace文件中,并找到相应的trace文件 zx@ORA11G>altersystemdumpdatafile4block37771; Systemaltered. zx@ORA11G>selectvaluefromv$diag_infowherename='DefaultTraceFile'; VALUE ------------------------------------------------------------------------- /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_5332.trc 4、查看trace文件中的内容 上面截取了一些信息:包含表的object_id <objn 90835>,表上的事务槽信息、表中的三行数据的详细信息等。 转储出来的trace文件包含大量的信息,如果能看懂并分析这样的trace文件,说明向大师又迈近了一步。 不同版本对数据库dump出来的trace文件,出处有所不同,可能是从磁盘也可能是从buffer cache中,有兴趣的同学可以自行测试。 参考:《Oracle Core Essential Internals for DBAs and Developers》 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |