Oracle 21c:如何在同一服务器高效克隆数据库至新库名并保留Schema与数据
Oracle 同一服务器克隆数据库(EXAMPLE → NEW_DB)的等效操作
在Oracle中,对应MySQL mysqldump | mysql 管道克隆的方案是使用数据泵(expdp/impdp),以下是具体步骤:
前提准备
- 确保已在同一服务器上创建好目标数据库
NEW_DB,并提前创建与原库EXAMPLE一致的表空间、用户(Schema:USERS、FOOBAR),保证用户拥有足够的权限和存储空间。 - 执行命令的用户需具备
EXP_FULL_DATABASE和IMP_FULL_DATABASE角色权限。
方案1:生成备份文件后导入(最常用)
1. 导出原库EXAMPLE的Schema与数据
使用expdp导出指定Schema:
expdp dba_user/dba_pwd@EXAMPLE schemas=USERS,FOOBAR dumpfile=example_clone.dmp logfile=exp_example.log directory=DATA_PUMP_DIR
dba_user/dba_pwd:拥有导出权限的DBA账号@EXAMPLE:原库的连接字符串schemas:指定要克隆的Schema(USERS、FOOBAR)dumpfile:导出的备份文件名logfile:导出过程日志文件directory:Oracle预定义的目录对象,可通过SELECT * FROM DBA_DIRECTORIES;查看实际路径
2. 导入到目标库NEW_DB
使用impdp将备份导入目标库:
impdp dba_user/dba_pwd@NEW_DB schemas=USERS,FOOBAR dumpfile=example_clone.dmp logfile=imp_newdb.log directory=DATA_PUMP_DIR
- 若原库与目标库的表空间名称不同,需添加
remap_tablespace参数,例如:remap_tablespace=EXAMPLE_TBS:NEW_DB_TBS - 若需修改Schema名称,可使用
remap_schema=原Schema:新Schema,这里保持同名可省略
方案2:直接网络传输导入(无中间备份文件,类似MySQL管道)
通过数据库链接直接在两个库间传输数据,无需生成dump文件:
1. 在原库EXAMPLE中创建到目标库NEW_DB的链接
CREATE DATABASE LINK new_db_link CONNECT TO target_dba_user IDENTIFIED BY target_dba_pwd USING 'NEW_DB';
2. 直接导出并导入
expdp dba_user/dba_pwd@EXAMPLE schemas=USERS,FOOBAR network_link=new_db_link logfile=direct_clone.log
此命令会直接将原库的Schema和数据传输到目标库,效率更高。
内容的提问来源于stack exchange,提问作者Gavin Ray
相关产品推荐
相关产品推荐

