1. 程式人生 > >Oracle資料庫:impdp匯入資料庫及expdp匯出資料過程詳解

Oracle資料庫:impdp匯入資料庫及expdp匯出資料過程詳解

1.建立資料庫(可使用預設的資料庫,此步驟可省略)
2.在資料庫中建立表空間,最好與匯出的資料庫的表空間相同名稱,參考http://jingyan.baidu.com/article/5225f26b036c47e6fa0908e4.html
建立表空間的SQL命令(PLSQL下操作):create tablespace TJFRAMEWORK datafile 'E:\zlProFiles\myOracle\oracle\a.dbf' size 100m autoextend on next 100m
maxsize 20480m extent management local;(備註:TJFRAMEWORK 為表空間名稱,datafile後面跟的路徑為資料庫表空間的中轉、轉儲快取路徑,)
3.建立使用者並指定表空間SQL命令:create user JKQYJ identified by JKQYJ default tablespace TJFRAMEWORK;(備註:這裡第一個 JKQYJ為建立的使用者名稱,
第二個 JKQYJ為建立的使用者密碼, TJFRAMEWORK為表空間名)
4.給建立的使用者授權SQL命令:grant connect,resource,dba to JKQYJ;   grant create session,dba to JKQYJ;
此時使用者建立成功並完成授權,可以用此使用者登入資料庫了。(但是此時資料庫表空間還沒有資料)
5.匯入資料庫前必須要先建立資料夾,SQL命令: create or replace directory bao as 'e:\oracle\test'; (備註:bao作為路徑的重新命名,在後面還會使用到)
6.給使用的使用者(上面建立的使用者)授權(讀寫許可權)SQL命令: Grant read,write on directory bao to JKQYJ;(備註: JKQYJ是上面建立的使用者,此處授權的使用者是管理員或者擁有更高許可權的使用者給剛建立的 JKQYJ使用者授權、不能是自己給自己授權,更不能是擁有低許可權的使用者給新建的使用者授權)
7. 檢視目錄及許可權(此處只是檢視許可權,可跳過) : SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d  WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
8.手動建立資料夾路徑(備註:在上面步驟5建立完資料夾後,在win7下是沒有建立的資料夾的,需要手動建立資料夾,並且把使用expdp匯出的dmp檔案放入該資料夾下,開始自己匯入時,建立完資料夾後始終在磁碟上找不到)
9.把需要匯入資料庫的.dmp檔案複製到上面建立的資料夾路徑下,即把.dmp檔案複製到Windows系統的e:\oracle\test路徑下
10.匯入.dmp檔案,command命令:impdp 使用者名稱/密碼 schemas=要匯入的使用者(即是使用expdp匯出的使用者) directory=建立的資料夾名稱(directory_name) dumpfile=test.dmp(要放入到directory_path路徑下) logfile=imp.log(可以不寫)
eg:impdp JKQYJ/JKQYJ schemas=JKQYJ directory=bao dumpfile=JKQYJ_20161124.DMP (備註:bao是上面建立的中轉、轉儲資料夾;dumpfile 後面跟的是檔名稱,不能包含路徑資訊,此時需要匯入的資料庫檔案已經放入了上面建立的資料夾路徑下)
期間可能遇到的問題:
1):ORA-39070:無法開啟日誌檔案。 ORA-39087:目錄名e:\oracle\test無效。 導致原因:未把新建的資料夾路徑授權給新建的使用者。
2):IMP-00010: 不是有效的匯出檔案, 頭部驗證失敗 。  導致原因:匯出.dmp檔案和匯入.dmp檔案的命令不對應,使用expdb匯出的資料庫檔案就必須要impdb命令匯入資料庫。
參考http://blog.csdn.net/haiross/article/details/27580199/;  http://blog.csdn.net/bao19901210/article/details/9666901 
expdp匯出資料:參考http://blog.itpub.net/29802484/viewspace-1257986/

原文:https://blog.csdn.net/QQ578473688/article/details/54561596 

 

本人精簡步驟:

1.建立表空間(名稱:FE_APP5,50M)
create tablespace FE_APP5 datafile 'E:\NCWORK\oracle-fe\mtly-app5.dbf' size 50m autoextend on;

2.建立使用者(使用者名稱稱:FE_APP5)
CREATE USER FE_APP5 
IDENTIFIED BY 123 
DEFAULT TABLESPACE FE_APP5 
TEMPORARY TABLESPACE temp
profile DEFAULT;

3.給FE_APP5使用者授權(下面全是使用者FE_APP5)
grant connect to FE_APP5 with admin option ;

grant dba to FE_APP5 with admin option;

grant unlimited tablespace to FE_APP5 with admin option;

grant create session to FE_APP5;

4.建立目錄(目錄名:mtly)
create or replace directory mtly as 'E:\NCWORK\oracle-fe';

5.給使用的使用者(上面建立的使用者)授權(讀寫許可權)SQL命令: 
Grant read,write on directory mtly to FE_APP5;

6.把需要匯入資料庫的.dmp檔案複製到上面(第4步)建立的資料夾路徑下,即 'E:\NCWORK\oracle-fe'下面

7.匯入dmp檔案
impdp FE_APP5/123 schemas=FE_APP5 directory=mtly dumpfile=FE_APP5_20180102.DMP