oracle Export and Import 簡介

來源:互聯網
上載者:User

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說不支援這樣做的。

下面列出的是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,comments, indexes, constraints,                        auditing)
6. Role Grants
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 Auditing
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有影響。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.