oracle19c pdb导入导出迁移数据

情况说明

最近遇到一个比较困难的问题,用户源库和目标库使用DSG软件进行数据同步,用户源端库在使用的过程中新增了pdb库,而目标端却没有同时新建pdb库,造成了生产库数据无法同步;
1、我所采取的尝试,因为现有的库是19c 就使用pdb refresh的方式来将生产机端的pdb库同步到镜像库上,随之而来的问题是,在操作时出现目标库无法创建文件目录及文件,导致生产库pdb数据无法同步到目标镜像库。(源目库都采用omf方式创建文件方式,并且生产库和目标库数据库版本还不一致),所以尝试失败。
2、就这个问题数据无法迁移到目标库,还是要解决,采用pdb导入导出的方式来迁移数据,下面就该方式来操作。采用导入导出方式针对数据量比较小的库比较可控。
下面是pdb迁移方式:

环境介绍

1、环境介绍:
源库RAC: 19c  for orhel 7.9   ip:10.10.10.11(物理主机地址,scan-ip略)
目标库(单库):19c for orhel 7.9   ip:10.10.10.100
2、检查源库情况
SQL> show pdbs;
CON_ID CON_NAME                       OPEN MODE  RESTRICTED

2 PDB$SEED                       READ ONLY  NO
4 PDB01                          READ WRITE NO
5 PDB02                          READ WRITE NO
(备注:本次迁移的就是这个pdb02库)
创建测试数据:
SQL> show pdbs;
CON_ID CON_NAME                       OPEN MODE  RESTRICTED

2 PDB$SEED                       READ ONLY  NO
4 PDB01                          READ WRITE NO
5 PDB02                          READ WRITE NO
SQL> create table it (id number,name varchar(30));
Table created.
SQL> insert into it values(1,'yichen');
1 row created.
SQL> insert into it values(2,'zhangsan');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from it;
ID NAME

1 yichen
2 zhangsan
3、源库导出scott用户数据
SQL> alter session set container=pdb02;
Session altered.
SQL> create directory dp_dir as '/home/oracle/dp_dir';
Directory created.
SQL> grant read,write on directory dp_dir to public;
Grant succeeded.
[oracle@rac1 ~]$ mkdir dp_dir
[oracle@rac1 ~]$ expdp scott/oracle@pdb02 directory=dp_dir dumpfile=scott20260121.dmp logfile=scott20260121.log full=y
4、拷贝数据文件到目标库
[oracle@rac1 dp_dir]$ scp scott20260121.*  oracle@10.10.10.100:/home/oracle/
oracle@10.10.10.100's password:
scott20260121.dmp                                                            100% 3628KB  45.4MB/s   00:00
scott20260121.log                                                            100%   10KB   6.6MB/s   00:00
5、目标库创建pdb02(从pdbseed,备注目标库是omf文件命名方式)
SQL> show pdbs;
CON_ID CON_NAME                       OPEN MODE  RESTRICTED

2 PDB$SEED                       READ ONLY  NO
SQL> create pluggable database pdb02 admin user pdb02 identified by oracle roles=(connect);
Pluggable database created.
SQL> show pdbs;
CON_ID CON_NAME                       OPEN MODE  RESTRICTED

2 PDB$SEED                       READ ONLY  NO
3 PDB02                          MOUNTED
SQL> alter pluggable database pdb02 open;
Pluggable database altered.
SQL> show pdbs;
CON_ID CON_NAME                       OPEN MODE  RESTRICTED

2 PDB$SEED                       READ ONLY  NO
3 PDB02                          READ WRITE NO
创建用户和表空间信息:
SQL> alter session set container=pdb02;
Session altered.
SQL> show pdbs;
CON_ID CON_NAME                       OPEN MODE  RESTRICTED

3 PDB02                          READ WRITE NO
SQL> create tablespace data02 datafile size 1g autoextend on next 10m;
Tablespace created.
SQL> create user scott identified by oracle ;
User created.
SQL> grant dba,unlimited tablespace to scott;
Grant succeeded.
创建导入目录文件目录:
SQL> create directory dp_dir as '/home/oracle/dp_dir';
Directory created.
SQL> grant read,write on directory dp_dir to public;

Grant succeeded.

6、导入数据到目标库pdb02
[oracle@db100 admin]$ impdp scott/oracle@pdb02 directory=dp_dir dumpfile=scott20260121.dmp logfile=scott20260121.log
备注:导入过程中有几个报错为公共用户账户的原因,在导入数据时主要用户存在表空间情况。
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type DATABASE_EXPORT/STATISTICS/MARKER
Processing object type DATABASE_EXPORT/FINAL_POST_INSTANCE_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/AUDIT_UNIFIED/AUDIT_POLICY_ENABLE
Processing object type DATABASE_EXPORT/POST_SYSTEM_IMPCALLOUT/MARKER
Job "SCOTT"."SYS_IMPORT_FULL_01" completed with 9 error(s) at Wed Jan 21 22:12:14 2026 elapsed 0 00:02:11
7、检查导入数据情况
[oracle@db100 admin]$ sqlplus scott/oracle@pdb02
SQL> select * from it;
ID NAME

1 yichen
2 zhangsan
SQL> select tablespace_name from dba_data_files;
TABLESPACE_NAME

SYSTEM
SYSAUX
UNDOTBS1
DATA02
USERS
UNDO_2
6 rows selected.
小结:本次尝试源pdb数据导入到新pdb库,采用导入导出方式来实现,本方法针对数据库比较小,导入时间无要求是可以使用,对于大量数据迁移不建议使用。


2026.1.21


请使用浏览器的分享功能分享到微信等