我的java天地

          oracle中的數據導入和導出

          本文對Oracle數據的導入導出 imp ,exp 兩個命令進行了介紹, 并對其相應的參數進行了說明,然后通過一些示例進行演練,加深理解.
          文章最后對運用這兩個命令可能出現的問題(如權限不夠,不同oracle版本)進行了探討,并提出了相應的解決方案;
          本文部分內容摘錄自網絡,感謝網友的經驗總結;


          一.說明

          ?? oracle 的exp/imp命令用于實現對數據庫的導出/導入操作;
          ?? exp命令用于把數據從遠程數據庫服務器導出至本地,生成dmp文件;
          ?? imp命令用于把本地的數據庫dmp文件從本地導入到遠程的Oracle數據庫中。

          二.語法

          可以通過在命令行輸入 imp help=y 獲取imp的語法信息:
          =============================================================================
          ? C:\Documents and Settings\auduser>imp help=y

          ? Import: Release 9.0.1.1.1 - Production on 星期二 5月 20 18:21:57 2008

          ? (c) Copyright 2001 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)

          ? 下列關鍵字僅用于可傳輸的表空間
          ? TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)
          ? TABLESPACES 將要傳輸到數據庫的表空間
          ? DATAFILES 將要傳輸到數據庫的數據文件
          ? TTS_OWNERS 擁有可傳輸表空間集中數據的用戶

          ==============================================
          同樣可以通過輸入 exp help=y 獲取exp的語法信息

          ? Microsoft Windows XP [版本 5.1.2600]
          ? (C) 版權所有 1985-2001 Microsoft Corp.

          ? C:\Documents and Settings\auduser>exp help=y

          ? Export: Release 9.0.1.1.1 - Production on 星期二 5月 20 18:26:34 2008

          ? (c) Copyright 2001 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 交叉表一致性??? CONSTRAINTS? 導出約束條件 (Y)

          ? FEEDBACK???????????? 每 x 行顯示進度 (0)
          ? FILESIZE???????????? 每個轉儲文件的最大大小
          ? FLASHBACK_SCN??????? 用于回調會話快照的 SCN
          ? FLASHBACK_TIME?????? 用來獲得最接近于指定時間的 SCN 的時間
          ? QUERY??????????????? 用來導出表的子集的選擇子句
          ? RESUMABLE??????????? 遇到與空格有關的錯誤時掛起 (N)
          ? RESUMABLE_NAME?????? 用來標識可恢復語句的文本字符串
          ? RESUMABLE_TIMEOUT??? RESUMABLE 的等待時間
          ? TTS_FULL_CHECK?????? 對 TTS 執行完全或部分相關性檢查
          ? TABLESPACES????????? 要導出的表空間列表
          ? TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
          ? TEMPLATE 調用 iAS 模式導出的模板名稱

          三.使用示例

          3.1 數據導出:

          ?1 將數據庫SampleDB完全導出,用戶名system 密碼manager 導出到E:\SampleDB.dmp中

          ?? exp system/manager@TestDB file=E:\sampleDB.dmp full=y

          ?2 將數據庫中system用戶與sys用戶的表導出

          ?? exp system/manager@TestDB file=E:\sampleDB.dmp? owner=(system,sys)

          ?3 將數據庫中的表 TableA,TableB 導出

          ??? exp system/manager@TestDB? file=E:\sampleDB.dmp? tables=(TableA,TableB)

          ?4 將數據庫中的表tableA中的字段filed1 值為 "王五" 的數據導出

          ?? exp system/manager@TestDB? file=E:\sampleDB.dmp? tables=(tableA)? query=' where filed1='王五'
          ?
          ?? 如果想對dmp文件進行壓縮,可以在上面命令后面 加上 compress=y 來實現。

          3.2 數據的導入

          ?1 將備份數據庫文件中的數據導入指定的數據庫SampleDB 中,如果 SampleDB 已存在該表,則不再導入;

          ?? imp system/manager@TEST? file=E:\sampleDB.dmp? full=y? ignore=y
          ?

          ?2 將d:\daochu.dmp中的表table1 導入

          ?imp system/manager@TEST? file=E:\sampleDB.dmp? tables=(table1)

          3. 導入一個完整數據庫

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

          4. 導入一個或一組指定用戶所屬的全部表、索引和其他對象

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

          5. 將一個用戶所屬的數據導入另一個用戶

          ?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)

          6. 導入一個表

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

          7. 從多個文件導入

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

          8. 使用參數文件

          ?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
          參數文件示例見附錄


          9. 增量導入

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

          ?
          不少情況下要先將表徹底刪除,然后導入。
          ?

          ?

          四.參數說明

          4.1、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才可。

          posted on 2009-04-15 20:47 tobyxiong 閱讀(618) 評論(0)  編輯  收藏 所屬分類: DATABASES

          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(144)

          隨筆檔案(157)

          相冊

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 子长县| 华坪县| 轮台县| 宁强县| 上饶县| 合山市| 萨迦县| 桦甸市| 古交市| 竹北市| 南开区| 沙河市| 淳安县| 顺平县| 彩票| 钟山县| 宜兴市| 津南区| 湘潭县| 手机| 恩施市| 沙湾县| 安远县| 都江堰市| 横峰县| 芦山县| 城步| 馆陶县| 南皮县| 尉氏县| 定安县| 修文县| 乐山市| 聂拉木县| 灌云县| 宁波市| 丰宁| 石渠县| 务川| 广汉市| 海口市|