oracle import/export 命令

exp/imp 實例
    exp help=y 查看幫助
exp
1、exp
usr/pwd@sid  file=c:\tb.dump  tables=tb1
   如果是導出多個表,tables=(tb1、tb2)
2、exp
usr/pwd@sid  file=c:\tb.dump  --全部導出
3、exp
usr/pwd@sid  file=c:\tb.dump  owner=(system,sys) 
   將用戶system和sys用戶下的表都導出
4、exp
usr/pwd@sid  file=c:\tb.dump  tables=tb1 query=\"where name='ha'\"
   注意分號的位置
 
 
通過以下命令可以查看說明。
c:\>imp help=y
c:\>exp help=y
 
oracle Export and Import 簡介
 
1、Export/Import的用處
Oracle Export/Import工具用於在數據庫之間傳遞數據。 
Export從數據庫中導出數據到dump文件中 
Import從dump文件中到入數據導數據庫中 
下面是一般使用他們的情況 
(1)、兩個數據庫之間傳送數據 
       同一個版本的oracle Server之間 
       不同版本的oracle Server之間 
       同種OS之間 
       不同種OS之間 
(2)、用於數據庫的備份和恢復 
(3)、從一個SCHEMA傳送到另一個SCHEMA 
(4)、從一個TABLESPACE傳送到另一個TABLESPACE 

2、DUMP文件 
EXPORT到出的是二進制格式的文件,不可以手工編輯,否則會損壞數據。 
該文件在ORACLE支持的任何平臺上都是一樣的格式,可以在各平臺上通用。 

DUMP文件在IMPORT時採用向上兼容方式,就是說ORALCE7的DUMP文件可以導入 
到ORACLE8中,但是版本相差很大的版本之間可能有問題。 

3、EXPORT/IMPORT過程 
EXPORT導出的DUMP文件包含兩種基本類型的數據 
    - DDL 
    - Data 
DUMP文件包含所有重新創建Data Dictionary的DDL語句,基本上是可以讀的格式。
但是應該注意的是,千萬不要用文本編輯器編輯之,oracle說不支持這樣做的。 


4、IMPORT時的對象倒入順序 
在倒入數據時,ORACLE有一個特定的順序,可能隨數據庫版本不同而有所變化。            
                           
按這個順序主要是解決對象之間依賴關係可能產生的問題。TRIGGER最後導入,所以在INSERT 
數據到數據庫時不會激發TRIGGER。在導入後可能會有一些狀態是INVALID的PROCEDURE,主要 
是IMPORT時會影響一些數據庫對象,而IMPORT並不重新編譯PROCEDURE,從而造成這種情況, 
可以重新編譯之,就能解決這個問題。 

5、兼容性問題 
IMPORT工具可以處理EXPORT 5.1.22之後的版本導出的DUMP文件,所以你用ORACL E7的IMPORT 
處理ORACLE6的DUMP文件,依次類推,但是ORACLE如果版本相差很大有可能不能處理。具體的 
問題可以參照相應的文檔,比如有關參數設置等(COMPATIBLE參數) 

6、EXPORT需要的VIEW 
EXPORT需要的VIEW是由CATEXP.SQL創建,這些內部VIEW用於EXPORT組織DUMP文件中數據格式。 
大部分VIEW用於收集創建DDL語句的,其他的主要供ORACLE開發人員用。 

這些VIEW在不同ORACLE版本之間有可能不同,每個版本可能都有新的特性加入。
所以在新的版本里面執行舊的dump文件會有錯誤,一般可以執行CATEXP.SQL解決這些問題,
解決向後兼容問題的一般步驟如下: 
   
  導出數據庫的版本比目標數據庫老的情況: 
  - 在需要導入的目標數據庫中執行舊的CATEXP.SQL 
  - 使用舊的EXPORT導出DUMP文件  
  - 使用舊的IMPORT導入到數據庫中 
  - 在數據庫中執行新的CATEXP.SQL,以恢復該版本的EXPORT VIEW 

  導出數據庫的版本比目標數據庫新的情況: 
  - 在需要導入的目標數據庫中執行新的CATEXP.SQL 
  - 使用新的EXPORT導出DUMP文件  
  - 使用新的IMPORT導入到數據庫中 
  - 在數據庫中執行舊的CATEXP.SQL,以恢復該版本的EXPORT VIEW 

7、碎片整理 
EXPORT/IMPORT一個很重要的應用方面就是整理碎片。因爲如果時初次IMPPORT,就會重新CREATE TABLE 再導入數據,所以整張表都是連續存放的。另外缺省情況下下EXPORT會在生成DUMP文件是“壓縮(COMPRESS)”TABLE,但是這種壓縮在很多情況下被誤解。事實上,COMPRESS是改變STORAGE參數INITIAL的值。比如:  
  CREATE TABLE .... STORAGE( INITIAL 10K NEXT 10K..) 
  現在數據已經擴展到100個EXTENT,如果採用COMPRESS=Y來EXPORT數據, 
  則產生的語句時 STORAGE( INITIAL 1000K NEXT 10K) 

  我們可以看到NEXT值並沒有改變,而INITIAL是所有EXTENT的總和。所以會出現
如下情況,表A有4個100M的EXTENT,執行DELETE FROM A,然後再用COMPRESS=Y 導
出數據,產生的CREATE TABLE語句將有400M的INITIAL EXTENT。即使這是TABLE中
已經沒有數據!!這是的DUMP文件即使很小,但是在IMPORT時就會產生一個巨大的TABLE. 

  另外,也可能會超過DATAFILE的大小。比如,有4個50M的數據文件,其中表A有
15個10M的EXTENT,如果採用COMPRESS=Y的方式導出數據,將會有INITIAL=150M,
那麼在重新導入時,不能分配一個150M的EXTENT,因爲單個EXTENT不能跨多個文件。 


8、在USER和TABLESPACE之間傳送數據 
一般情況下EXPORT的數據要恢復到它原來的地方去。如果SCOTT用戶的表以TABLE 或USER方式EXPORT數據,在IMPORT時,如果SCOTT用戶不存在,則會報錯! 以FULL方式導出的數據帶有CREATE USER的信息,所以會自己創建USER來存放數據。 

當然可以在IMPORT時使用FROMUSER和TOUSER參數來確定要導入的USER,但是要保證 
TOUSER一定已經存在啦。 

9、EXPORT/IMPORT對SQUENCE的影響 
在兩種情況下,EXPORT/IMPORT會對SEQUENCE。 
(1)如果在EXPORT時,用戶正在取SEQUENCE的值,可能造成SEQUENCE的不一致。
(2)另外如果SEQUENCE使用CACHE,在EXPORT時,那些在CACHE中的值就會被忽略的, 
     只是從數據字典裏面取當前值EXPORT。 

如果在進行FULL方式的EXPORT/IMPORT時,恰好在用sequence更新表中某列數據,而且不是上面兩種情況,則導出的是更新前的數據。 

如果採用常規路徑方式,每一行數據都是用INSERT語句,一致性檢查和INSERT T  RIGGER 
如果採用DIRECT方式,某些約束和trigger可能不觸發,如果在trigger中使用sequence.nextval,將會對sequence有影響。
 
再保存個東西:
查看當前用戶每個表佔用空間的大小:
    Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

查看每個表空間佔用空間的大小:
    Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章