oracle下邏輯的匯入匯出工具exp/imp

來源:互聯網
上載者:User

oracle下邏輯的匯入匯出工具exp/imp

exp/imp簡介:

        exp/imp是oracle倖存的最古老的兩個命令列備份工具 ,在小型資料庫的轉儲、資料表空間的遷移、表的抽取、檢測邏輯和物理衝突中使用非常廣泛,我們可以把它作為小型資料庫的物理備份後的一個邏輯備份。它可以跨平台、跨版本。

exp/imp的工作原理:

        exp使用者進程通過伺服器處理序串連到資料庫,開啟shadow進程,同時執行select語句查詢資料庫中的資料,通過buffer cache並通過SQL語句處理層再轉移出exp匯出檔案,即exp進程需要佔用伺服器上的SGA和PGA資源。

        imp讀取exp匯出的.dmp檔案,構造DDL語句,插入建立表與其他對象以及添加資料的語句

exp的匯出資料的方式:

        1、全庫匯出這種方式一般不用)

        2、按使用者匯出

        3、按表匯出

exp常用參數簡介:exp help=y

650) this.width=650;" title="exp協助.png" src="http://www.bkjia.com/uploads/allimg/131228/2235421939-0.png" />

使用exp/imp工具是,在服務端需開啟監聽,用戶端最好配置連接字串

用戶端的字元集必須與服務端的字元集相同,避免因不同字元集的轉換,導致匯出的資料不可用

用戶端版本必須與服務端版本一致,比如服務端是10g,用戶端是11g,則會報以下錯誤: 650) this.width=650;" title="11g用戶端匯出10g資料庫中的對象報錯.jpg" src="http://www.bkjia.com/uploads/allimg/131228/2235422141-1.jpg" />

 

ok,開始匯出資料吧

        環境:linux redhat 5.4  oracle 10g 32位

1、全庫匯出

        exp system/oracle@lck     full=y file=d:\full_database.dmp        

650) this.width=650;" style="float:none" title="全庫匯出1.jpg" src="http://www.bkjia.com/uploads/allimg/131228/2235423P2-2.jpg" />

650) this.width=650;" style="float:none" title="全庫匯出2.jpg" src="http://www.bkjia.com/uploads/allimg/131228/2235422441-3.jpg" />

 2、按使用者匯出

    exp  system/oracle  owner=lck  file=d:\lck_tables.dmp

      650) this.width=650;" title="按使用者匯出表.jpg" src="http://www.bkjia.com/uploads/allimg/131228/2235423Z9-4.jpg" />

3、按表匯出

    650) this.width=650;" title="按表匯出使用者的表.jpg" src="http://www.bkjia.com/uploads/allimg/131228/223542M31-5.jpg" />

4、在匯出是,只匯出表結構不匯出資料

    650) this.width=650;" title="只匯出表的結構.jpg" src="http://www.bkjia.com/uploads/allimg/131228/2235425431-6.jpg" />

exp工具的缺點:

        速度慢,由於exp串連到資料庫需要先select要匯出的資料,再通過SGA、PGA傳輸給exp。

        如果此串連斷開,則exp需從頭開始匯出,沒有斷點續傳的功能

        消耗服務端資源,只能服務端業務的前提下使用

imp 常用參數:imp help=y

650) this.width=650;" title="imp協助.png" src="http://www.bkjia.com/uploads/allimg/131228/22354245O-7.png" />

    

匯入資料,將匯出的資料匯入到windows平台的oracle 11g 64位中

        使用11g客戶段匯入資料

1、按使用者匯入

      imp   system/oracle@orcl     fromuser=lck     touser=lck    file=d:\lck_tables.dmp;      650) this.width=650;" title="沒建立使用者的匯入.jpg" src="http://www.bkjia.com/uploads/allimg/131228/2235424193-8.jpg" />

   報錯了,使用者不存在,好吧,在目標資料庫上建立lck使用者

    650) this.width=650;" title="建立lck使用者.jpg" src="http://www.bkjia.com/uploads/allimg/131228/223542F56-9.jpg" />

    再匯入650) this.width=650;" title="無標題.png" src="http://www.bkjia.com/uploads/allimg/131228/223542FQ-10.png" />

  又報錯了,對data資料表空間沒許可權,因為沒有給lck使用者指派在data資料表空間上的配額,其實現在表結構已經導進來了,看一下

    650) this.width=650;" title="表結構匯入了.jpg" src="http://www.bkjia.com/uploads/allimg/131228/2235423260-11.jpg" />

      好吧,那就再給lck的配額,再匯入      650) this.width=650;" title="因為之前的匯入已經建立了表,所以報對象已存在的錯誤.jpg" src="http://www.bkjia.com/uploads/allimg/131228/223542A62-12.jpg" />

 啊,還是報錯,對象已存在,加參數ignore=y 忽略建立錯誤),再匯入

650) this.width=650;" title="匯入成功.jpg" src="http://www.bkjia.com/uploads/allimg/131228/223542K41-13.jpg" />

  ok,匯入成功,  原來匯入資料不是一帆風順的啊。

    總結:匯入資料前需要在目標資料庫中建立對應的使用者,並給使用者相應的許可權和該使用者在自己預設資料表空間上的配額

2、按表匯入

    exp system/oracle@orcl  talbes=tab1  fromuser=lck,test  touser=lck,test file=d:\lck_test_tables.dmp  650) this.width=650;" title="按表匯入.jpg" src="http://www.bkjia.com/uploads/allimg/131228/2235426494-14.jpg" />

ok,匯入成功!!

本文出自 “挨踢小蝌蚪” 部落格,請務必保留此出處http://chunke.blog.51cto.com/2753715/1219686

相關文章

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.