Oracle中DUMP转储方法

大家在学习研究ORACLE的过程中,为了更深入的了解内部的机制,免不了要进程DUMP来研究学习,
下面我把学习过程中不断整理的各个DUMP罗列出来,希望大家指明错误和进行补充,共同进步!

—————————————————————————————

1、DUMP出控制文件
alter system (session) set events 'immediate trace name controlf level 10'

—————————————————————————————

2、DUMP出日志文件分析
alter system dump logfile logfilename;

—————————————————————————————

3、DUMP出日志文件头分析
alter session set events 'immediate trace name REDOHDR level 10'

———————————————————————————

4、DUMP出LIBRARY CACHE
alter system (session) set events 'immediate trace name library_cache level 10'

—————————————————————————————

5、 DUMP出share_pool
alter system (session) set events 'immediate trace name heapdump level 10'

———————————————————————————

6、DUMP出所有数据文件头
alter system (session) set events 'immediate trace name file_hdrs level 10';

———————————————————————————

7、DUMP出数据文件(只能是alter system)

alter system dump datafile n block m

select file_id,block_id,blocks from dba_extents where segment_name='EMPLOYEES'
FILE_ID BLOCK_ID BLOCKS
---------- ---------- ----------
5 81 8


SQL>; alter system dump datafile 5 block 81;

System altered.
另外是做很具体的针对某行所在的BLOCK 并DUMP出来研究,可以用如下方法

1、取BLOCK号
select dbms_rowid.rowid_block_number(rowid) from wdjk1999;

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
78

2、取文件号
select file_id from dba_data_files where tablespace_name='WDJK1999'

FILE_ID

----------
16

SQL>; alter system dump datafile 16 block 78;

System altered.

—————————————————————————

8、DUMP出索引
SQL> select object_id from dba_objects where object_name=upper('index_name');
  
OBJECT_ID
----------
70591
SQL> ALTER SESSION SET EVENTS 'immediate trace name TREEDUMP level 70591';

—————————————————————————————

9、DUMP出回滚段信息
select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction;

XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBASQN UBAREC
---------- ---------- ---------- ---------- ---------- ---------- ----------
1 31 442 2 21 242 52
dump对应的undo block
SYS@ning>alter system dump datafile 2 block 21;
System altered.


——————————————————————————

10、 DUMP出系统状态分析 (只能是SYSTEM)
alter system set events 'immediate trace name systemdate level 10'

——————————————————————————

11、 DUMP出分析进程状态分析
alter session set events 'immediate trace name PROCESSSTATE level 10'

### 如何在 Oracle 数据库中导出 Dump 文件 #### 使用 `exp` 和 `expdp` 工具的简介 Oracle 提供了两种主要方法来导出数据库中的数据到 `.dmp` 文件:传统的 `exp` 工具和更现代的 `Data Pump Export (expdp)` 工具。以下是这两种工具的特点及其使用方式。 传统 `exp` 工具适用于早期版本的 Oracle 数据库,但在 Oracle 11g 及之后的版本中已不再推荐广泛使用[^2]。相比之下,`expdp` 是一种功能更强、性能更高的工具,适合处理大规模数据集以及复杂的导出需求。 --- #### 使用 `exp` 导出 Dump 文件 如果需要兼容旧版环境或者特定场景下仍需使用 `exp`,可以按照以下命令执行: ```bash exp username/password@database_name FILE=dump_file_path.dmp LOG=log_file_path.log OWNER=(schema_name) CONSISTENT=Y ``` - **参数说明**: - `username/password`: 连接数据库所需的用户名和密码。 - `FILE`: 输出的 .dmp 文件路径。 - `LOG`: 日志文件保存位置。 - `OWNER`: 需要导出的具体模式(Schema),支持多个 Schema 列表。 - `CONSISTENT`: 是否保持一致性备份,默认为 Y 表示开启一致性的快照视图。 需要注意的是,在较新的 Oracle 版本中,官方建议仅限于特殊情况下才继续使用此工具[^2]。 --- #### 使用 `expdp` 导出 Dump 文件 对于大多数现代化应用而言,推荐采用 `expdp` 来完成 dump 文件的创建工作。其语法如下所示: ```bash expdp username/password@database_name DIRECTORY=data_pump_directory DUMPFILE=output_dump_filename.dmp LOGFILE=export_logfile.log SCHEMAS=schema_name EXCLUDE=index,constraint ``` - **关键选项解释**: - `DIRECTORY`: 定义存储目标转储文件的位置,必须事先由 DBA 创建好对应的目录对象,并赋予适当权限给当前用户访问。 - `DUMPFILE`: 实际生成的目标 dmp 文件名称。 - `SCHEMAS`: 明确指定哪些 schema 将被包含进来参与此次操作过程之中;如果不设置,则默认整个实例都会受到影响。 - `EXCLUDE`: 排除某些类型的元数据项比如索引(indexes),约束(constraints)等不希望同步的部分内容[^3]. 此外,还可以利用其他高级特性如压缩(compression), 并行(parallelism)等方式进一步提升效率效果显著。 --- #### 处理异常情况下的解决方案 当遇到诸如病毒破坏或是意外加密等问题导致常规手段无法正常打开这些二进制格式文件时,可考虑借助第三方软件产品例如 OraDumpReader 对损坏的内容尝试修复还原[^1]。 --- ### 注意事项 无论选用哪种方式进行实际部署实施之前都应该仔细阅读相关手册资料了解清楚各自优缺点以便做出最佳决策方案设计规划合理安排资源分配从而达到预期目的成果最大化收益回报率最优化水平状态之上实现长期稳定可靠运行机制体系架构建设完善程度不断提高进步持续改进创新突破自我超越极限追求卓越品质服务客户满意至上原则始终贯穿全程各个环节细节之处体现专业精神风貌形象气质魅力无穷无尽延绵不断永续传承发展下去! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值