Technique

แก้ปัญหา impdp ของ oracle ใน Ubuntu

posted on 19 Aug 2008 11:17 by mzkapoo  in Technique

Question

ผมใช้ 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

  1. $ sqlplus system/password
  2. ไม่ต้องพยายามสร้าง 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/
  3. $ sudo nautilus
    จากนั้น ให้ copy file .dmp ของเราไปไว้ที่ /usr/lib/oracle/xe/app/oracle/admin/XE/dpdump
  4. $ sudo -s
    # impdp SYSTEM/PASSWORD SCHEMAS=HR DIRECTORY=DATA_PUMP_DIR DUMPFILE=FILEDUMP.DMP REMAP_SCHEMA=HR:NEWUSER
  5. # exit

 Related link: http://www.orafaq.com/wiki/Oracle_Datapump