Oracle匯入程式Imp的使用詳解

來源:互聯網
上載者:User

Oracle的匯入公用程式(Import utility)允許從資料庫提取資料,並且將資料寫入作業系統檔案。imp使用的基本格式:imp[username[/password[@service]]],以下例舉imp常用用法。

1. 擷取協助

 imp help=y

2. 匯入一個完整資料庫

 imp system/manager file=bible_db log=dible_db full=y ignore=y

3. 匯入一個或一組指定使用者所屬的全部表、索引和其他對象

 imp system/manager file=seapark log=seapark fromuser=seapark imp 
 system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

4. 將一個使用者所屬的資料匯入另一個使用者

 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
 imp system/manager file=tank log=tank fromuser=(seapark,amy)
 touser=(seapark1, amy1)

5. 匯入一個表

 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

6. 從多個檔案匯入

 imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) 
log=paycheck, filesize=1G full=y

7. 使用參數檔案

 imp system/manager parfile=bible_tables.par

bible_tables.par參數檔案:

 #Import the sample tables used for the Oracle8i Database Administrator's 
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

8. 增量匯入

 imp system./manager inctype= RECTORE FULL=Y FILE=A
Oracle imp/exp 

C:Documents and Settingsadministrator>exp help=y

Export: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:04:43 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

通過輸入 EXP 命令和使用者名稱/口令,您可以
後接使用者名稱/口令的命令:

常式: EXP SCOTT/TIGER

或者,您也可以通過輸入跟有各種參數的 EXP 命令來控制“匯出”
按照不同參數。要指定參數,您可以使用關鍵字:

格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
常式: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表

USERID 必須是命令列中的第一個參數。

關鍵字 說明(預設) 關鍵字 說明(預設)
--------------------------------------------------------------------------
USERID 使用者名稱/口令 FULL 匯出整個檔案 (N)
BUFFER 資料緩衝區大小 OWNER 所有者使用者名稱列表
FILE 輸出檔案 (EXPDAT.DMP) TABLES 表名稱列表
COMPRESS 匯入到一個區 (Y) RECORDLENGTH IO 記錄的長度
GRANTS 匯出許可權 (Y) INCTYPE 增量匯出類型
INDEXES 匯出索引 (Y) RECORD 跟蹤增量匯出 (Y)
DIRECT 直接路徑 (N) TRIGGERS 匯出觸發器 (Y)
LOG 螢幕輸出的記錄檔 STATISTICS 分析對象 (ESTIMATE)
ROWS 匯出資料行 (Y) PARFILE 參數檔案名稱
CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 匯出的約束條件 (Y)

OBJECT_CONSISTENT 只在對象匯出期間設定為讀的交易處理 (N)
FEEDBACK 每 x 行的顯示進度 (0)
FILESIZE 每個轉儲檔案的最大大小
FLASHBACK_SCN 用於將會話快照設定回以前狀態的 SCN
FLASHBACK_TIME 用於擷取最接近指定時間的 SCN 的時間
QUERY 用於匯出表的子集的 select 子句
RESUMABLE 遇到與空格相關的錯誤時掛起 (N)
RESUMABLE_NAME 用於標識可恢複語句的文本字串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
TTS_FULL_CHECK 對 TTS 執行完整的或部分相關性檢查
TABLESPACES 要匯出的資料表空間列表
TRANSPORT_TABLESPACE 匯出可傳輸的資料表空間中繼資料 (N)
TEMPLATE 調用 iAS 模式匯出的模板名

在沒有警告的情況下成功終止匯出。
==================================================

C:Documents and Settingsadministrator>imp help=y

Import: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:06:54 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

可以通過輸入 IMP 命令和您的使用者名稱/口令
後接使用者名稱/口令的命令:

常式: IMP SCOTT/TIGER

或者, 可以通過輸入 IMP 命令和各種參數來控制“匯入”
按照不同參數。要指定參數,您可以使用關鍵字:

格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
常式: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表

USERID 必須是命令列中的第一個參數。

關鍵字 說明(預設) 關鍵字 說明(預設)
--------------------------------------------------------------------------
USERID 使用者名稱/口令 FULL 匯入整個檔案 (N)
BUFFER 資料緩衝區大小 FROMUSER 所有人使用者名稱列表
FILE 輸入檔案 (EXPDAT.DMP) TOUSER 使用者名稱列表
SHOW 只列出檔案內容 (N) TABLES 表名列表
IGNORE 忽略建立錯誤 (N) RECORDLENGTH IO 記錄的長度
GRANTS 匯入許可權 (Y) INCTYPE 增量匯入類型
INDEXES 匯入索引 (Y) COMMIT 提交數組插入 (N)
ROWS 匯入資料行 (Y) PARFILE 參數檔案名稱
LOG 螢幕輸出的記錄檔 CONSTRAINTS 匯入限制 (Y)
DESTROY 覆蓋資料表空間資料檔案 (N)
INDEXFILE 將表/索引資訊寫入指定的檔案
SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N)
FEEDBACK 每 x 行顯示進度 (0)
TOID_NOVALIDATE 跳過指定類型 ID 的驗證
FILESIZE 每個轉儲檔案的最大大小
STATISTICS 始終匯入預計算的統計資訊
RESUMABLE 在遇到有關空間的錯誤時掛起 (N)
RESUMABLE_NAME 用來標識可恢複語句的文本字串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
COMPILE 編譯過程, 程式包和函數 (Y)
STREAMS_CONFIGURATION 匯入 Streams 的一般中繼資料 (Y)
STREAMS_INSTANITATION 匯入 Streams 的執行個體化中繼資料 (N)

下列關鍵字僅用於可傳輸的資料表空間
TRANSPORT_TABLESPACE 匯入可傳輸的資料表空間中繼資料 (N)
TABLESPACES 將要傳輸到資料庫的資料表空間
DATAFILES 將要傳輸到資料庫的資料檔案
TTS_OWNERS 擁有可傳輸資料表空間集中資料的使用者

成功終止匯入,但出現警告。

oracle的imp和exp的一些用法- -

Oracle8i/9i EXP/IMP使用經驗
一、8i EXP常用選項

1、FULL,這個用於匯出整個資料庫,在ROWS=N一起使用時,可以匯出整個資料庫的結構。例如:

exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y

2、BUFFER和FEEDBACK,在匯出比較多的資料時,我會考慮設定這兩個參數。例如:

exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT

3、FILL和LOG,這兩個參數分別指定備份的DMP名稱和LOG名稱,包括檔案名稱和目錄,例子見上面。

需要說明的是,EXP可以直接備份到磁帶中,即使用FILE=/dev/rmt0(磁帶裝置名稱),但是一般我們都不這麼做,原因有二:一、這樣做的速度會慢很多,二、現在一般都是使用磁帶庫的,不建議直接對磁帶進行操作。至於沒有使用磁帶庫的朋友可以考慮和UNIX的TAR結合使用。

如果你真想使用EXP直接到磁帶,你可以參考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”(文檔號:30428.1),該文中有詳細解釋。

4、COMPRESS參數將在匯出的同時合并碎塊,盡量把資料壓縮到initial的EXTENT裡,預設是N,一般建議使用。DIRECT參數將告訴EXP直接讀取資料,而不像傳統的EXP那樣,使用SELECT來讀取表中的資料,這樣就減少了SQL語句處理過程。一般也建議使用。不過有些情況下DIRECT參數是無法使用的。

5、如何使用SYSDBA執行EXP/IMP?

這是一個很現實的問題,有時候我們需要使用SYSDBA來執行EXP/IMP,如進行傳輸資料表空間的EXP/IMP,以及在9i下用SYS使用者來執行EXP/IMP時,都需要使用SYSDBA才可。我們可以使用下面方式連入EXP/IMP:

exp "'sys/sys as sysdba'" file=1.dmp tables=gototop.t rows=n

6、QUERY參數後面跟的是where條件,值得注意的是,整個where子句需要使用""括起來,where子句的寫法和SELECT中相同,如果是UNIX平台所有"和'都需要使用u26469屏蔽它們的特殊含義:

exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop"

如果是windows平台,則使用下面的格式:

exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""

二、8i IMP常用選項

1、FROMUSER和TOUSER,使用它們實現將資料從一個SCHEMA中匯入到另外一個SCHEMA中。

2、IGNORE、GRANTS和INDEXES,其中IGNORE參數將忽略表的存在,繼續匯入,這個對於需要調整表的儲存參數時很有用,我們可以先根據實際情況用合理的儲存參數建好表,然後直接匯入資料。而GRANTS和INDEXES則表示是否匯入授權和索引,如果想使用新的儲存參數重建索引,或者為了加快到入速度,我們可以考慮將INDEXES設為N,而GRANTS一般都是Y。

另外一個EXP/IMP都有的參數是PARFILE,它是用來定義EXP/IMP的參數檔案,也就是說,上面的參數都可以寫在一個參數檔案中,但我們一般很少使用。

三、Oracle9i EXP功能描述

Oracle9i EXP在原有的基礎上新增了部分新的參數,按功能主要分為以下幾個部分:

1、OBJECT_CONSISTENT - 用於設定EXP對象為唯讀以保持對象的一致性。預設是N。

2、FLASHBACK_SCN和FLASHBACK_TIME - 用於支援FLASHBACK功能而新增。

3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用於支援RESUMABLE空間分配而新增。

4、TTS_FULL_CHECK - 用於在傳輸資料表空間時用法相依性檢查。

5、TEMPLATE - 用於支援iAS。

6、TABLESPACES - 設定資料表空間匯出模式。個人覺得對於一般使用者而言,這個才是新增參數中最實用的一個,可以讓使用者在原來的FULL、OWNER、TABLES的基礎上多了一種選擇,使得EXP更加靈活。

四、不同版本的EXP/IMP問題?

一般來說,從低版本匯入到高版本問題不大,麻煩的是將高版本的資料匯入到低版本中,在Oracle9i之前,不同版本Oracle之間的EXP/IMP可以通過下面的方法來解決:

1、在高版本資料庫上運行底版本的catexp.sql;

2、使用低版本的EXP來匯出高版本的資料;

3、使用低版本的IMP將資料庫匯入到底版本資料庫中;

4、在高版本資料庫上重新運行高版本的catexp.sql指令碼。

但在9i中,上面的方法並不能解決問題。如果直接使用底版本EXP/IMP會出現如下錯誤:

EXP-00008: ORACLE error %lu encountered

ORA-00904: invalid column name

這已經是一個公布的BUG,需要等到Oracle10.0才能解決,BUG號為2261,你可以到METALINK上去查看有關此BUG的詳細資料。

BUG歸BUG,我們的工作還是要做,在沒有Oracle的支援之前,我們就自己解決。在Oracle9i中執行下面的SQL重建exu81rls視圖即可。

CREATE OR REPLACE view exu81rls

(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)

AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,

decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')

|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')

|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')

|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),

r.check_opt, r.enable_flag,

DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)

from user$ u, obj$ o, rls$ r

where u.user# = o.owner#

and r.obj# = o.obj#

and (uid = 0 or

uid = o.owner# or

exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')

)

/

grant select on sys.exu81rls to public;

/

五、其他問題

本文只討論了Oracle8i和9i中的EXP/IMP的一些情況,對於之前的版本,在8.0.X中,除了QUERY參數不能用外,其它差別不大。針對沒有QUERY的情況,我們可以先在資料庫中使用查詢條件建立臨時中間表,然後使用EXP匯出這個中間表即可。至於Oracle7因為目前使用的人較少,gototop不打算在此做詳細解釋了,如果讀者朋友有需求,你可以參考Metalink文檔:“Overview of Export and Import in Oracle7”(文檔號:61949.1)。關於EXP/IMP的詳細參數資訊你可以通過EXP/IMP HELP=Y來獲得。

另外關於傳輸資料表空間的更多資訊可以參考下面的Metelink文檔,本文不再詳述。

[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use.

[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.

在進行並行EXP/IMP的時候,如果IMP過程建索引的話不建議同時運行5個以上的IMP,如果你想加快速度


來源:
http://blog.csdn.net/wumourong/archive/2007/05/23/1623301.aspx

相關文章

聯繫我們

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