ORACLE数据库如何使用dmp文件导出和导入数据

前言

相信大家在平时的开发或者是运维工作中都遇到过将一个库里的表结构以及数据完整的导入到另外一个库中,我前两天也是遇到了。情形是这样,由于我所负责的这个产品已经上线运营一年了,并且也一直有新的需求不断地迭代,最新一版的开发由于改动比较大,涉及到很多表的数据割接,所以我想到的是应该把生产环境的表同步到开发以及测试环境上,这样有针对性的进行开发和测试,最终上线发生的问题概率就会很多。我使用的是plsql工具来导表

导出dmp

  • 首先打开plsq连接我们需要导出的库,然后选择工具——>导出表

  • 选择想要导出的表,可以将缓冲区大小设置大点,指定可执行的exp.exe(oracle的安装目录下),指定一下输出的文件,然后直接导出即可

导入dmp

  • 同样打开plsql连接需要导入的库,然后打开工具,选择导入表(导入之前把该库所有的表都清掉)

  • 然后填下从用户和到用户,从用户就是刚才导出dmp的库的用户名,到用户即当前需要导入dmp的用户,选择导入可执行的文件imp.exe(oracle安装目录下),最后选择刚才导出的dmp文件,点击导入

采坑

  • 点击导入之后弹出来一个命令框,显示导入的日志,发现有的表导入成功了,但是有的表缺有报错ORA-00959:tablesapce 'credit100_space' does not exist,百思不得其解,但是发现这些报错的表都有一个共同点,都包含BLOB或者CLOB字段,后来查了一下果然导入包含这两字段的表确实会有这样的问题。

 

  • 接下来就是各种查资料,终于找到了一个完美的解决方法。我们首先用notepad++或者ultraedit编辑器打开aa.dmp,打开之后,将表空间CREDIT100_SPACE替换成我们需要导入库的表空间,然后保存(当然如果dmp文件特别大导致无法使用这些编辑器打开,那就需要换个支持打开大容量的编辑器了),再执行刚才的导入操作就会发现不会再报错了,去库里检查一下表都已经成功的导入进去了。如果我们两个库的表空间是一样的话,那就不会有这样的问题出现。

 

结语

其实这次导数据不仅仅是遇到了导入时报错的问题,还遇到了其他一些问题,从一开始的不知道怎么解决到最终完美导成功,这中间也是一波三折,总的来说,遇到问题的时候不能总想着别人能够都帮你解决,而是应该自己掌握一套解决问题的方法,通过自己的努力解决的问题我相信映像会更深刻。

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Docker容器中导出Oracle数据库dmp文件,可以按照以下步骤操作: 1. 在Docker容器中安装Oracle客户端工具,例如sqlplus和expdp等。 2. 运行Docker容器并登录到Oracle数据库。 3. 使用expdp命令导出dmp文件。例如,使用以下命令导出整个数据库: ``` expdp username/password@connect_string dumpfile=export.dmp directory=DATA_PUMP_DIR full=y ``` 其中,username是数据库用户名,password是密码,connect_string是连接字符串,dumpfile是导出dmp文件名,directory是导出文件的目录,full=y表示导出整个数据库。 4. 导出完成后,将dmp文件复制到本地计算机。 ``` docker cp container_id:/path/to/export.dmp /path/on/host ``` 其中,container_id是Docker容器的ID,/path/to/export.dmpdmp文件的路径,/path/on/host是本地计算机上存储dmp文件的路径。 5. 在本地计算机上使用Oracle客户端工具导入dmp文件到另一个Oracle数据库中。例如,使用以下命令导入dmp文件: ``` impdp username/password@connect_string dumpfile=export.dmp directory=DATA_PUMP_DIR ``` 其中,username是目标数据库的用户名,password是密码,connect_string是连接字符串,dumpfile是导入dmp文件名,directory是导入文件的目录。 注意:在使用expdp和impdp命令时,需要先在Oracle数据库中创建数据泵目录。例如,使用以下命令创建数据泵目录: ``` CREATE DIRECTORY DATA_PUMP_DIR AS '/path/to/directory'; ``` 其中,/path/to/directory是数据泵目录的路径。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenhq_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值