转储文件内容1:数据文件
转储数据文件、重做日志等文件的内容也是优化中经常用到的技术,因此DBA必须掌握。在优化项目中,有时候为了分析表和索引等的碎片、行迁移等情况,需要对数据文件进行转储。把数据库文件(数据文件、日志文件、控制文件等)的内容取出有助于对Oracle数据库内部结构展开分析。使用操作系统的转储工具可以导出数据库文件中的内容,不过这种方式相对比较麻烦。Oracle提供的ALTER SYSTEM DUMP 命令就可以把数据导出到Trace文件中,这一命令是以数据块为单位的。
对于普通的数据文件,通过下面的命令可以导出数据文件中的数据块:
ALTER SYSTEM DUMP DATAFILE [<file_id>|<file_name>] block <block_no>;
或者:
ALTER SYSTEM DUMP <tablespace_name> block <block_no>;
或者:
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:转储对象的段头
比如:
- SELECT SEGMENT_NAME, HEADER_FILE, HEADER_BLOCK
-
FROM DBA_SEGMENTS
-
WHERE OWNER = 'SCOTT' AND SEGMENT_NAME = 'EMP';
-
-
SEGMENT_NAME HEADER_FILE HEADER_BLOCK
-
-------------------------- ----------------- ---------------
- EMP 8 7411
ALTER SYSTEM DUMP DATAFILE 8 BLOCK 7411;
产生的Trace文件会存放在USER_DUMP_DEST参数指定的位置,如果没有设置这个参数,那么默认的位置是$Oracle_BASE/admin/<sid>/udump。 如果要转储回退段,那么可以这样操作:
-
SELECT SEGMENT_NAME, HEADER_FILE, HEADER_BLOCK
- FROM DBA_SEGMENTS
-
WHERE SEGMENT_NAME = 'RBS01';
-
-
- SEGMENT_NAME HEADER_FILE HEADER_BLOCK
- -------------------- ----------- ------------
- RBS01 2 514
-
-
- alter system dump datafile 2 block 514;
或者直接用下面的命令转储:
ALTER SYSTEM DUMP UNDO HEADER RBS01;
这个例子说明EMP的段头在8号文件的7411数据块。使用下面的命令,可以把段头转储出来;
在Oracle中,每个段都包含一个段头。段头一般来说是某个段第一个扩展的第一个块,包含段的信息(段的扩展情况、FREE LIST的数量等)。要转储段头的信息,首先需要定位某个段的段头所在的位置。通过下面的查询可以查看到段头的相关信息:
SELECT SEGMENT_NAME, HEADER_FILE, HEADER_BLOCK FROM DBA_SEGMENTS WHERE OWNER = '<SEGMENT OWNER>' AND SEGMENT_NAME = '<SEGMENT NAME>';
转储文件内容3:转储控制文件
通过设置系统事件,可以把控制文件转储到Trace文件:
ALTER SESSION SET EVENTS 'immediate trace name controlf level <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)转储记录。
根据时间点去转储记录。
根据层次和操作码转储记录。
转储文件头信息
转储整个重做日志文件
http://book.51cto.com/art/201006/204540.htm
分享到:
相关推荐
ORACLE 11G导入到10G的命令,从11G数据库导出,可导入到10G数据库。
NULL 博文链接:https://bri-robby.iteye.com/blog/2327887
Oracle 到 PostgreSQL 转储 此实用程序来自需要以合理的速度将 Oracle 数据转换为 PostgreSQL 数据。 这个项目相当实用,但它是一个开始。 它不创建表; 目标表必须已经存在。 目标列名称必须与查询列名称匹配(列...
Oracle2Mysql 可以将oracle sql dump转换为与mysql兼容的sql的软件该软件帮助您轻松快速地从oracle迁移到myslq运作方式它会读取由oracle制成的sql文件寻找所有“创建表”并将它们放在第一个sql文件中(这是为了避免...
例如:从 MySQL 转储文件到 Oracle 数据库。 也许您只想将该数据转换为 CSV,或者仅从几个表加载信息,甚至直接从文件执行一些数据映射到完全不同的模式。 这正是,为什么不转储文件? 我们为一位对 MySQLImport ...
oracle系统状态trace文件分析器 当系统hang住时,或者进程间有阻塞时,你可以产生下面两种跟踪文件,一种是进程状态跟踪文件,一种是系统状态跟踪文件: process state dumps ==> 一个进程的所有对象状态,...
Oracle转储工具
Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...
欢迎来到转储矿石词典! 编译 安装 Java Java JDK 用于编译 Dump OreDictionary。 下载并安装 Java JDK。 。 向下滚动,接受Oracle Binary Code License Agreement for Java SE并下载(如果您有 64 位操作系统,...
尽管大多数Postgres竞争对手都具有至少具有一定过滤功能的转储实用程序,但它也很容易适应其他DBMS(例如MySQL,SQL Server,Oracle)。指示要尝试测试脚本,请执行以下操作: 创建一个新的Postgres DB /用户,例如...
Oracle 为RDBMS 提供了多种的诊断工具,诊断事件(Event)是其中一种常用、好用的方法,它使DBA 可以方便的转储数据库各种结构及跟踪特定事件的发生.
ORA-39142: 版本号 4.1 (在转储文件 “叉叉叉.expdp” 中) 不 兼容 之类 后来才知道,在12C中备份出来时,应指定版本信息,例如我要导进11g的库(具体版本为11.1.0.6.0,打开sqlplus就能看到),则version=11.1....
在oracle中引入数据泵Data Dump(数据转储)技术。
1. DIRECTORY指定转储文件和日志文件所在的目录DIRECTORY=directory_objectDirectory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录Expdp scott/tiger DIRECTORY...
情报学 我的实习代码提交 ... 通过Git上Database_dump.zip文件中提供的数据库转储来设置数据库。 获取eclipse项目并在Eclipse中打开。 确保已安装ojdbc jar和Tomcat。 启动服务器并打开Web浏览器到以下页面:
第8章 Linux进程:结构、挂起与核心转储 171 8.1 进程结构和生命周期 171 8.1.1 进程/任务概述 171 8.1.2 进程关系 172 8.1.3 Linux进程创建 172 8.1.4 Linux进程创建的示例 173 8.1.5 进程创建小结 ...