使用数据泵(Data Pump)迁移Oracle数据库数据

news/2024/9/25 6:53:28/

目的

将一个oracle数据库实例数据复制给另一个实例

注意事项

sqlplus(即在本机linux环境下执行sql)、expdp、impdp等命令一般需要切换到oracle用户才能执行
如果你当前是linux的root用户,请切换用户

su - oracle
//一般在oracle账号下才能显示echo $ORACLE_HOME的结果

正式迁移步骤

1.确定导出数据的目录
不仅要创建文件夹,而且要创建对应数据库对象
路径可以随意,比如我打算放在$ORACLE_HOME+/dbs/old这样一个路径下

mkdir /u01/app/oracle/product/19.3.0/dbhome_1/dbs/old

2.登录sqlplus去创建export_dir对象

sqlplus 账号/密码@你的SID

注意如果密码中带有@符号,请改成如下方式
巨坑! Oracle TNSPING 正常但sqlplus报错ORA-12154: TNS:could not resolve the connect identifier specified

sqlplus '账号/"密码"'@你的SID
SQL> CREATE DIRECTORY export_dir AS '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/old';Directory created.

export_dir命名随意
产生结果可以通过如下sql查找

SELECT * FROM dba_directories

3. 使用expdp 命令导出数据
请务必在操作系统的命令行界面中执行 expdp 命令,而不是在 SQL*Plus 环境中执行。注意别用sys,用其它有dba角色的账号。

expdp '账号/"密码"'@你的SID schemas=用户1,用户2,用户3 directory=export_dir dumpfile=export.dmp logfile=export.log
  • username/password@old_instance 是连接到旧实例的用户名和密码。
  • schemas=user1,user2 指定要导出的用户列表,用逗号分隔。
  • directory=export_dir 指定导出文件的目录。
  • dumpfile=export.dmp 指定导出文件的名称。
  • logfile=export.log 指定导出过程的日志文件。

4.在新机器或者新实例上创建import_dir对象和对应目录
记得切换oracle用户后登录sqlplus

SQL> CREATE DIRECTORY import_dir AS '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/new';
Directory created.

import_dir名字随意

mkdir /u01/app/oracle/product/19.3.0/dbhome_1/dbs/new

5.将export.dmp复制到new目录下
6.使用impdp命令导入数据

impdp username/password@new_instance directory=import_dir dumpfile=export.dmp logfile=import.log remap_schema=user1:new_user1 remap_schema=user2:new_user2
  • username/password@new_instance 是连接到新实例的用户名和密码。
  • directory=import_dir 指定导入文件的目录。
  • dumpfile=export.dmp 指定要导入的导出文件。
  • logfile=import.log 指定导入过程的日志文件。
  • remap_schema=user1:new_user1 和 remap_schema=user2:new_user2 可选,用于重新映射用户,如果在新实例中用户名称不同于旧实例。

7.可能出现的问题
ORA-39087: directory name IMPORT_DIR is invalid
可能是权限问题,确保执行导入操作的用户对 IMPORT_DIR 目录有读写权限。可以登录高权限账号使用以下命令授予权限:

GRANT READ, WRITE ON DIRECTORY IMPORT_DIR TO 执行导入的用户;

ORA-31631: privileges are required
。ORA-39122: Unprivileged users may not perform REMAP_SCHEMA remappings.

表明当前用户没有执行 REMAP_SCHEMA 操作所需的权限。

GRANT IMP_FULL_DATABASE TO 执行导入的用户;

http://www.ppmy.cn/news/1530168.html

相关文章

新手教学系列——为表格行增加倒计时列

在现代网页开发中,许多应用场景都需要显示倒计时功能,例如在线促销的限时抢购、拍卖会的剩余时间、或是订单支付的有效期。这类倒计时信息通常以动态的形式展现在表格中,随着时间的流逝,倒计时也会自动更新。这篇文章将带你一步步实现一个动态倒计时表格功能,展示如何为表…

【RabbitMQ】⾼级特性

RabbitMQ ⾼级特性 1. 消息确认1.1 消息确认机制1.2 代码示例 2. 持久化2.1 交换机持久化2.2 队列持久化2.3 消息持久化 3. 发送⽅确认3.1 confirm确认模式3.2 return退回模式3.3 问题: 如何保证RabbitMQ消息的可靠传输? 4. 重试机制5. TTL5.1 设置消息的TTL5.2 设置队列的TTL…

速度与安全:边缘计算如何改变游戏规则

Ⅰ初探边缘计算 1. 边缘计算是什么? 边缘计算,就像是城市里的便利店,它让数据处理不再需要长途跋涉到市中心的“超级计算机”超市,而是在你身边的每个角落就能快速完成。想象一下,你急需一杯冰咖啡,边缘计…

DVWA 靶场环境搭建

作者:程序那点事儿 日期:2024/09/15 09:30 什么是DVWA: 是OWSASP官方编写的PHP网站,包含了各种网站常见漏洞(漏洞靶场),可以学习攻击及修复方式。 PHP环境包含了,Windows/Apache/Mysql/Php g…

【java实现json转化为CSV文件】

文章目录 JSON文件中的数据格式测试文件转换的接口 JSON文件中的数据格式 单条数据展开后如下: {"text": "《邪少兵王》是冰火未央写的网络小说连载于旗峰天下","spo_list":[{"predicate": "作者", "objec…

茶思屋直播|TinyEngine+AI:聚焦主航道,在实践中探索低代码技术黑土地

低代码引擎使能开发者定制低代码平台。它是低代码平台的底座,提供可视化搭建页面等基础能力,既可以通过线上搭配组合,也可以通过cli创建个人工程进行二次开发,实时定制出自己的低代码平台。适用于多场景的低代码平台开发&#xff…

Qt 每日面试题 -1

1、讲述Qt信号槽机制与优势与不足 优点∶ ①类型安全 需要关联的信号槽的签名必须是等同的。即信号的参数类型和参数个数同接受该信号的槽的参数类型和参数个数相同。若信号和槽签名不一致,编译器会报错。 ②松散耦合 信号和槽机制减弱了Qt对象的耦合度。激发信号…

mfc140u.dll引发的软件故障怎么破?mfc140u.dll文件损坏的解决办法全知道!

当这个重要的 DLL 文件丢失或损坏时,用户可能会收到一个错误消息,提示 “程序无法启动,因为计算机中缺失 mfc140u.dll” 或类似的提示。这种情况不仅令人困扰,而且可以干扰正常的工作流程,尤其是当您依赖特定软件完成日…