如何获取oracle的dmp文件中的表空间名称或Schema

场景

在给定的dmp下,使用impdp导入时,报了一个错,大致就是说schema在dmp中不存在(使用impdp导入时指定了schemas=XXX,XXX,XXX)。当时懒得去生产数据库查看是不是有该schema,于是想直接在dmp中查看包含的schema。

exp还是expdp

首先需要确定dmp文件exp导出的还是expdp导出的。一般情况下该问题是不会出现的。但是遇到过一次给了个19年的dmp文件,我是新接手这块工作,对于当初的数据库版本和使用的导出方式没人能够确定,因此找个方法去确认dmp的导出方式。

exp导出的dmp

# head -n 5 uprrfxq_20190614.dmp
TEXPORT:V10.02.01
DSYSTEM
RENTIRE
4096
0
#

如果是exp导出的文件,第一行会有“EXPORT”等字样。

expdp导出的dmp

[oracle@qsrac4-test1 ~]$ head -n 5 bta60_2022-06-02-090811_01.dmp
Rק¼"⟭£¼d«%!¬¨T䄂     &"SYS"."SYS_EXPORT_FULL_01"x86_64/Linux 2.4

expdp导出的显示会有“SYS_EXPORT_FULL”等字样。

获取expdp导出的dmp的schema、表空间等信息

impdp '/ as sysdba' dumpfile=<your .dmp file> logfile=import_log.txt sqlfile=ddl_dump.txt

执行完成后会把DDL信息写入到指定文件中,通过该文件可以直接查找所需要的信息。

获取exp导出的dmp的schema、表空间等信息

对于该情况,并未找到专业的解决方法。使用的是直接导入,然后根据imp导入后的报错内容(提示XX表空间不存在)新建表空间或者新建用户。

如果有更好的解决方案,欢迎留言

知识拓展

解决该问题时发现的几个好用的命令

strings dumpfile.dmp | grep SCHEMA_LIST

直接在文件中搜索想要的关键字

sed -n '行号 p'  filename		        # 打印指定行号的内容  
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值