日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle 数据库导入导出文章

發布時間:2024/3/13 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 数据库导入导出文章 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文出自: http://www.cnblogs.com/fjfzhkb/archive/2007/09/03/879807.html

Oracle數據導入導出imp/exp
功能:Oracle數據導入導出imp/exp就相當與oracle數據還原與備份。
?
大多情況都可以用Oracle數據導入導出完成數據的備份和還原(不會造成數據的丟失)。
?Oracle有個好處,雖然你的電腦不是服務器,但是你裝了oracle客戶端,并建立了連接
?(通過Net Configuration Assistant添加正確的服務命名,其實你可以想成是客戶端與服務器端 修了條路,然后數據就可以被拉過來了)
?這樣你可以把數據導出到本地,雖然可能服務器離你很遠。
?你同樣可以把dmp文件從本地導入到遠處的數據庫服務器中。
?利用這個功能你可以構建倆個相同的數據庫,一個用來測試,一個用來正式使用。
?
執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行,
?DOS中可以執行時由于 在oracle 8i 中? 安裝目錄\$ora10g\BIN被設置為全局路徑,
?該目錄下有EXP.EXE與IMP.EXE文件被用來執行導入導出。
?oracle用java編寫,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE這倆個文件是被包裝后的類文件。
?SQLPLUS.EXE調用EXP.EXE、IMP.EXE他們所包裹的類,完成導入導出功能。
?
下面介紹的是導入導出的實例,向導入導出看實例基本上就可以完成,因為導入導出很簡單。
數據導出:
?1 將數據庫TEST完全導出,用戶名system 密碼manager 導出到D:\daochu.dmp中
?? exp system/manager@TEST file=d:\daochu.dmp full=y
?2 將數據庫中system用戶與sys用戶的表導出
?? exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
?3 將數據庫中的表table1 、table2導出
?? exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
?4 將數據庫中的表table1中的字段filed1以"00"打頭的數據導出
?? exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like? '00%'\"
?
???? 上面是常用的導出,對于壓縮我不太在意,用winzip把dmp文件可以很好的壓縮。
???????????????????? 不過在上面命令后面 加上 compress=y? 就可以了

數據的導入
?1 將D:\daochu.dmp 中的數據導入 TEST數據庫中。
?? imp system/manager@TEST? file=d:\daochu.dmp
?? 上面可能有點問題,因為有的表已經存在,然后它就報錯,對該表就不進行導入。
?? 在后面加上 ignore=y 就可以了。
?2 將d:\daochu.dmp中的表table1 導入
?imp system/manager@TEST? file=d:\daochu.dmp? tables=(table1)
?
?基本上上面的導入導出夠用了。不少情況我是將表徹底刪除,然后導入。
?
注意:
?你要有足夠的權限,權限不夠它會提示你。
?數據庫時可以連上的。可以用tnsping TEST 來獲得數據庫TEST能否連上。

?

數據導出:
exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;

導出注意事項:導出的是當前用戶的的數據,當前用戶如果有DBA的權限,則導出所有數據!

同名用戶之間的數據導入:
imp hkb/hkb@xe? file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y

不同名之間的數據導入:
imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp

log=c:\orabackup\hkbimp.log;

------------------------------------------------------------------------------------------------------------

百度文庫資料

Oracle數據庫文件資料收集:

一、Oracle數據導入導出imp/exp命令 10g以上expdp/impdp命令 詳細

A) 數據導出:

1 將數據庫TEST完全導出,用戶名system 密碼manager 導出到D:daochu.dmp中

?? exp system/manager@TEST file=d:daochu.dmp full=y

2 將數據庫中system用戶與sys用戶的表導出
?? exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)

3 將數據庫中的表inner_notify、notify_staff_relat導出

??? exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

4 將數據庫中的表table1中的字段filed1以"00"打頭的數據導出

?? exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"

? 上面是常用的導出,對于壓縮,既用winzip把dmp文件可以很好的壓縮。

? 也可以在上面命令后面 加上 compress=y 來實現。

B) 數據的導入

1 將D:daochu.dmp 中的數據導入 TEST數據庫中。

?? imp system/manager@TEST? file=d:daochu.dmp

?? imp aichannel/aichannel@HUST full=y? file=d:datanewsmgnt.dmp ignore=y

?? 上面可能有點問題,因為有的表已經存在,然后它就報錯,對該表就不進行導入。

?? 在后面加上 ignore=y 就可以了。

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

imp system/manager@TEST? file=d:daochu.dmp? tables=(table1)

*注:要先是將表徹底刪除,然后導入。

操作者要有足夠的權限,權限不夠它會提示。

數據庫時可以連上的。可以用tnsping TEST 來獲得數據庫TEST能否連上

當然,上面的方法在導出數據時可能會導出很大的包,那是因為你的用戶可能在授權的時候授予了DBA的權限,所以可以采用下面方法來進行數據庫備份:

二、數據庫備份
建議系統過渡后,每周進行一次備份?;蛘咴跀祿戆l生重大改變前,對要改變的數據表進行備份。

執行以下步驟,進行備份。

在命令行里,敲入“cmd”,回車,進入命令行窗口。

在窗口中,輸入:

exp mas/123456@mas

系統提示:輸入數組提取緩沖區大小: 4096 >

可以直接回車;

系統提示:導出文件: EXPDAT.DMP>

此處輸入導出文件的位置,其路徑必須存在,Oracle在這里不會自動建立路徑,但可以建立文件名。備份文件以dmp作為后綴。

輸入內容如:e:\work\mas_db_090925v1.dmp 回車

系統提示: (1)E(完整的數據庫),(2)U(用戶) 或 (3)T(表): (2)U > u

此處可以輸入u,也可以直接回車,因為系統此時默認的是U

系統提示:導出權限(yes/no):yes>回車

系統提示:導出表數據(yes/no):yes>回車

系統提示:壓縮區(yes/no):yes>回車

系統提示:要導出的用戶: (RETURN 以退出) > mas

系統提示:要導出的用戶: (RETURN 以退出) > 回車

此時系統會自動進行備份

?

經驗總結:
A.說明
?oracle 的exp/imp命令用于實現對數據庫的導出/導入操作;

?? exp命令用于把數據從遠程數據庫服務器導出至本地,生成dmp文件;

?? ?imp命令用于把本地的數據庫dmp文件從本地導入到遠程的Oracle數據庫中。
B.語法
可以通過在命令行輸入 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 命令和您的用戶名/口令

? 后接用戶名/口令的命令:

??A.導入:例程: 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 命令和用戶名/口令,您可以

? 后接用戶名/口令的命令:

?

B .導出例程: 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才可。我們可以使用下面方式連入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'"""

4.2、8i IMP常用選項

?1、FROMUSER和TOUSER,使用它們實現將數據從一個SCHEMA中導入到另外一個SCHEMA中。

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

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

4.4、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,如果你想加快速度,可以在IMP的時候不建索引,這樣只要內存允許,可以多跑幾個,然后是SQL腳本創建需要的索引。

?

注意:*

?操作者要有足夠的權限,權限不夠它會提示。

?數據庫是否可以連上, 可以用tnsping TestDB? 來獲得數據庫 TestDB 能否連上。

附錄一:

?給用戶增加導入數據權限的操作

?第一, 啟動sql*puls

?第二,以system/manager登陸

?第三,create user 用戶名 IDENTIFIED BY 密碼(如果已經創建過用戶,這步可以省略)

?第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,

?? ????DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,

????? ?DBA,CONNECT,RESOURCE,CREATE SESSION? TO 用戶名字

?第五, 運行-cmd-進入dmp文件所在的目錄,

????? imp userid=system/manager full=y file=*.dmp

????? 或者 imp userid=system/manager full=y file=filename.dmp

附錄二:

?Oracle 不允許直接改變表的擁有者, 利用Export/Import可以達到這一目的.

? 先建立import9.par,

? 然后,使用時命令如下:imp parfile=/filepath/import9.par

? 例 import9.par 內容如下:

??????? FROMUSER=TGPMS??????

??????? TOUSER=TGPMS2????
(注:把表的擁有者由FROMUSER改為TOUSER,FROMUSER和TOUSER的用戶可以不同)?????????

??????? ROWS=Y

??????? INDEXES=Y

??????? GRANTS=Y

??????? CONSTRAINTS=Y

??????? BUFFER=409600

??????? file==/backup/ctgpc_20030623.dmp

??????? log==/backup/import_20030623.log

?

?

?

?

?

?

?

?

?

?

exp 命令的參數:

將數據庫內的各對象以二進制方式下載成dmp文件,方便數據遷移。

buffer:下載數據緩沖區,以字節為單位,缺省依賴操作系統

consistent:下載期間所涉及的數據保持read only,缺省為n

direct:使用直通方式 ,缺省為n

feeback:顯示處理記錄條數,缺省為0,即不顯示

file:輸出文件,缺省為expdat.dmp

filesize:輸出文件大小,缺省為操作系統最大值

indexes:是否下載索引,缺省為n,這是指索引的定義而非數據,exp不下載索引數據

log:log文件,缺省為無,在標準輸出顯示

owner:指明下載的用戶名

query:選擇記錄的一個子集

rows:是否下載表記錄

tables:輸出的表名列表

導出整個實例

exp dbuser/oracle file=oradb.dmp log=oradb.log full=y consistent=y direct=y

user應具有dba權限

導出某個用戶所有對象

exp dbuser/oracle file=dbuser.dmp log=dbuser.log owner=dbuser buffer=4096000 feedback=10000

導出一張或幾張表

exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1,table2 buffer=4096000 feedback=10000

導出某張表的部分數據

exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1 buffer=4096000 feedback=10000 query=\”where col1=\’…\’ and col2 \<…\”

不可用于嵌套表

以多個固定大小文件方式導出某張表

exp dbuser/oracle file=1.dmp,2.dmp,3.dmp,… filesize=1000m tables=emp buffer=4096000 feedback=10000

這種做法通常用在:表數據量較大,單個dump文件可能會超出文件系統的限制

直通路徑方式

direct=y,取代buffer選項,query選項不可用

有利于提高下載速度

consistent選項

自export啟動后,consistent=y凍結來自其它會話的對export操作的數據對象的更新,這樣可以保證dump結果的一致性。但這個過程不能太長,以免回滾段和聯機日志消耗完

imp

將exp下載的dmp文件上載到數據庫內。

buffer:上載數據緩沖區,以字節為單位,缺省依賴操作系統

commit:上載數據緩沖區中的記錄上載后是否執行提交

feeback:顯示處理記錄條數,缺省為0,即不顯示

file:輸入文件,缺省為expdat.dmp

filesize:輸入文件大小,缺省為操作系統最大值

fromuser:指明來源用戶方

ignore:是否忽略對象創建錯誤,缺省為n,在上載前對象已被建立往往是一個正?,F象,所以此選項建議設為y

indexes:是否上載索引,缺省為n,這是指索引的定義而非數據,如果上載時索引已建立,此選項即使為n也無效,imp自動更新索引數據

log:log文件,缺省為無,在標準輸出顯示

rows:是否上載表記錄

tables:輸入的表名列表

touser:指明目的用戶方

導入整個實例

imp dbuser/oracle file=oradb.dmp log=oradb.log full=y buffer=4096000 commit=y ignore=y feedback=10000

導入某個用戶所有對象

imp dbuser/oracle file=dbuser.dmp log=dbuser.log fromuser=dbuser touser=dbuser2 buffer=2048000 commit=y ignore=y feedback=10000

導入一張或幾張表

imp dbuser2/oracle file=user.dmp log=user.log tables=table1,table2 fromuser=dbuser touser=dbuser2 buffer=2048000 commit=y ignore=y feedback=10000

以多個固定大小文件方式導入某張表

imp dbuser/oracle file=\(1.dmp,2.dmp,3.dmp,…\) filesize=1000m tables=emp fromuser=dbuser touser=dbuser2 buffer=4096000 commit=y ignore=y feedback=10000

?

exp/imp已經很好用了,但是唯一的確定是速度太慢,如果1張表的數據有個百千萬的,常常導入導出就長時間停在這個表這,但是從Oracle 10g開始提供了稱為數據泵新的工具expdp/impdp,它為Oracle數據提供高速并行及大數據的遷移。

?

?imp/exp可以在客戶端調用,但是expdp/impdp只能在服務端,因為在使用expdp/impdp以前需要在數據庫中創建一個Directory

create directory dump_test as '/u01/oracle10g';

grant read, write on directory dump_test to piner

然后就可以開始導入導出

expdp piner/piner directory=dump_test dumpfile=user.dmp? 導出用戶的數據

expdp piner/piner directory=dump_test dumpfile=table.dmp tables=test1,test2 導出表數據

impdp piner/piner directory=dump_test dumpfile=user.dmp 導入該用戶數據

impdp piner/piner directory=dump_test dumpfile=table.dmp? 導出表數據

my test:

SQL> create directory dump_test as '/home/oracle/oracle10g';

Directory created.

SQL> drop directory dump_test;

Directory dropped.

SQL>? create directory dump_test as '/u01/oracledmp';

Directory created.

--接下來記得創建directory在系統上,并賦好權限

[oracle@localhost ~]$ expdp anlen/anlen123 directory=dumpdir dumpfile=anlen.dmp

Export: Release 10.2.0.4.0 - Production on Saturday, 12 June, 2010 14:43:20

Copyright (c) 2003, 2007, Oracle.? All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "ANLEN"."SYS_EXPORT_SCHEMA_01":? anlen/******** directory=dumpdir dumpfile=anlen.dmp

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 1.125 MB

Processing object type SCHEMA_EXPORT/USER

Processing object type SCHEMA_EXPORT/SYSTEM_GRANT

Processing object type SCHEMA_EXPORT/ROLE_GRANT

Processing object type SCHEMA_EXPORT/DEFAULT_ROLE

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE

Processing object type SCHEMA_EXPORT/TABLE/TABLE

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/COMMENT

. . exported "ANLEN"."DBA_01"??????????????????????????? 571.2 KB?? 20000 rows

. . exported "ANLEN"."DBA_02"??????????????????????????? 278.4 KB?? 20000 rows

Master table "ANLEN"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

******************************************************************************

Dump file set for ANLEN.SYS_EXPORT_SCHEMA_01 is:

? /u01/dmpdir/anlen.dmp

Job "ANLEN"."SYS_EXPORT_SCHEMA_01" successfully completed at 14:43:41

?

總結

以上是生活随笔為你收集整理的oracle 数据库导入导出文章的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。