แก้ปัญหา impdp ของ oracle ใน Ubuntu
posted on 19 Aug 2008 11:17 by mzkapoo in TechniqueQuestion
ผมใช้ Oracle 10g XE บน Ubuntu กำหนดทุกอย่างตามเว็บนี้ https://help.ubuntu.com/community/Oracle10g
พอใช้คำสั่ง
$
impdp SYSTEM/PASSWORD SCHEMAS=HR DIRECTORY=pumpdir
DUMPFILE=FILEDUMP.DMP REMAP_SCHEMA=HR:NEWUSER EXCLUDE=constraint,
ref_constraint, index TABLE_EXISTS_ACTION=replace LOGFILE=impschema.log
ได้ Error แบบนี้ครับ หาวิธีแก้ไขไม่ได้
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 475
ORA-29283: invalid file operation
Answer
ต้องทำความเข้าใจก่อนว่า Ubuntu เวลาใช้งานต่าง ๆ จะทำงานผ่าน sudo มีระบบป้องกัน แต่สำหรับ Oracle แล้ว บางคำสั่งต้องใช้งานโดยเราเป็น root
- $ sqlplus system/password
- ไม่ต้องพยายามสร้าง DIRECTORY pump เพราะผมลองแล้วไม่ผ่านซักที ให้มองหาค่า Default ของมันง่ายกว่า โดยใช้คำสั่งดังนี้
SQL> select directory_path FROM dba_directories WHERE directory_name = 'DATA_PUMP_DIR';
DIRECTORY_PATH
--------------------------------------------------------------------------------
/usr/lib/oracle/xe/app/oracle/admin/XE/dpdump/ - $ sudo nautilus
จากนั้น ให้ copy file .dmp ของเราไปไว้ที่ /usr/lib/oracle/xe/app/oracle/admin/XE/dpdump - $ sudo -s
# impdp SYSTEM/PASSWORD SCHEMAS=HR DIRECTORY=DATA_PUMP_DIR DUMPFILE=FILEDUMP.DMP REMAP_SCHEMA=HR:NEWUSER - # exit
Related link: http://www.orafaq.com/wiki/Oracle_Datapump