程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle Export and Import 簡介

oracle Export and Import 簡介

編輯:Oracle數據庫基礎
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說不支持這樣做的。

下面列出的是DUMP文件中包括的Oracle對象,分為TABLE/USER/FULL方式,有些對
象 
只是在FULL方式下才有(比如public synonyms, users, roles, rollback segm
ents等) 

Table mode              User Mode               Full Database Mode 
----------------------  ----------------------  ----------------------
--- 
Table definitions       Table definitions       Table definitions 
Table data              Table data              Table data 
Owner's table grants    Owner's grants          Grants 
Owner's table indexes   Owner's indexes         Indexes 
Table constraints       Table constraints       Table constraints 
Table triggers          Table triggers          All triggers 
                        Clusters                Clusters 
                        Database links          Database links 
                        Job queues              Job queues 
                        Refresh groups          Refresh groups 
                        Sequences               Sequences 
                        Snapshots               Snapshots 
                        Snapshot logs           Snapshot logs 
                        Stored procedures       Stored procedures 
                        Private synonyms        All synonyms 
                        Views                   VIEws 
                                                Profiles 
                                                Replication catalog 
                                                Resource cost 
                                                Roles 
                                                Rollback segments 
                                                System audit options 
                                                System privileges 
                                                Tablespace definitions

                                                Tablespace quotas 
                                                User definitions 


4、IMPORT時的對象倒入順序 
在倒入數據時,Oracle有一個特定的順序,可能隨數據庫版本不同而有所變化,
但是 
現在是這樣的。 

 1. Tablespaces                         14. Snapshot Logs 
 2. Profiles                            15. Job Queues 
 3. Users                               16. Refresh Groups 
 4. Roles                               17. Cluster Definitions 
 5. System Privilege Grants             18. Tables (also grants,commen
ts,  
 6. Role Grants                             indexes, constraints, audi
ting) 
 7. Default Roles                       19. Referential Integrity     
              
 8. Tablespace Quotas                   20.  POSTTABLES actions       
                   
 9. Resource Costs                      21. Synonyms 
10. Rollback Segments         22. VIEws           
11. Database Links                      23. Stored Procedures 
12. Sequences                           24. Triggers, Defaults and Aud
iting 
13. Snapshots                      
                           
按這個順序主要是解決對象之間依賴關系可能產生的問題。TRIGGER最後導入,所
以在INSERT 
數據到數據庫時不會激發TRIGGER。在導入後可能會有一些狀態是INVALID的PROC
EDURE,主要 
是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有影響。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved