Jan 27, 2016

ORA-39087: directory name DATA_DUMP_DIR is invalid [Oracle Database 12c]

เจอ Error ORA-39087: directory name DATA_DUMP_DIR is invalid บน Oracle Database 12c ระหว่างที่ import datapump เข้า pdb ครับ

ใช้คำสั่ง import data pump แบบปกติ
impdp \"sys@pdb as sysdba\" dumpfile=DATA_DUMP_DIR:<dumpfile> logfile=DATA_DUMP_DIR:<logfile> schemas=<schema_name>

ปรากฎว่าเจอ error ORA-39087: directory name DATA_DUMP_DIR is invalid



Import: Release 12.1.0.2.0 - Production on Fri Jan 29 16:58:09 2016

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing opt
ions
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39087: directory name DATA_DUMP_DIR is invalid



เราก็ลองเข้า sqlplus และ select * from dba_directories; ดู

SQL> select * from dba_directories where DIRECTORY_NAME='DATA_PUMP_DIR';

OWNER                                                                        
--------------------------------------------------------------------------------
DIRECTORY_NAME                                                                
--------------------------------------------------------------------------------
DIRECTORY_PATH                                                                
--------------------------------------------------------------------------------
ORIGIN_CON_ID                                                                
-------------                                                                
SYS                                                                          
DATA_PUMP_DIR                                                                
E:\oracle\data_pump_file                                                      
            1                                                                

กำละ (= ="

วิธีแก้ไขปัญหา
Command> sqlplus / as sysdba
SQL> alter session set container=pdb;
SQL> CREATE DIRECTORY PDB_DUMP_DIR AS 'E:\oracle\data_pump_file';

Command> impdp \"sys@pdb as sysdba\" dumpfile=DATA_DUMP_DIR:<dumpfile> logfile=DATA_DUMP_DIR:<logfile> schemas=<schema_name>

เนื่องจาก 12c แบ่ง directory โดยแยก directory ของ container และ pluggable จากการ select * from dba_directories ภายใน pdb ได้ข้อมูลตามภาพด้านล่าง



มีอะไรที่ผมเข้าใจผิดแจ้งด้วยนะครับ
Young Oracle DBA Thailand ..

No comments:

Post a Comment