目录
[1.2.2.创建名为 DATA_PUMP_PDB 的 PDB](#1.2.2.创建名为 DATA_PUMP_PDB 的 PDB)
[1.2.3.打开 PDB](#1.2.3.打开 PDB)
[1.2.4.切换到 DATA_PUMP_PDB20260615](#1.2.4.切换到 DATA_PUMP_PDB20260615)
1.2.7.创建业务用户并授权(避免使用sys/system)
需求:
需要将集群中特定的PDB通过数据泵的方式恢复至单机部署的数据库中!
一、实操数据准备
1.1.获取源库信息
在RAC环境的任意一个节点上,以 sysdba 身份执行以下查询,并准确记录 返回的DBID和DB_NAME(这是后续恢复的关键)。
bash
[oracle@p19c01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jun 5 09:17:59 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select dbid,name from v$database;
DBID NAME
---------- ---------
1583063084 P19C0
SQL>
SQL> desc v$database;
关键信息:
SQL> select dbid,name from v$database;
DBID NAME
1583063084 P19C0
1.2.创建一个新的pdb并插入数据
1.2.1.查看当前环境并删除多余的pdb
查看当前CDB信息
select name,dbid,cdb from v$database;

查看已有的PDB
bash
[oracle@p19c01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jun 15 11:32:44 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
4 RMAN_PDB MOUNTED
5 DATA_PUMP_PDB READ WRITE NO
SQL>
SQL>
SQL> alter pluggable database rman_pdb close immediate;
alter pluggable database rman_pdb close immediate
*
ERROR at line 1:
ORA-65020: pluggable database RMAN_PDB already closed
SQL> alter pluggable database data_pump_pdb close immediate;
Pluggable database altered.
SQL>
SQL> drop pluggable database rman_pdb including datafiles;
Pluggable database dropped.
SQL>
SQL> drop pluggable database data_pump_pdb including datafiles;
Pluggable database dropped.
SQL>
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
SQL>
查看当前的实例名和主机名
select instance_name,host_name from v$instance;

1.2.2.创建名为 DATA_PUMP_PDB 的 PDB
创建出一个新 PDB 叫 DATA_PUMP_PDB ,其管理员是 DataPumpUser01 (密码 oracle),所有数据文件存放由ASM自动存储管理来自己进行。
create pluggable database DATA_PUMP_PDB20260615 admin user DataPumpUser01 identified by oracle;
bash
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
SQL>
SQL>
SQL> create pluggable database DATA_PUMP_PDB20260615 admin user DataPumpUser01 identified by oracle;
Pluggable database created.
SQL>
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
4 DATA_PUMP_PDB20260615 MOUNTED
SQL>
1.2.3.打开 PDB
alter session set container=DATA_PUMP_PDB20260615 ;
alter database open;
也可以一步到位:alter pluggable database DATA_PUMP_PDB20260615 open;

1.2.4.切换到 DATA_PUMP_PDB20260615
alter session set container=DATA_PUMP_PDB20260615 ;
在pdb中执行,查看当前pdb的服务名
select name,pdb from v$services where pdb is not null;

1.2.5.查看当前用户及所使用的默认表空间
bash
SQL> show user;
USER is "SYS"
SQL>
SQL>
SQL> select username,default_tablespace from dba_users where username='SYS';
USERNAME DEFAULT_TABLESPACE
-------------------------------------------------------------------------------------------------------------------------------- ------------------------------
SYS SYSTEM
SQL>
显然,在没有指定用户,默认的情况下,我们在切换PDB的时候,默认的用户是sys,默认使用的表空间也是system。
1.2.6.创建测试表空间
创建专门的测试表空间
-- 创建独立的业务表空间
CREATE TABLESPACE business_data DATAFILE SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1G;

1.2.7.创建业务用户并授权(避免使用sys/system)
创建并授权
create user app_user identified by appPassword default tablespace business_data temporary tablespace temp quota unlimited on business_data;
授予权限
grant connect,resource to app_user;
grant create sesssion,create table to app_user;
切换到业务用户
connect app_user/appPassword@dataPumpPdb
bash
SQL> set linesize 200;
SQL> select username,user_id from dba_users;
USERNAME USER_ID
-------------------------------------------------------------------------------------------------------------------------------- ----------
SYS 0
SYSTEM 9
GSMCATUSER 62
XS$NULL 2147483638
DBSNMP 57
APPQOSSYS 58
MDDATA 98
SYSBACKUP 2147483617
REMOTE_SCHEDULER_AGENT 35
DBSFWUSER 36
GSMUSER 23
USERNAME USER_ID
-------------------------------------------------------------------------------------------------------------------------------- ----------
GGSYS 63
ANONYMOUS 66
SYSRAC 2147483620
CTXSYS 86
OJVMSYS 84
SI_INFORMTN_SCHEMA 91
DVSYS 1279990
DVF 102
AUDSYS 8
DIP 24
ORDPLUGINS 90
USERNAME USER_ID
-------------------------------------------------------------------------------------------------------------------------------- ----------
GSMADMIN_INTERNAL 22
LBACSYS 100
MDSYS 92
OLAPSYS 95
SYSKM 2147483619
ORDDATA 89
OUTLN 13
ORACLE_OCM 40
SYS$UMF 49
XDB 65
DATAPUMPUSER01 105
USERNAME USER_ID
-------------------------------------------------------------------------------------------------------------------------------- ----------
SYSDG 2147483618
ORDSYS 88
WMSYS 75
36 rows selected.
SQL>
SQL> create user app_user identified by appPassword default tablespace business_data temporary tablespace temp quota unlimited on business_data;
User created.
SQL>
SQL> select username from dba_users where username like '%app';
no rows selected
SQL>
SQL> select username from dba_users where username like 'APP%';
USERNAME
--------------------------------------------------------------------------------------------------------------------------------
APPQOSSYS
APP_USER
SQL>
SQL>
SQL> grant connect,resource to app_user;
Grant succeeded.
SQL>
SQL> grant create session,create table to app_user;
Grant succeeded.
SQL>
SQL> connect app_user/appPassword@dataPumpPdb
Connected.
SQL> show user;
USER is "APP_USER"
SQL>
1.2.8.创建测试表并插入数据
create table data_pump_pdb_testInfo(id number,name varchar2(200));
insert into data_pump_pdb_testInfo values(1,'张三');
insert into data_pump_pdb_testInfo values(2,'李四');
insert into data_pump_pdb_testInfo values(3,'测试将集群中特定的pdb通过数据泵方式恢复至单机环境');
commit;

1.2.9.验证准备数据
select * from data_pump_pdb_testInfo;

bash
SQL> CREATE TABLE employees (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
department VARCHAR2(50),
salary NUMBER(10,2),
hire_date DATE,
status VARCHAR2(20)
); 2 3 4 5 6 7 8
Table created.
SQL>
SQL> BEGIN
FOR i IN 1..1200 LOOP
INSERT INTO employees (id, name, department, salary, hire_date, status)
VALUES (
i,
'Employee_' || i,
CASE MOD(i, 5)
WHEN 0 THEN 'IT'
WHEN 1 THEN 'HR'
2 3 4 5 6 7 8 9 10 WHEN 2 THEN 'Finance'
WHEN 3 THEN 'Marketing'
ELSE 'Sales'
END,
ROUND(DBMS_RANDOM.VALUE(30000, 120000), 2),
SYSDATE - DBMS_RANDOM.VALUE(1, 3650),
CASE WHEN MOD(i, 10) = 0 THEN 'Inactive' ELSE 'Active' END
);
-- 每 1200 条提交一次
IF MOD(i, 1200) = 0 THEN
COMMIT;
END IF;
END LOOP;
COMMIT;
END;
/ 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
PL/SQL procedure successfully completed.
SQL>
SQL> select count(*) from employees;
COUNT(*)
----------
1200
SQL>
二、数据泵导出测试PDB
2.1.创建目录
2.1.1.创建物理目录
mkdir -p /u01/backup/data_pump_pdb
chown -R oracle:oinstall /u01/backup/data_pump_pdb
chmod 755 /u01/backup/data_pump_pdb
注意:赋权很重要,决定了等一下执行备份任务的时候,能正常的写入备份文件。

2.1.2.在pdb中创建目录对象
在pdb会话中执行
create or replace directory expdp_dir as '/u01/backup/data_pump_pdb';
查看目录是否创建成功
select directory_name,directory_path from dba_directories where directory_name = 'EXPDP_DIR';
bash
SQL> create or replace directory expdp_dir as '/u01/backup/data_pump_pdb';
Directory created.
SQL>
SQL> column directory_name format a30;
SQL> column directory_path format a50;
SQL> select directory_name,directory_path from dba_directories where directory_name = 'EXPDP_DIR';
DIRECTORY_NAME DIRECTORY_PATH
------------------------------ --------------------------------------------------
EXPDP_DIR /u01/backup/data_pump_pdb
SQL>
2.2.配置TNS连接
2.2.1.获取当前PDB的服务名
select name,pdb from v$services where pdb is not null;

2.2.2.配置tnsnames.ora监听
编辑tnsnames.ora文件
dataPumpPdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.75.101)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DATA_PUMP_PDB20260615)
)
)

2.2.3.测试tns监听连接是否正常
tnsping dataPumpPdb

能看到返回结果为ok,即映射配置是ok的。
2.2.4.配置动态监听注册
注意:配置完执行alter system register命令手动触发注册如果没有反应。就等pmon进程自己去注册,一分钟左右。
bash
[oracle@p19c01 admin]$ cat listener.ora
# Database Listener Configuration for RAC
# 默认监听器 (1521)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = p19c01)(PORT = 1521))
)
)
# 开启监听日志(方便排错)
LOGGING_LISTENER = ON
LOG_FILE_LISTENER = listener.log
LOG_DIRECTORY_LISTENER = /u01/app/oracle/diag/tnslsnr/single_oracle/listener/alert
[oracle@p19c01 admin]$

2.2.4.测试连接
sqlplus app_user/appPassword@dataPumpPdb

2.3.授予必要条件
2.3.1.授予数据泵角色和目录读写权限
连接准备导出的PDB
alter session set container=DATA_PUMP_PDB20260615
授予用户目录访问权限
grant read,write on directory expdp_dir to app_user;
授予导出所需的角色权限
grant exp_full_database to app_user;
授予用户在SYSTEM表空间的配额为无限制
alter user app_user quota unlimited on system;
bash
[oracle@p19c01 admin]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jun 15 14:29:16 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
4 DATA_PUMP_PDB20260615 READ WRITE NO
SQL>
SQL> alter session set container=DATA_PUMP_PDB20260615;
Session altered.
SQL> grant read,write on directory expdp_dir to app_user;
Grant succeeded.
SQL> grant exp_full_database to app_user;
Grant succeeded.
SQL> alter user app_user quota unlimited on system;
User altered.
SQL>
2.4.导出整个PDB
expdp app_user/appPassword@dataPumpPdb directory=EXPDP_DIR dumpfile=pdb_full_%U.dmp logfile=expdp_pdb_full.log full=y parallel=2 cluster=n
注意:
导出整个PDB(full模式) → 适合完整迁移,会包含PDB下的所有schema、表空间、对象。parallel参数根据资源调整,cluster=n确保只在当前节点执行。
parallel参数根据资源调整,cluster=n确保只在当前节点执行。
bash
[oracle@p19c01 admin]$ expdp app_user/appPassword@dataPumpPdb directory=EXPDP_DIR dumpfile=pdb_full_%U.dmp logfile=expdp_pdb_full.log full=y parallel=2 cluster=n
Export: Release 19.0.0.0.0 - Production on Mon Jun 15 14:32:13 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "APP_USER"."SYS_EXPORT_FULL_01": app_user/********@dataPumpPdb directory=EXPDP_DIR dumpfile=pdb_full_%U.dmp logfile=expdp_pdb_full.log full=y parallel=2 cluster=n
Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type DATABASE_EXPORT/STATISTICS/MARKER
Processing object type DATABASE_EXPORT/TABLESPACE
Processing object type DATABASE_EXPORT/PROFILE
Processing object type DATABASE_EXPORT/SCHEMA/USER
Processing object type DATABASE_EXPORT/RADM_FPTM
Processing object type DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/ROLE_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE
Processing object type DATABASE_EXPORT/SCHEMA/ON_USER_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/TABLESPACE_QUOTA
Processing object type DATABASE_EXPORT/RESOURCE_COST
Processing object type DATABASE_EXPORT/TRUSTED_DB_LINK
Processing object type DATABASE_EXPORT/DIRECTORY/DIRECTORY
Processing object type DATABASE_EXPORT/DIRECTORY/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/PRE_SYSTEM_ACTIONS/PROCACT_SYSTEM
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/PROCOBJ
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/POST_SYSTEM_ACTIONS/PRO CACT_SYSTEM
Processing object type DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA
Processing object type DATABASE_EXPORT/EARLY_POST_INSTANCE_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE
Processing object type DATABASE_EXPORT/NORMAL_POST_INSTANCE_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/COMMENT
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/INDEX
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/CONSTRAINT
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
. . exported "MDSYS"."RDF_PARAM$" 6.515 KB 3 rows
. . exported "SYS"."KU$_USER_MAPPING_VIEW" 6.078 KB 37 rows
. . exported "APP_USER"."DATA_PUMP_PDB_TESTINFO" 5.593 KB 3 rows
. . exported "APP_USER"."EMPLOYEES" 63.66 KB 1200 rows
. . exported "SYSTEM"."REDO_DB" 25.59 KB 1 rows
. . exported "WMSYS"."WM$WORKSPACES_TABLE$" 12.10 KB 1 rows
. . exported "WMSYS"."WM$HINT_TABLE$" 9.984 KB 97 rows
. . exported "LBACSYS"."OLS$INSTALLATIONS" 6.960 KB 2 rows
. . exported "WMSYS"."WM$WORKSPACE_PRIV_TABLE$" 7.078 KB 11 rows
. . exported "SYS"."DAM_CONFIG_PARAM$" 6.531 KB 14 rows
. . exported "SYS"."TSDP_SUBPOL$" 6.328 KB 1 rows
. . exported "WMSYS"."WM$NEXTVER_TABLE$" 6.375 KB 1 rows
. . exported "LBACSYS"."OLS$PROPS" 6.234 KB 5 rows
. . exported "WMSYS"."WM$ENV_VARS$" 6.015 KB 3 rows
. . exported "SYS"."TSDP_PARAMETER$" 5.953 KB 1 rows
. . exported "SYS"."TSDP_POLICY$" 5.921 KB 1 rows
. . exported "WMSYS"."WM$VERSION_HIERARCHY_TABLE$" 5.984 KB 1 rows
. . exported "WMSYS"."WM$EVENTS_INFO$" 5.812 KB 12 rows
. . exported "LBACSYS"."OLS$AUDIT_ACTIONS" 5.757 KB 8 rows
. . exported "LBACSYS"."OLS$DIP_EVENTS" 5.539 KB 2 rows
. . exported "AUDSYS"."AUD$UNIFIED":"AUD_UNIFIED_P0" 50.95 KB 0 rows
. . exported "SYS"."AUDTAB$TBS$FOR_EXPORT" 5.953 KB 2 rows
. . exported "SYS"."DBA_SENSITIVE_DATA" 0 KB 0 rows
. . exported "SYS"."DBA_TSDP_POLICY_PROTECTION" 0 KB 0 rows
. . exported "SYS"."FGA_LOG$FOR_EXPORT" 0 KB 0 rows
. . exported "AUDSYS"."AUD$UNIFIED":"SYS_P221" 100.1 KB 96 rows
. . exported "SYS"."NACL$_ACE_EXP" 0 KB 0 rows
. . exported "AUDSYS"."AUD$UNIFIED":"SYS_P248" 52.35 KB 3 rows
. . exported "LBACSYS"."OLS$AUDIT" 0 KB 0 rows
. . exported "LBACSYS"."OLS$COMPARTMENTS" 0 KB 0 rows
. . exported "LBACSYS"."OLS$DIP_DEBUG" 0 KB 0 rows
. . exported "LBACSYS"."OLS$GROUPS" 0 KB 0 rows
. . exported "LBACSYS"."OLS$LAB" 0 KB 0 rows
. . exported "LBACSYS"."OLS$LEVELS" 0 KB 0 rows
. . exported "LBACSYS"."OLS$POL" 0 KB 0 rows
. . exported "LBACSYS"."OLS$POLICY_ADMIN" 0 KB 0 rows
. . exported "LBACSYS"."OLS$POLS" 0 KB 0 rows
. . exported "LBACSYS"."OLS$POLT" 0 KB 0 rows
. . exported "LBACSYS"."OLS$PROFILE" 0 KB 0 rows
. . exported "LBACSYS"."OLS$PROFILES" 0 KB 0 rows
. . exported "LBACSYS"."OLS$PROG" 0 KB 0 rows
. . exported "LBACSYS"."OLS$SESSINFO" 0 KB 0 rows
. . exported "LBACSYS"."OLS$USER" 0 KB 0 rows
. . exported "LBACSYS"."OLS$USER_COMPARTMENTS" 0 KB 0 rows
. . exported "LBACSYS"."OLS$USER_GROUPS" 0 KB 0 rows
. . exported "LBACSYS"."OLS$USER_LEVELS" 0 KB 0 rows
. . exported "SYS"."AUD$" 23.47 KB 0 rows
. . exported "SYS"."DAM_CLEANUP_EVENTS$" 7.187 KB 0 rows
. . exported "SYS"."DAM_CLEANUP_JOBS$" 7.171 KB 0 rows
. . exported "SYS"."TSDP_ASSOCIATION$" 0 KB 0 rows
. . exported "SYS"."TSDP_CONDITION$" 0 KB 0 rows
. . exported "SYS"."TSDP_FEATURE_POLICY$" 0 KB 0 rows
. . exported "SYS"."TSDP_PROTECTION$" 0 KB 0 rows
. . exported "SYS"."TSDP_SENSITIVE_DATA$" 0 KB 0 rows
. . exported "SYS"."TSDP_SENSITIVE_TYPE$" 0 KB 0 rows
. . exported "SYS"."TSDP_SOURCE$" 0 KB 0 rows
. . exported "SYSTEM"."REDO_LOG" 0 KB 0 rows
. . exported "WMSYS"."WM$BATCH_COMPRESSIBLE_TABLES$" 0 KB 0 rows
. . exported "WMSYS"."WM$CONSTRAINTS_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$CONS_COLUMNS$" 0 KB 0 rows
. . exported "WMSYS"."WM$LOCKROWS_INFO$" 0 KB 0 rows
. . exported "WMSYS"."WM$MODIFIED_TABLES$" 0 KB 0 rows
. . exported "WMSYS"."WM$MP_GRAPH_WORKSPACES_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$MP_PARENT_WORKSPACES_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$NESTED_COLUMNS_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$RESOLVE_WORKSPACES_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$RIC_LOCKING_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$RIC_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$RIC_TRIGGERS_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$UDTRIG_DISPATCH_PROCS$" 0 KB 0 rows
. . exported "WMSYS"."WM$UDTRIG_INFO$" 0 KB 0 rows
. . exported "WMSYS"."WM$VERSION_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$VT_ERRORS_TABLE$" 0 KB 0 rows
. . exported "WMSYS"."WM$WORKSPACE_SAVEPOINTS_TABLE$" 0 KB 0 rows
. . exported "SYS"."NACL$_HOST_EXP" 6.914 KB 1 rows
. . exported "SYS"."NACL$_WALLET_EXP" 0 KB 0 rows
. . exported "SYS"."SQL$TEXT_DATAPUMP" 0 KB 0 rows
. . exported "SYS"."SQL$_DATAPUMP" 0 KB 0 rows
. . exported "SYS"."SQLOBJ$AUXDATA_DATAPUMP" 0 KB 0 rows
. . exported "SYS"."SQLOBJ$DATA_DATAPUMP" 0 KB 0 rows
. . exported "SYS"."SQLOBJ$PLAN_DATAPUMP" 0 KB 0 rows
. . exported "SYS"."SQLOBJ$_DATAPUMP" 0 KB 0 rows
. . exported "SYSTEM"."SCHEDULER_JOB_ARGS" 0 KB 0 rows
. . exported "SYSTEM"."SCHEDULER_PROGRAM_ARGS" 0 KB 0 rows
. . exported "WMSYS"."WM$EXP_MAP" 7.718 KB 3 rows
. . exported "WMSYS"."WM$METADATA_MAP" 0 KB 0 rows
Master table "APP_USER"."SYS_EXPORT_FULL_01" successfully loaded/unloaded
******************************************************************************
Dump file set for APP_USER.SYS_EXPORT_FULL_01 is:
/u01/backup/data_pump_pdb/pdb_full_01.dmp
/u01/backup/data_pump_pdb/pdb_full_02.dmp
Job "APP_USER"."SYS_EXPORT_FULL_01" successfully completed at Mon Jun 15 14:38:25 2026 elapsed 0 00:06:05
[oracle@p19c01 admin]$
三、准备单机环境
3.1.搭建单机恢复环境
省略。Oracle19c单机部署(本地)附网盘资源_本地部署oracle-CSDN博客
3.2.将备份的文件下载到本地或传输
准备接收的目录
mkdir -p /u01/backup/data_pump_pdb/
chown -R oracle:oinstall /u01/backup/data_pump_pdb/

也可以通过scp传输,这里因为选用scp传输的方式
scp 选项 源文件 目标主机:目标路径
传输 PDB 备份文件到目标主机
scp /u01/backup/data_pump_pdb/* oracle@192.168.75.155:/u01/backup/data_pump_pdb/

验证传输数据

四、执行备份恢复
4.1.删除历史pdbs
ALTER PLUGGABLE DATABASE DATA_PUMP_PDB CLOSE IMMEDIATE;
DROP PLUGGABLE DATABASE DATA_PUMP_PDB INCLUDING DATAFILES;

4.2.创建测试用例表空间和临时表空间
查看当前有哪些表空间
select name from v$tablespace;
select tablespace_name from dba_tablespaces order by tablespace_name;

创建表空间
CREATE TABLESPACE DATA_PUMP_PDB_tablespace DATAFILE SIZE 50M
AUTOEXTEND ON
NEXT 64M MAXSIZE 2G
EXTENT MANAGEMENT LOCAL;

创建临时表空间
bash
SQL> CREATE TEMPORARY TABLESPACE temp_default
TEMPFILE '/u01/oradata/temp_default.dbf' SIZE 1G
AUTOEXTEND ON NEXT 200M MAXSIZE 10G; 2 3
Tablespace created.
SQL>
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_default;
Database altered.
SQL>
4.3.创建空PDB
CREATE PLUGGABLE DATABASE DATA_PUMP_PDB
ADMIN USER pdbadmin IDENTIFIED BY pdbpass
ROLES=(dba)
DEFAULT TABLESPACE DATA_PUMP_PDB_tablespace
CREATE_FILE_DEST='/u01/oradata/DATA_PUMP_PDB';
4.4.在容器中创建表空间
bash
SQL> SHOW PDBS;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB MOUNTED
5 DATA_PUMP_PDB MOUNTED
SQL>
SQL>
SQL> alter session set container=DATA_PUMP_PDB;
Session altered.
SQL>
SQL> show con_name;
CON_NAME
------------------------------
DATA_PUMP_PDB
SQL>
SQL> alter database open;
Database altered.
SQL>
SQL> select name from v$tablespace;
NAME
------------------------------
DATA_PUMP_PDB_TABLESPACE
SYSTEM
SYSAUX
UNDOTBS1
TEMP
SQL> CREATE TABLESPACE DATA DATAFILE SIZE 50M
AUTOEXTEND ON
NEXT 64M MAXSIZE 32766M
EXTENT MANAGEMENT LOCAL;
2 3 4
Tablespace created.
SQL>
SQL> select name from v$tablespace;
NAME
------------------------------
DATA_PUMP_PDB_TABLESPACE
DATA
SYSTEM
SYSAUX
UNDOTBS1
TEMP
6 rows selected.
SQL>
4.5.创建导入用户,分配默认和临时表空间
查看源端用户详细权限
-- 查看用户拥有的系统权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'app_user';
-- 查看用户拥有的角色权限
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'app_user';
-- 查看用户是否是DBA
SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'app_user' AND GRANTED_ROLE = 'DBA';

授权
bash
SQL> CREATE OR REPLACE DIRECTORY impdir AS '/u01/backup/data_pump_pdb/';
Directory created.
SQL>
SQL> select tablespace_name,status,contents from dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS
------------------------------ --------- ---------------------
SYSTEM ONLINE PERMANENT
SYSAUX ONLINE PERMANENT
UNDOTBS1 ONLINE UNDO
TEMP ONLINE TEMPORARY
BUSINESS_DATA ONLINE PERMANENT
SQL> GRANT WRITE,READ ON DIRECTORY impdir TO app_user;
Grant succeeded.
SQL> grant dba to app_user;
Grant succeeded.
SQL> show con_name;
CON_NAME
------------------------------
DATA_PUMP_PDB20260615
SQL>
SQL> SELECT directory_name, directory_path FROM dba_directories WHERE directory_name = 'IMPDIR';
DIRECTORY_NAME
--------------------------------------------------------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------
IMPDIR
/u01/backup/data_pump_pdb/
SQL>
4.6.进行导入操作
impdp app_user/appPassword@dataPumpPdb directory=impdir dumpfile=pdb_full_%U.dump logfile=expdb_pdb_full.log full=y parallel=2 exclude=user
bash
[oracle@single_oracle backup]$ impdp app_user/appPassword@dataPumpPdb directory=impdir dumpfile=pdb_full_01.dmp,pdb_full_02.dmp logfile=expdb_pdb_full_new.log full=y
Import: Release 19.0.0.0.0 - Production on Mon Jun 15 15:59:56 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Master table "APP_USER"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "APP_USER"."SYS_IMPORT_FULL_01": app_user/********@dataPumpPdb directory=impdir dumpfile=pdb_full_01.dmp,pdb_full_02.dmp logfile=expdb_pdb_full_new.log full=y
Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/TABLESPACE
ORA-31684: Object type TABLESPACE:"UNDOTBS1" already exists
ORA-31684: Object type TABLESPACE:"TEMP" already exists
ORA-31684: Object type TABLESPACE:"BUSINESS_DATA" already exists
Processing object type DATABASE_EXPORT/PROFILE
Processing object type DATABASE_EXPORT/SCHEMA/USER
ORA-31684: Object type USER:"APP_USER" already exists
Processing object type DATABASE_EXPORT/RADM_FPTM
Processing object type DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT
ORA-39083: Object type PROC_SYSTEM_GRANT failed to create with error:
ORA-04031: unable to allocate 4096 bytes of shared memory ("java pool","java/lang/ref/Reference$Lock","JOXLE^4b2b34cc",":SGAClass")
Failing sql is:
BEGIN
DECLARE
TJP SYS.DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY;
CURSOR C1 IS SELECT KIND,GRANTEE,TYPE_SCHEMA,TYPE_NAME,
NAME,ACTION,ENABLED FROM TEMP_JAVA_PRIVS;
BEGIN
OPEN C1;
FETCH C1 BULK COLLECT INTO TJP;
CLOSE C1;
SYS.DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(TJP);
EXECUTE IMMEDIATE('DROP TABLE TEMP_JAVA_PRIVS');
END;COMMIT; END;
Processing object type DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/ROLE_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE
Processing object type DATABASE_EXPORT/SCHEMA/ON_USER_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/TABLESPACE_QUOTA
Processing object type DATABASE_EXPORT/RESOURCE_COST
Processing object type DATABASE_EXPORT/TRUSTED_DB_LINK
Processing object type DATABASE_EXPORT/DIRECTORY/DIRECTORY
Processing object type DATABASE_EXPORT/DIRECTORY/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/PRE_SYSTEM_ACTIONS/PROCACT_SYSTEM
>>> Cannot set an SCN larger than the current SCN. If a Streams Capture configuration was imported then the Apply that processes the captured messages needs to be dropped and recreated. See My Oracle Support article number 1380295.1.
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/PROCOBJ
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/POST_SYSTEM_ACTIONS/PROCACT_SYSTEM
Processing object type DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA
Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE
Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
. . imported "SYS"."KU$_EXPORT_USER_MAP" 6.078 KB 37 rows
Processing object type DATABASE_EXPORT/EARLY_POST_INSTANCE_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
. . imported "SYSTEM"."REDO_DB_TMP" 25.59 KB 1 rows
. . imported "WMSYS"."E$WORKSPACES_TABLE$" 12.10 KB 1 rows
. . imported "WMSYS"."E$HINT_TABLE$" 9.984 KB 97 rows
. . imported "WMSYS"."E$WORKSPACE_PRIV_TABLE$" 7.078 KB 11 rows
. . imported "SYS"."AMGT$DP$DAM_CONFIG_PARAM$" 6.531 KB 14 rows
. . imported "SYS"."DP$TSDP_SUBPOL$" 6.328 KB 1 rows
. . imported "WMSYS"."E$NEXTVER_TABLE$" 6.375 KB 1 rows
. . imported "WMSYS"."E$ENV_VARS$" 6.015 KB 3 rows
. . imported "SYS"."DP$TSDP_PARAMETER$" 5.953 KB 1 rows
. . imported "SYS"."DP$TSDP_POLICY$" 5.921 KB 1 rows
. . imported "WMSYS"."E$VERSION_HIERARCHY_TABLE$" 5.984 KB 1 rows
. . imported "WMSYS"."E$EVENTS_INFO$" 5.812 KB 12 rows
. . imported "AUDSYS"."AMGT$DP$AUD$UNIFIED":"AUD_UNIFIED_P0" 50.95 KB 0 rows
. . imported "AUDSYS"."AMGT$DP$AUD$UNIFIED":"SYS_P221" 100.1 KB 96 rows
. . imported "AUDSYS"."AMGT$DP$AUD$UNIFIED":"SYS_P248" 52.35 KB 3 rows
. . imported "LBACSYS"."OLS_DP$OLS$AUDIT" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$COMPARTMENTS" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$GROUPS" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$LAB" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$LEVELS" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$POL" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$POLS" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$POLT" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$PROFILE" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$PROG" 0 KB 0 rows
. . imported "LBACSYS"."OLS_DP$OLS$USER" 0 KB 0 rows
. . imported "SYS"."AMGT$DP$AUD$" 23.47 KB 0 rows
. . imported "SYS"."AMGT$DP$DAM_CLEANUP_EVENTS$" 7.187 KB 0 rows
. . imported "SYS"."AMGT$DP$DAM_CLEANUP_JOBS$" 7.171 KB 0 rows
. . imported "SYS"."DP$TSDP_ASSOCIATION$" 0 KB 0 rows
. . imported "SYS"."DP$TSDP_CONDITION$" 0 KB 0 rows
. . imported "SYS"."DP$TSDP_FEATURE_POLICY$" 0 KB 0 rows
. . imported "SYS"."DP$TSDP_PROTECTION$" 0 KB 0 rows
. . imported "SYS"."DP$TSDP_SENSITIVE_DATA$" 0 KB 0 rows
. . imported "SYS"."DP$TSDP_SENSITIVE_TYPE$" 0 KB 0 rows
. . imported "SYS"."DP$TSDP_SOURCE$" 0 KB 0 rows
. . imported "SYSTEM"."REDO_LOG_TMP" 0 KB 0 rows
. . imported "WMSYS"."E$BATCH_COMPRESSIBLE_TABLES$" 0 KB 0 rows
. . imported "WMSYS"."E$CONSTRAINTS_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$CONS_COLUMNS$" 0 KB 0 rows
. . imported "WMSYS"."E$LOCKROWS_INFO$" 0 KB 0 rows
. . imported "WMSYS"."E$MODIFIED_TABLES$" 0 KB 0 rows
. . imported "WMSYS"."E$MP_GRAPH_WORKSPACES_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$MP_PARENT_WORKSPACES_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$NESTED_COLUMNS_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$RESOLVE_WORKSPACES_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$RIC_LOCKING_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$RIC_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$RIC_TRIGGERS_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$UDTRIG_DISPATCH_PROCS$" 0 KB 0 rows
. . imported "WMSYS"."E$UDTRIG_INFO$" 0 KB 0 rows
. . imported "WMSYS"."E$VERSION_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$VT_ERRORS_TABLE$" 0 KB 0 rows
. . imported "WMSYS"."E$WORKSPACE_SAVEPOINTS_TABLE$" 0 KB 0 rows
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE
Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
. . imported "MDSYS"."RDF_PARAM$TBL" 6.515 KB 3 rows
. . imported "SYS"."AMGT$DP$AUDTAB$TBS$FOR_EXPORT" 5.953 KB 2 rows
. . imported "SYS"."DP$DBA_SENSITIVE_DATA" 0 KB 0 rows
. . imported "SYS"."DP$DBA_TSDP_POLICY_PROTECTION" 0 KB 0 rows
. . imported "SYS"."AMGT$DP$FGA_LOG$FOR_EXPORT" 0 KB 0 rows
. . imported "SYS"."NACL$_ACE_IMP" 0 KB 0 rows
. . imported "SYS"."NACL$_HOST_IMP" 6.914 KB 1 rows
. . imported "SYS"."NACL$_WALLET_IMP" 0 KB 0 rows
. . imported "SYS"."DATAPUMP$SQL$TEXT" 0 KB 0 rows
. . imported "SYS"."DATAPUMP$SQL$" 0 KB 0 rows
. . imported "SYS"."DATAPUMP$SQLOBJ$AUXDATA" 0 KB 0 rows
. . imported "SYS"."DATAPUMP$SQLOBJ$DATA" 0 KB 0 rows
. . imported "SYS"."DATAPUMP$SQLOBJ$PLAN" 0 KB 0 rows
. . imported "SYS"."DATAPUMP$SQLOBJ$" 0 KB 0 rows
. . imported "SYSTEM"."SCHEDULER_JOB_ARGS_TMP" 0 KB 0 rows
. . imported "SYSTEM"."SCHEDULER_PROGRAM_ARGS_TMP" 0 KB 0 rows
. . imported "WMSYS"."E$EXP_MAP" 7.718 KB 3 rows
. . imported "WMSYS"."E$METADATA_MAP" 0 KB 0 rows
Processing object type DATABASE_EXPORT/NORMAL_POST_INSTANCE_IMPCALLOUT/MARKER
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
. . imported "APP_USER"."DATA_PUMP_PDB_TESTINFO" 5.593 KB 3 rows
. . imported "APP_USER"."EMPLOYEES" 63.66 KB 1200 rows
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/CONSTRAINT
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type DATABASE_EXPORT/STATISTICS/MARKER
UDI-04031: operation generated ORACLE error 4031
ORA-04031: unable to allocate 40 bytes of shared memory ("shared pool","SELECT job_id FROM sys.v_$da...","SQLA","tmp")
ORA-06512: at "SYS.DBMS_DATAPUMP", line 4747
ORA-06512: at "SYS.DBMS_DATAPUMP", line 4571
ORA-06512: at "SYS.KUPC$QUE_INT", line 1810
ORA-06512: at "SYS.KUPV$FT_INT", line 3417
ORA-06512: at "SYS.KUPV$FT_INT", line 3372
ORA-06512: at "SYS.KUPC$QUE_INT", line 617
ORA-25254: time-out in LISTEN while waiting for a message
ORA-06512: at "SYS.DBMS_AQ", line 1163
ORA-06512: at "SYS.KUPC$QUE_INT"
[oracle@single_oracle backup]$
五、验证测试
5.1.测试数据完整性
bash
[oracle@single_oracle data_pump_pdb]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jun 15 16:08:19 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB MOUNTED
4 DATA_PUMP_PDB READ WRITE NO
SQL>
SQL> alter session set container=DATA_PUMP_PDB;
Session altered.
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('APP_USER', 'EMPLOYEES');
PL/SQL procedure successfully completed.
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('APP_USER', 'DATA_PUMP_PDB_TESTINFO');
PL/SQL procedure successfully completed.
SQL>
SQL> set linesize 200;
SQL> column name format a50;
SQL> select * from DATA_PUMP_PDB_TESTINFO;
ID NAME
---------- --------------------------------------------------
1 张三
2 李四
3 测试将集群中特定的pdb通过数据泵方式恢复至单机环境
SQL> select count(*) from EMPLOYEES;
COUNT(*)
----------
1200
SQL>

