exp和imp用法和介紹
1、Export/Import的用處
Oracle Export/Import工具用于在數據庫之間傳遞數據。
Export從數據庫中導出數據到dump文件中
Import從dump文件中到入數據導數據庫中
下面是一般使用他們的情況
(1)、兩個(gè)數據庫之間傳送數據
同一個(gè)版本的oracle Server之間
不同版本的oracle Server之間
同種OS之間
不同種OS之間
(2)、用于數據庫的備份和恢復
(3)、從一個(gè)SCHEMA傳送到另一個(gè)SCHEMA
(4)、從一個(gè)TABLESPACE傳送到另一個(gè)TABLESPACE
2、DUMP文件
EXPORT到出的是二進(jìn)制格式的文件,不可以手工編輯,否則會(huì )損壞數據。
該文件在ORACLE支持的任何平臺上都是一樣的格式,可以在各平臺上通用。
DUMP文件在IMPORT時(shí)采用向上兼容方式,就是說(shuō)ORALCE7的DUMP文件可以導入
到ORACLE8中,但是版本相差很大的版本之間可能有問(wèn)題。
3、EXPORT/IMPORT過(guò)程
EXPORT導出的DUMP文件包含兩種基本類(lèi)型的數據
- DDL (Data Dictionary Language)
- Data
DUMP文件包含所有重新創(chuàng )建Data Dictionary的DDL語(yǔ)句,基本上是可以讀的格式
。
但是應該注意的是,千萬(wàn)不要用文本編輯器編輯之,oracle說(shuō)不支持這樣做的。
下面列出的是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時(shí)的對象倒入順序
在倒入數據時(shí),ORACLE有一個(gè)特定的順序,可能隨數據庫版本不同而有所變化,
但是
現在是這樣的。
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
按這個(gè)順序主要是解決對象之間依賴(lài)關(guān)系可能產(chǎn)生的問(wèn)題。TRIGGER最后導入,所
以在INSERT
數據到數據庫時(shí)不會(huì )激發(fā)TRIGGER。在導入后可能會(huì )有一些狀態(tài)是INVALID的PROC
EDURE,主要
是IMPORT時(shí)會(huì )影響一些數據庫對象,而IMPORT并不重新編譯PROCEDURE,從而造成
這種情況,
可以重新編譯之,就能解決這個(gè)問(wèn)題。
5、兼容性問(wèn)題
IMPORT工具可以處理EXPORT
E7的IMPORT
處理ORACLE6的DUMP文件,依次類(lèi)推,但是ORACLE如果版本相差很大有可能不能處
理。具體的
問(wèn)題可以參照相應的文檔,比如有關(guān)參數設置等(COMPATIBLE參數)
6、EXPORT需要的VIEW
EXPORT需要的VIEW是由CATEXP.SQL創(chuàng )建,這些內部VIEW用于EXPORT組織DUMP文件
中數據格式。
大部分VIEW用于收集創(chuàng )建DDL語(yǔ)句的,其他的主要供ORACLE開(kāi)發(fā)人員用。
這些VIEW在不同ORACLE版本之間有可能不同,每個(gè)版本可能都有新的特性加入。
所以在新的
版本里面執行舊的dump文件會(huì )有錯誤,一般可以執行CATEXP.SQL解決這些問(wèn)題,
解決向后兼容
問(wèn)題的一般步驟如下:
導出數據庫的版本比目標數據庫老的情況:
- 在需要導入的目標數據庫中執行舊的CATEXP.SQL
- 使用舊的EXPORT導出DUMP文件
- 使用舊的IMPORT導入到數據庫中
- 在數據庫中執行新的CATEXP.SQL,以恢復該版本的EXPORT VIEW
導出數據庫的版本比目標數據庫新的情況:
- 在需要導入的目標數據庫中執行新的CATEXP.SQL
- 使用新的EXPORT導出DUMP文件
- 使用新的IMPORT導入到數據庫中
- 在數據庫中執行舊的CATEXP.SQL,以恢復該版本的EXPORT VIEW
7、碎片整理
EXPORT/IMPORT一個(gè)很重要的應用方面就是整理碎片。因為如果時(shí)初次IMPPORT,
就會(huì )重新CREATE TABLE 再導入數據,所以整張表都是連續存放的。另外缺省情況
下EXPORT會(huì )在生成DUMP文件是“壓縮(COMPRESS)”TABLE,但是這種壓縮在很多情
況下被誤解。事實(shí)上,COMPRESS是改變STORAGE參數INITIAL的值。比如:
CREATE TABLE .... STORAGE( INITIAL 10K NEXT 10K..)
現在數據已經(jīng)擴展到100個(gè)EXTENT,如果采用COMPRESS=Y來(lái)EXPORT數據,
則產(chǎn)生的語(yǔ)句時(shí) STORAGE( INITIAL 1000K NEXT 10K)
我們可以看到NEXT值并沒(méi)有改變,而INITIAL是所有EXTENT的總和。所以會(huì )出現
如下情況,表A有4個(gè)
出數據,產(chǎn)生的CREATE TABLE語(yǔ)句將有
已經(jīng)沒(méi)有數據??!這是的DUMP文件即使很小,但是在IMPORT時(shí)就會(huì )產(chǎn)生一個(gè)巨大
的
TABLE.
另外,也可能會(huì )超過(guò)DATAFILE的大小。比如,有4個(gè)
15個(gè)
那么在重新導入時(shí),不能分配一個(gè)
件。
8、在USER和TABLESPACE之間傳送數據
一般情況下EXPORT的數據要恢復到它原來(lái)的地方去。如果SCOTT用戶(hù)的表以TABLE
或USER方式EXPORT數據,在IMPORT時(shí),如果SCOTT用戶(hù)不存在,則會(huì )報錯!
以FULL方式導出的數據帶有CREATE USER的信息,所以會(huì )自己創(chuàng )建USER來(lái)存放數據
。
當然可以在IMPORT時(shí)使用FROMUSER和TOUSER參數來(lái)確定要導入的USER,但是要保
證
TOUSER一定已經(jīng)存在啦。
9、EXPORT/IMPORT對SQUENCE的影響
在兩種情況下,EXPORT/IMPORT會(huì )對SEQUENCE。
(1)如果在EXPORT時(shí),用戶(hù)正在取SEQUENCE的值,可能造成SEQUENCE的不一致。
(2)另外如果SEQUENCE使用CACHE,在EXPORT時(shí),那些在CACHE中的值就會(huì )被忽略
的,
只是從數據字典里面取當前值EXPORT。
如果在進(jìn)行FULL方式的EXPORT/IMPORT時(shí),恰好在用sequence更新表中某列數據,
而且不是上面兩種情況,則導出的是更新前的數據。
如果采用常規路徑方式,每一行數據都是用INSERT語(yǔ)句,一致性檢查和INSERT T
RIGGER
如果采用DIRECT方式,某些約束和trigger可能不觸發(fā),如果在trigger中使用
sequence.nextval,將會(huì )對sequence有影響。
參數解:
E:\>exp help=y
通過(guò)輸入 EXP 命令和用戶(hù)名/口令,您可以
在用戶(hù) / 口令之后的命令:
實(shí)例: EXP SCOTT/TIGER
或者,您也可以通過(guò)輸入跟有各種參數的 EXP 命令來(lái)控制“導出”的運行方式。
要指定參數,您可以使用關(guān)鍵字:
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
實(shí)例: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表
USERID 必須是命令行中的第一個(gè)參數。
關(guān)鍵字 說(shuō)明(默認)
---------------------------------------------------
USERID 用戶(hù)名/口令
FULL 導出整個(gè)文件 (N)
BUFFER 數據緩沖區的大小
OWNER 所有者用戶(hù)名列表
FILE 輸出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 導入一個(gè)范圍 (Y)
RECORDLENGTH IO 記錄的長(cháng)度
GRANTS 導出權限 (Y)
INCTYPE 增量導出類(lèi)型
INDEXES 導出索引 (Y)
RECORD 跟蹤增量導出 (Y)
ROWS 導出數據行 (Y)
PARFILE 參數文件名
CONSTRAINTS 導出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕輸出的日志文件
STATISTICS 分析對象 (ESTIMATE)
DIRECT 直接路徑 (N)
TRIGGERS 導出觸發(fā)器 (Y)
FEEDBACK 顯示每 x 行 (0) 的進(jìn)度
FILESIZE 各轉儲文件的最大尺寸
QUERY 選定導出表子集的子句
下列關(guān)鍵字僅用于可傳輸的表空間
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TABLESPACES 將傳輸的表空間列表
E:\>imp help=y
可以通過(guò)輸入 IMP 命令和您的用戶(hù)名/口令
跟有您的用戶(hù)名 / 口令的命令:
實(shí)例: IMP SCOTT/TIGER
或者, 可以通過(guò)輸入 IMP 命令和各種自變量來(lái)控制“導入”按照不同參數。
要指定參數,您可以使用關(guān)鍵字:
格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
實(shí)例: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表
USERID 必須是命令行中的第一個(gè)參數。
關(guān)鍵字 說(shuō)明(默認)
----------------------------------------------
USERID 用戶(hù)名/口令
FULL 導入整個(gè)文件 (N)
BUFFER 數據緩沖區大小
FROMUSER 所有人用戶(hù)名列表
FILE 輸入文件 (EXPDAT.DMP)
TOUSER 用戶(hù)名列表
SHOW 只列出文件內容 (N)
TABLES 表名列表
IGNORE 忽略創(chuàng )建錯誤 (N)
RECORDLENGTH IO 記錄的長(cháng)度
GRANTS 導入權限 (Y)
INCTYPE 增量導入類(lèi)型
INDEXES 導入索引 (Y)
COMMIT 提交數組插入 (N)
ROWS 導入數據行 (Y)
PARFILE 參數文件名
LOG 屏幕輸出的日志文件
CONSTRAINTS 導入限制 (Y)
DESTROY 覆蓋表空間數據文件 (N)
INDEXFILE 將表/索引信息寫(xiě)入指定的文件
SKIP_UNUSABLE_INDEXES 跳過(guò)不可用索引的維護 (N)
ANALYZE 執行轉儲文件中的 ANALYZE 語(yǔ)句 (Y)
FEEDBACK 顯示每 x 行 (0) 的進(jìn)度
TOID_NOVALIDATE 跳過(guò)指定類(lèi)型 id 的校驗
FILESIZE 各轉儲文件的最大尺寸
RECALCULATE_STATISTICS 重新計算統計值 (N)
下列關(guān)鍵字僅用于可傳輸的表空間
TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)
TABLESPACES 將要傳輸到數據庫的表空間
DATAFILES 將要傳輸到數據庫的數據文件
TTS_OWNERS 擁有可傳輸表空間集中數據的用戶(hù)
聯(lián)系客服