經常報錯:
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
解決方法:
1、
CREATE OR REPLACE DIRECTORY?
DMPDIR AS ?'/data3/hz_daily_bak';?
/data3/hz_daily_bak:存放dmp文件的目錄
2、
修改/data3/hz_daily_bak文件的擁有者為 oracle
chown?oracle:dba?hz_daily_bak/
或?chmod?777?*
-------------------下面轉的----------------
使用EXPDP和IMPDP時應該注意的事項:
EXP和IMP是客戶端工具程序,它們既可以在客戶端使用,也可以在服務端使用。
EXPDP和IMPDP是服務端的工具程序,他們只能在ORACLE服務端使用,不能在客戶端使用。
IMP只適用于EXP導出的文件,不適用于EXPDP導出文件;IMPDP只適用于EXPDP導出的文件,而不適用于EXP導出文件。
expdp或impdp命令時,可暫不指出用戶名/密碼@實例名 as 身份,然后根據提示再輸入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
一、創建邏輯目錄,該命令不會在操作系統創建真正的目錄,最好以system等管理員創建。
create directory dpdata1 as 'd:\test\dump';
二、查看管理理員目錄(同時查看操作系統是否存在,因為Oracle并不關心該目錄是否存在,如果不存在,則出錯)
select * from dba_directories;
三、給scott用戶賦予在指定目錄的操作權限,最好以system等管理員賦予。
grant read,write on directory dpdata1 to scott;
四、導出數據
1)按用戶導
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行進程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名導
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查詢條件導
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空間導
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)導整個數據庫
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
五、還原數據
1)導到指定用戶下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改變表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)導入表空間
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)導入數據庫
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加數據
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACT
1 table_exists_action參數說明
使用imp進行數據導入時,若表已經存在,要先drop掉表,再進行導入。
而使用impdp完成數據庫導入時,若表已經存在,有四種的處理方式:
1) ?skip:默認操作
2) ?replace:先drop表,然后創建表,最后插入數據
3) ?append:在原來數據的基礎上增加數據
4)? truncate:先truncate,然后再插入數據