Oracle資料庫匯入匯出命令總結

來源:互聯網
上載者:User

標籤:

分類: Linux

Oracle資料匯入匯出imp/exp就相當於oracle資料還原與備份。exp命令可以把資料從遠端資料庫伺服器匯出到本地的dmp檔案,imp命令可以把dmp檔案從本地匯入到遠處的資料庫伺服器中。利用這個功能我們可以從生產庫中匯出資料庫,再匯入資料庫到測試庫中。

執行環境:可以在SQLPLUS.EXE或者DOS(命令列)中執行,DOS中可以執行是由於在oracle中,安裝目錄\ora9i\bin被設定為全域路徑(也可直接在系統內容變數中設定),該目錄下有EXP.EXE與IMP.EXE檔案被用來執行匯入匯出。

下面是匯入匯出的執行個體。

資料匯出:

1 將資料庫zxcc完全匯出,使用者名稱kf 密碼zx 匯出到D:\zxcc.dmp中

exp kf/[email protected] file=d:\zxcc.dmp full=y

full=y 表示全庫匯出。full總共有2個可選項yes(y)/no(n),預設情況下full=no,這時只會將該使用者下的對象匯出。

2 將資料庫zxcc中kf使用者與cc使用者的表匯出

exp kf/[email protected] file=d:\zxcc_ur.dmp owner=(kf,cc)

full方式可以備份所有使用者的資料庫物件,包括資料表空間、使用者資訊等,owner=XX只能備份指定使用者的對象,其他使用者下的就不備份了,EXP中full=y和owner=XX是不能同時使用的。

3 將資料庫zxcc中的表kf_operator、kf_role匯出

exp kf/[email protected] file= d:\zxcc_tb.dmp tables=(kf_operator,kf_role)

tables=xx 表示備份相關表,不能同時和owner、full使用。

4 將資料庫中的表kf_operator中的欄位oper_id以"00"打頭的資料匯出

exp kf/[email protected] file=d:\zxcc_t.dmp tables=(kf_operator) query=\" where oper_id like ‘00%‘\"

query主要是匯出合適條件的資料。使用該參數時,需要注意對所有作業系統保留字元都要使用轉義符號。若有括弧()也需要轉義:

query=\"where dt=to_date\(\‘2007-09-22\‘,\‘yyyy-mm-dd\‘\)\" 。

如果遇到條件比較繁瑣的語句,頻繁的轉義操作不僅費時,還很容易出錯。我們可以使用exp或expdp的PARFILE參數避免query內容的繁瑣轉義問題。

例:

oracle DBALNP01 > cat > zxcc.par

tables=kf_operator

file=zxcc.dmp

query="where dt_time=to_date(‘2010-06-25‘,‘yyyy-mm-dd‘)"

這時就可以盡情的再雙引號中寫條件陳述式了。

上面是常用的匯出,對於比較大的資料庫,我們可以對匯出檔案進行壓縮處理,可用winzip把dmp檔案進行壓縮。

也可以在上面命令後面加上 compress=y 來實現。

資料的匯入:

1、將D:\zxcc.dmp 中的資料匯入 zxcc資料庫中。

imp kf/[email protected] file=D:\zxcc.dmp

導資料得時候,有可能報錯。為什嗎?有以下主要的原因:

  A. 匯入的對象(表,視圖,方法等)原本不屬於當前串連的使用者的

  B. 匯入的對象在該資料庫的指定使用者下已經存在

  C. 匯入的對象的原本使用者不在這個資料庫裡

對於這三個問題的處理方法如下:

a/c、所有對象全部匯入到指定的賬戶下:

imp kf_new/[email protected]_new file=d:\zxcc.dmp fromuser=kf touser=kf_new

其中fromuser=kf為.dmp檔案裡的對象的原先的owner, touser=kf_new 為作為匯入的對象的新的Owner.

b、忽略/插入資料:

  imp kf_new/[email protected]_new file= d:\zxcc.dmp ignore=y

其中ignore=y告訴imp.exe把資料直接插入到相應對象(並且如果匯入的對象裡面有其他的對象,如約束,索引等,會在資料插入後被建立)。

2、將d:\zxcc_tb.dmp中的表tb_operator 匯入

imp kf/[email protected] file=d:\zxcc_tb.dmp tables=(tb_operator)

忽略載入約束

  有時候導資料進來的時候,我們不需要把它的約束,比如一些外鍵約束等都導進來,可以加上參數constraints=N

  不載入索引(比如唯一性的索引),可以加上參數indexs=N

只載入結構,不載入資料,如果只要表的結構等定義(約束,觸發器),而不要裡面的資料,可以加上參數rows=N

  對於上述操作登陸操作的使用者需是管理員,如果不是管理員,而是普通使用者,那麼這個使用者必須有建立刪除對象的權利,對象可能包括表,視圖,方法,預存程序等等常見的對象。為什麼“可能”包括?因為這個視匯入匯出的時候是否涉及相互關聯類型的對象而定。

Imp kf/[email protected]_new file=d:\zxcc.dmp fromuser=kf touser=kf_new ignore=y

基本上面的匯入匯出夠用了。不少情況要先是將表徹底刪除,然後匯入。

注意:

(1)、操作者要有足夠的許可權,許可權不夠會有提示。

(2)、資料庫連結正常,可以用tnsping zxcc 來檢測資料庫zxcc能否連上。

(3)、匯入/匯出資料庫時注意字元集。可能會出現匯出/匯入時資料庫字元集不一致而報錯。

oracle資料庫其他常用命令:

1、給使用者增加匯入資料許可權的操作

第一,啟動sql*puls

第二,以管理員(DBA)使用者登陸

第三,create user 使用者名稱 IDENTIFIED BY 密碼 (如果已經建立過使用者,這步可以省略)

第四,>grant create user , drop user , alter user , create any view , drop any view , exp_full_database , imp_full_database , dba , resource , create session to 使用者名稱字;

第五, 運行cmd進入dmp檔案所在的目錄,

imp userid=管理使用者名/密碼 full=y file= filename.dmp

或者 imp userid=管理使用者名/密碼 full=y file=filename.dmp

2、Oracle 不允許直接改變表的擁有者, 利用Export/Import可以達到這一目的.

先建立.par檔案()

然後,使用時命令如下:imp parfile=/filepath/import9.par

例 import9.par 內容如下:

FROMUSER=user

TOUSER=user_new (註:把表的擁有者由FROMUSER改為TOUSER,FROMUSER和TOUSER的使用者可以不同)

ROWS=Y

INDEXES=Y

GRANTS=Y

CONSTRAINTS=Y

BUFFER=409600

file==/filepath/xxxx.dmp

log==/filepath/import_log.log

Oracle資料庫匯入匯出命令總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.