重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 79|回复: 0
打印 上一主题 下一主题

[Oracle] 采用 DATA_PUMP_DIR 来 export/import 一个 PDB 时,12.2 DataPump 可能会因 ORA-1...

[复制链接]
跳转到指定楼层
楼主
发表于 5 天前 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
现象:
- 创建并且打开一个新 PDB
conn sys/<PASSWORD>@<SERVICE_NAME> as sysdba

SQL> create pluggable database cdb1_pdb4 admin user admin identified by pass
     file_name_convert=('cdb1_pdb0','cdb1_pdb4')
     path_prefix='<FILESYSTEM_PATH>';

SQL> alter session set container=cdb1_pdb4;
SQL> alter pluggable database cdb1_pdb4 open;
- 通过一个具有权限的用户,获得 PDB 的 DATA_PUMP_DIR 目录路径
conn u1/<PASSWORD>@<SERVICE_NAME> as sysdba

SQL> select directory_path from dba_directories where directory_name='DATA_PUMP_DIR';

DIRECTORY_PATH
------------------------------------------------------------
<FILESYSTEM_PATH>

SQL> select oracle_maintained from dba_objects where object_type = 'DIRECTORY' and object_name = 'DATA_PUMP_DIR';

ORACLE_MAINTAINED
-----------------
Y
- 然后在 PDB 里面执行 "dbms_datapump_utl.create_default_dir":
SQL> create or replace directory DATA_PUMP_DIR as 'dpdump';
SQL> exec dbms_datapump_utl.CREATE_DEFAULT_DIR;

SQL> select DIRECTORY_PATH,ORIGIN_CON_ID from dba_directories where directory_name='DATA_PUMP_DIR' order by 2, 1;

DIRECTORY_PATH     ORIGIN_CON_ID
------------------ ----------------------------
<FILESYSTEM_PATH>  1
<FILESYSTEM_PATH>  4
==> 这样我们在 PDB 里面得到了两个 DATA_PUMP_DIR 条目,一个是PDB创建的时候的 common 对象,另外一个是指向 PATH_PREFIX/dpdump 的本地对象,此时如果在这个 PDB 环境开启一个新的 DataPump 任务并且不指定 DIRECTORY 参数,那么它会以 ORA-1422 错误而失败。

> expdp system/<PASSWORD>@<TNS_NAME>Export: Release 12.2.0.1.0 - Development on Tue Nov 28 23:40:00 2017 Version 12.2.0.1.0
ORA-39006: internal errorORA-39065: unexpected master process exception in DISPATCHORA-1422: exact fetch returns more than requested number of rowsORA-6512: at "SYS.KUPF$FILE", line 4645ORA-6512: at "SYS.KUPF$FILE", line 4619ORA-6512: at "SYS.KUPF$FILE", line 4607ORA-6512: at "SYS.KUPM$MCP", line 4329ORA-39097: Data Pump job encountered unexpected error -1422



Attachments :
原因:
升级到了 12.2.

该问题已经在 12.2 上的如下未公开bug中定位:

Unpublished Bug 27194511 : SV12.2DBSA: DATAPUMP_UTL.CREATE_DEFAULT_DIR POPULATES DATA_PUMP_DIR INCORRECTLY

不过以上bug的修复有问题,它在19.1上的如下的未公开bug中得以修正

Unpublished Bug 28360226 - ERROR CREATING DATA_PUMP_DIR DIRECTORY OBJECT IN PDB DURING AN UPGRADE


解决方案:
除非可以升级到19.1,在 PDB 环境中采用 non-default 的 Datapump 目录来执行导出导入操作以绕开此问题。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-8-21 07:54 , Processed in 0.254719 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表