【BUILD_ORACLE】使用Oracle数据泵在线不停机克隆/迁移PDB

来源:这里教程网 时间:2026-03-03 18:05:48 作者:

实验环境

搭建平台:VMware Workstation

OS:OL 7.5

DB:Oracle 12.2.0.1 具体步骤 1. 为了避免用户对数据的更改导致克隆后的目标库数据与源库有出入, 可先把表空间改为read only模式,语法如下:SQL> alter tablespace xxx read only; 2.使用数据泵导出expdp <dumpuser>/<password>@<pdb名称> full=Y dumpfile=exp_full.dmp directory=<dump_dir> transportable=always logfile=export_full.log注:(1)使用expdp的全库导出的用户需要有DATAPUMP_EXP_FULL_DATABASE的权限(2)Directory的查询方法:select * from dba_diretories; Directory的创建方法:create directory xxx as ‘<绝对路径>’;(3)TRANSPORTABLE=ALWAYS搭配FULL=Y时,会把库的表空间分两类:可传输表空间与不可传输表空间(SYSTEM,SYSAUX这种系统表空间),会导出包含在传输表空间对象的元信息,以及对不可传输表空间上对象使用direct path以及external table方式导出元信息与数据 3.把源库的表空间改回read write状态SQL> alter tablespace xxx read write; 4.在目标库上用数据泵导入Impdp <dumpuser>/<password>@<pdb名称> full=Y dumpfile=exp_full.dmp directory=<dump_dir> transport_datafiles='/u01/app/oracle/oradata/dbname/test01.dbf','/u01/app/oracle/oradata/dbname/test02.dbf' logfile=import_full.log注:(1)需要把dmp文件传输到目标库,并创建目录对象directory(2)使用impdp的全库导出的用户需要有DATAPUMP_EXP_FULL_DATABASE的权限(3)需要使用transport_datafiles参数,例如这里导入的是test表空间的dbf文件, 如果dbf文件过多,则需要写入到parfile里面,否则会导致命令行过长无法正常执行:Impdp <dumpuser>/<password>@<pdb名称> dumpfile=exp_full.dmp directory=<dump_dir> full=Y parfile=<文本文件绝对路径> logfile= import_full.logParfile文件里的内容:transport_datafiles='/u01/app/oracle/oradata/dbname/test01.dbf','/u01/app/oracle/oradata/dbname/test02.dbf'

相关推荐