首页 > Linux操作系统 > Linux操作系统 > Oracle:dump转储文件
转储文件内容1:数据文件
转储数据文件、重做日志等文件的内容也是优化中经常用到的技术,因此DBA必须掌握。在优化项目中,有时候为了分析表和索引等的碎片、行迁移等情况,需要对数据文件进行转储。把数据库文件(数据文件、日志文件、控制文件等)的内容取出有助于对Oracle数据库内部结构展开分析。使用操作系统的转储工具可以导出数据库文件中的内容,不过这种方式相对比较麻烦。Oracle提供的ALTER SYSTEM DUMP 命令就可以把数据导出到Trace文件中,这一命令是以数据块为单位的。
对于普通的数据文件,通过下面的命令可以导出数据文件中的数据块:
ALTER SYSTEM DUMP DATAFILE [<file_id>|<file_name>] block <block_no>;
或者:
ALTER SYSTEM DUMP
或者:
ALTER SYSTEM DUMP DATAFILE [<file_id>|<file_name>] block min <block_no_min> block max <block_no_max>;
第一条命令导出一个数据块,第二条命令可以导出多个连续的数据块。以上命令不能转储 LMT的临时表空间文件。如果用ALTER SYSTEM DUMP DATAFILE命令去导出一个LMT的临时表空间文件,会报ORA-1205错误。
要转储 LMT的临时文件,需要使用DUMP TEMPFILE命令:
ALTER SYSTEM DUMP TEMPFILE 'E:\ORACLE\ORADATA\ORC9\sk_TEMP.DBF' BLOCK 1;
转储文件内容2:转储对象的段头
比如:
ALTER SYSTEM DUMP DATAFILE 8 BLOCK 7411;
产生的Trace文件会存放在USER_DUMP_DEST参数指定的位置,如果没有设置这个参数,那么默认的位置是$Oracle_BASE/admin/ 或者直接用下面的命令转储:
ALTER SYSTEM DUMP UNDO HEADER RBS01;
这个例子说明EMP的段头在8号文件的7411数据块。使用下面的命令,可以把段头转储出来;
在Oracle中,每个段都包含一个段头。段头一般来说是某个段第一个扩展的第一个块,包含段的信息(段的扩展情况、FREE LIST的数量等)。要转储段头的信息,首先需要定位某个段的段头所在的位置。通过下面的查询可以查看到段头的相关信息:
SELECT SEGMENT_NAME, HEADER_FILE, HEADER_BLOCK FROM DBA_SEGMENTS WHERE OWNER = '
转储文件内容3:转储控制文件
通过设置系统事件,可以把控制文件转储到Trace文件:
ALTER SESSION SET EVENTS 'immediate trace name controlf level <level>';
Level 转储的内容 1 文件头信息 2 文件头信息,数据库信息记录和检查点进程记录 3 所有的记录,仅仅包含最新和最老的循环使用类型的记录 4 类似3,不过包含4条最新的循环使用类型的记录 5+ 类似3,循环使用类型的记录是每个级别的双倍
转储文件内容4:转储控制文件
使用ALTER SYSTEM DUMP LOGFILE可以转储在线日志文件。也可以使用ALTER SESSION命令去转储重做日志头的信息。在数据库处于NOMOUNT、MOUNT或者OPEN状态时,就可以使用上面的命令。当操作系统相同的情况下,可以通过客户端去转储另外一个数据库的重做日志。重做日志的信息会被写入一个Trace文件。
可以用下面的方法转储在线日志。
根据DBA(Data Block Address)转储记录。
根据RBA(Redo Block Address)转储记录。
根据时间点去转储记录。
根据层次和操作码转储记录。
转储文件头信息
转储整个重做日志文件
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28612416/viewspace-763553/ ,如需转载,请注明出处,否则将追究法律责任。