expdp impdp oracle数据迁移

  1. 需求描述
    项目原来使用的是 eureka+apollo,现要改为nacos ,配置中心数据库使用oracle,nacos 改造较为简单,这里记录下oracle 的迁移

  2. 迁移方案
    因为数据库的版本是从11g,升级为19c ,查了下资料,Oracle 10g 开始引入的全新的用于快速迁移数据的工具expdp / impdp
    提供了一种用于在 Oracle 数据库之间传输数据对象的机制。是服务端的工具程序,它们只能在数据库服务端使用,不可以在客户端使用。expdp 导出的数据文件只能使用 impdp 命令进行导入。优点如下:

1、导出 / 导入的速度快,效率高。
   2、可以在不实际执行导出的情况下,估计需要的磁盘空间和所需时间。
   3、可以只处理某些对象,不处理某些对象,或者只处理某些对象中满足条件的数据。
   4、通过 db link 将远程数据库导出到转储文件。
   5、通过 db link,直接将远程数据库中的数据导入到当前数据库。
   6、导入时可以修改数据所在的 schema 名称,表空间名称以及数据文件名称。
   7、导出模式:数据库 、表空间 、对象模式 、表 。
   8、通过采样,导出部分数据。
   9、只导出元数据。
   10、并行操作。
   B、exp / imp 是客户端的工具程序,它们既可以客户端使用,也可以在服务器端使用。exp 导出的数据文件只能使用 imp 命令进行导入。

  1. 命令详解:expdp
关键字说明 [ 默认值 ]
userid用户名/口令,必须为第一个参数,且不能省略。
directory用于转储文件和日志文件的目录对象。[ data_pump_dir]
userid用户名/口令,必须为第一个参数,且不能省略。
dumpfile指定目标转储文件名的列表 [expdat.dmp]
logfile指定日志文件名 [export.log]
schemas要导出的方案的列表 [登录的方案,即 userid 的那个用户]
tables标识要导出的表的列表。例如, tables=hr.employees,sh.sales:sales_1995
nologfile不写入日志文件 [N]。
query用于导出表的子集的谓词子句。例如, query=employees:“WHERE department_id > 10”。
reuse_dumpfiles覆盖目标转储文件 (如果文件存在) [N]
compression减少转储文件大小。有效的关键字值为: all, data_only, [matadata_only] 和 none
content指定要卸载的数据。[ ALL ] 即:元数据(表结构等)和数据。DATA_ONLY 即:仅导出数据不导出元数据(表结构)。 METADATA_ONLY 即:仅导出元数据(表结构等)不导出数据。
encryption加密某个转储文件的一部分或全部。 有效的关键字值为: ALL 即:加密元数据(表结构等)和数据。 DATA_ONLY,即:仅加密数据部分,不加密元数据(表结构等)。ENCRYPTED_COLUMNS_ONLY, 即:仅加密列。METADATA_ONLY,即:仅加密元数据(表结构等)。NONE,即不加密元数据(表结构等)和数据。
encryption_algorithm指定加密的方式。有效的关键字值为: [ AES128 ], AES192 和 AES256
encryption_mode生成加密密钥的方法。有效的关键字值为: dual, password和 [TRANSPARENT]
encryption_password用于在转储文件中创建加密数据的口令密钥
network_link源系统的远程数据库链接的名称。即dblink的名称,用于导出远程数据库。(性能受网络限制)
version要导出的对象版本。有效的关键字值为: [COMPATIBLE], latest 或任何有效的数据库版本。在不同版本数据库导入导出数据时,必须指定此参数,否则会导入失败
full导出整个数据库 [N]。
estimate_only计算作业估计值而不执行导出
estimate计算作业估计值。 有效的关键字值为: [blocks] 和 STATISTICS
help显示帮助消息 [N]

常用导出语句:
   1、导出用户 scott 和 HR 的所有对象,目录对象为:默认,转储文件名称为:默认[EXPDAT.DMP], 日志文件为:默认[export.log]

expdp userid=system/oracle schemas=SCOTT,HR

2、导出用户 scott 的 emp 表和 HR 的 jobs 表,目录对象为:默认,转储文件名称为:默认[EXPDAT.DMP], 日志文件为:默认[export.log]

expdp system/oracle tables=scott.emp,hr.jobs

3、导出远程用户的scott

expdp userid=system/oracle network_link='test' schemas=scott,hr

4、生产环境单实例数据库备份命令

expdp userid=帐号/密码@实例名 schemas=方案名列表 reuse_dumpfiles=y compression=all encryption=data_only encryption_mode=password encryption_password=密码

特别说明:为了保证数据安全,导出时对转储文件进行加密(密码可以动态生成),防止未授权人员获取此转储文件,导致数据泄露

impdp:

关键字说明 [ 默认值 ]
userid用户名/口令,必须为第一个参数,且不能省略。
directory用于转储文件, 日志文件和 SQL 文件的目录对象。[ data_pump_dir]
dumpfile要从中导入的转储文件的列表,可以有多个。[expdat.dmp]
logfile日志文件名 [import.log]
schemas要导入的方案的列表。
encryption_password用于访问转储文件中的加密数据的口令密钥
full导入源中的所有对象 [Y]
remap_schema将一个方案中的对象加载到另一个方案。(修改用户名)
remap_tablespace将表空间对象重新映射到另一个表空间。(修改表空间)
reuse_datafiles如果表空间已存在, 则将其初始化 [N]
tables标识要导入的表的列表
help显示帮助消息 [N]

常用的导入语句:
   1、将用户 scott 的 emp 用户表删除,从备份文件 EXPDAT.DMP 中恢复 emp 表。(提前将 EXPDAT.DMP 放入 DATA_PUMP_DIR 对应的目录)

impdp userid=system/oracle tables=scott.emp

2、将备份文件 expdat.dmp 中所有对象导入到数据库中,密码为123456。(提前将 expdat.dmp 放入 DATA_PUMP_DIR 对应的目录)

impdp userid=system/oracle full=y encryption_password=123456

如果是使用用户导入的方式,需在导入的数据库提前创建好用户及命名空间

--创建用户 ABC ,密码: 123456
create user ABC identified by 123456;
--指定默认的表空间为 CRT
alert user ABC default tablespace CRT;
--给用户加权限 
GRANT CONNECT ,RESOURCE TO ABC;
GRANT CREATE ANY SEQUENCE TO ABC;
GRANT CREATE ANY TABLE TO ABC;
GRANT DELETE ANY TABLE TO ABC;
GRANT INSERT ANY TABLE TO ABC;
GRANT SELECT ANY TABLE TO ABC;
GRANT EXECUTE ANY PROCEDURE TO ABC;
GRANT UPDATE ANY TABLE TO ABC;
GRANT CREATE ANY VIEW TO ABC;

-- 我这里使用到的导入:
impdp 用户名/密码@IP:1521/orcl directory=DATA_BDP_DUMP DUMPFILE=EXPDAT_SERVICE.DMP REMAP_SCHEMA=EXT_SERVICE:EXT_SERVICE REPMAP_TABLESPACE=EXT_SERVICE:CRT_TEST,TEMP:TEMP VERSION=11.2.0.4.0
--导出用户ext_Service
expdp userid=用户名/密码 network_link='库名0' schemas=导出用户(多个用逗号隔开) version=11.2.0.4.0

-- 查看数据库版本信息 
select * from v$version; 
--查看逻辑目录
select * from dba_directories;
--查看表空间大小 
select t.tablespace_name,round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t ,dba_data_files d 
where t.tablespace_name=d.tablespace_name
group by t.tablespace_name;

--查看指定用户 ABC的默认空间 
select DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME='ABC';
-- 导出时,可以自己创建逻辑目录文件夹 (以路径:/data/storage/ 创建为逻辑目录,并命名为 EXT_SER_DIR )  
create directory EXT_SER_DIR AS '/data/storage/';
--赋权限给ABC 
GRANT READ ,WRITE ON DIRECTORY EXT_SER_DIR TO ABC;


参考链接:Oracle expdp/impdp 及 exp/imp 命令详解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Aaier_aek

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

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

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

打赏作者

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

抵扣说明:

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

余额充值