oracleexpimp詳解_第1頁
oracleexpimp詳解_第2頁
oracleexpimp詳解_第3頁
oracleexpimp詳解_第4頁
oracleexpimp詳解_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、oracleexp/imp 詳解導(dǎo)入/導(dǎo)出是 ORACL 絆存的最古老的兩個(gè)命令行工具,其實(shí)我從來不認(rèn)為 Exp/Imp 是一種好的備份方式,正確的說法是 Exp/Imp 只能是一個(gè)好的轉(zhuǎn)儲(chǔ)工具,特別是在小型數(shù)據(jù)庫的轉(zhuǎn)儲(chǔ),表空間的遷移,表的抽取,檢測邏輯和物理沖突等中有不小的功勞。當(dāng)然,我們也可以把它作為小型數(shù)據(jù)庫的物理備份后的一個(gè)邏輯輔助備份,也是不錯(cuò)的建議。對于越來越大的數(shù)據(jù)庫,特別是 TB 級數(shù)據(jù)庫和越來越多數(shù)據(jù)倉庫的出現(xiàn),EXP/IMP 越來越力不從心了,這個(gè)時(shí)候,數(shù)據(jù)庫的備份都轉(zhuǎn)向了 RMAN 和第三方工具。下面說明一下 EXP/IMP 的使用。如何使 exp 的幫助以不同的字符集顯

2、示: setnls_lang=simplifiedchinese_china.zhs16gbk,通過設(shè)置環(huán)境變量,可以讓 exp 的幫助以中文顯示,如果 setnls_lang=American_america.字符集,那么幫助就是英文的了EXP 的所有參數(shù)(括號中為參數(shù)的默認(rèn)值):USERID 用戶名/口令如:USERID=duanl/duanlFULL 導(dǎo)出整個(gè)數(shù)據(jù)庫(N)BUFFER 數(shù)據(jù)緩沖區(qū)的大小OWNER 所有者用戶名列表,你希望導(dǎo)出哪個(gè)用戶的對象,就用 owner=usernameFILE 輸出文件(EXPDAT.DMP)TABLES 表名歹 U 表,指定導(dǎo)出的 table 名稱

3、,如:TABLES=table1,table2COMPRESS 導(dǎo)入一個(gè) extent(Y)RECORDLENGTHIO 記錄的長度下列關(guān)鍵字僅用于可傳輸?shù)谋砜臻gTRANSPORT_TABLESPACE 出可傳輸?shù)谋砜臻g元數(shù)據(jù)(N)TABLESPACES!傳輸?shù)谋砜臻g歹 U 表程序代碼IMP 的所有參數(shù)(括號中為參數(shù)的默認(rèn)值):USERID 用戶名/口令GRANTSINCTYPEINDEXESRECORDROWSPARFILECONSTRAINTSCONSISTENTLOGSTATISTICSDIRECTTRIGGERSFEEDBACKFILESIZEQUERY導(dǎo)出權(quán)限(Y)增量導(dǎo)出類型導(dǎo)出索

4、引(Y)跟蹤增量導(dǎo)出(Y)導(dǎo)出數(shù)據(jù)行(Y)參數(shù)文件名,如果你 exp 的參數(shù)很多,可以存成參數(shù)文件導(dǎo)出約束(Y)交叉表一致性屏幕輸出的日志文件分析對象(ESTIMATE)直接路徑(N)導(dǎo)出觸發(fā)器(Y)顯示每 x 行(0)的進(jìn)度各轉(zhuǎn)儲(chǔ)文件的最大尺寸FULL 導(dǎo)入整個(gè)文件(N)BUFFER 數(shù)據(jù)緩沖區(qū)大小FROMUSER 所有人用戶名列表FILE 輸入文件(EXPDAT.DMP)TOUSER 用戶名列表SHOW 只列出文件內(nèi)容(N)TABLES 表名列表IGNORE 忽略創(chuàng)建錯(cuò)誤(N)RECORDLENGTHIO 記錄的長度GRANTS 導(dǎo)入權(quán)限(Y)INCTYPE 增量導(dǎo)入類型INDEXES 導(dǎo)

5、入索弓 I(Y)COMMIT 提交數(shù)組插入(N)ROWS 導(dǎo)入數(shù)據(jù)行(Y)PARFILE 參數(shù)文件名LOG 屏幕輸出的日志文件CONSTRAINTS 導(dǎo)入限制(Y)DESTROY 覆蓋表空間數(shù)據(jù)文件(N)INDEXFILE 將表/索引信息寫入指定的文件SKIP_UNUSABLE_INDEXES 跳過不可用索弓 I 的維護(hù)(N)ANALYZE 執(zhí)行轉(zhuǎn)儲(chǔ)文件中的 ANALYZE 語句(Y)FEEDBACKS 示每 x 行(0)的進(jìn)度TOID_NOVALIDATE 跳過指定類型 id 的校驗(yàn)FILESIZE 各轉(zhuǎn)儲(chǔ)文件的最大尺寸RECALCULATE_STATISTI 則計(jì)算統(tǒng)計(jì)值(N)下列關(guān)鍵字僅

6、用于可傳輸?shù)谋砜臻gTRANSPORT_TABLESPACE 入可傳輸?shù)谋砜臻g元數(shù)據(jù)(N)TABLESPACES!要傳輸?shù)綌?shù)據(jù)庫的表空間DATAFILESa 要傳輸?shù)綌?shù)據(jù)庫的數(shù)據(jù)文件TTS_OWNERS1 有可傳輸表空間集中數(shù)據(jù)的用戶關(guān)于增量參數(shù)的說明:exp/imp 的增量并不是真正意義上的增量,所以最好不要使用。使用方法:Expparameter_name=valueorExpparameter_name=(value1,value2)只要輸入?yún)?shù) help=y 就可以看到所有幫助.EXP 常用選項(xiàng)1 .FULL,這個(gè)用于導(dǎo)出整個(gè)數(shù)據(jù)庫,在 ROWS=N 一起使用時(shí),可以導(dǎo)出整個(gè)數(shù)據(jù)庫的結(jié)構(gòu)

7、。例如:expuserid=test/testfile=./db_str.dmplog=./db_str.logfull=yrows=ncompress=ydirect=y2 .OWNER 和 TABLE 這兩個(gè)選項(xiàng)用于定義 EXP 的對象。OWNER 定義導(dǎo)出指定用戶的對象;TABLE 指定 EXP 的 table 名稱,例如:expuserid=test/testfile=./db_str.dmplog=./db_str.logowner=duanlexpuserid=test/testfile=./db_str.dmplog=./db_str.logtable=nc_data,fi_ar

8、ap3 .BUFFER 和 FEEDBACK 在導(dǎo)出比較多的數(shù)據(jù)時(shí),我會(huì)考慮設(shè)置這兩個(gè)參數(shù)。例如:expuserid=test/testfile=yw97_2003.dmplog=yw97_2003_3.logfeedback=10000buffer=100000000tables=WO4,OK_YT4 .FILE 和 LOG,這兩個(gè)參數(shù)分另 1J 指定備份的 DMP 名稱和 LOG 名稱,包括文件名和目錄,例子見上面。5 .COMPRES 繆數(shù)不壓縮導(dǎo)出數(shù)據(jù)的內(nèi)容。用來控制導(dǎo)出對象的 storage 語句如何產(chǎn)生。默認(rèn)值為 Y,使用默認(rèn)值, 對象的存儲(chǔ)語句的 initextent 等于當(dāng)前導(dǎo)

9、出對象的 extent 的總和。 推薦使用 COMPRESSN。6 .FILESIZE 亥選項(xiàng)在 8i 中可用。如果導(dǎo)出的 dmp 文件過大時(shí),最好使用 FILESIZ 參數(shù),限制文件大小不要超過 2G。如:expuserid=duanl/duanlfile=f1,f2,f3,f4,f5filesize=2Gowner=scott這樣將創(chuàng)建 f1.dmp,f2.dmp 等一系列文件,每個(gè)大小都為 2G,如果導(dǎo)出的總量小于 10GEXP 不必創(chuàng)建 f5.bmp.IMP 常用選項(xiàng)1、FROMUSEM 口 TOUSER 使用它們實(shí)現(xiàn)將數(shù)據(jù)從一個(gè) SCHEMA 中導(dǎo)入至 U 另外一個(gè) SCHEMA中。

10、例如:假設(shè)我們做 exp 時(shí)導(dǎo)出的為 test 的對象,現(xiàn)在我們想把對象導(dǎo)入用戶:impuserid=test1/test1file=expdat.dmpfromuser=test1touser=test12、IGNOREGRANTS口 INDEXES 其中 IGNORE 參數(shù)將忽略表的存在,繼續(xù)導(dǎo)入,這個(gè)對于需要調(diào)整表的存儲(chǔ)參數(shù)時(shí)很有用,我們可以先根據(jù)實(shí)際情況用合理的存儲(chǔ)參數(shù)建好表,然后直接導(dǎo)入數(shù)據(jù)。而 GRANTS 和 INDEXES 則表示是否導(dǎo)入授權(quán)和索引,如果想使用新的存儲(chǔ)參數(shù)重建索引,或者為了加快到入速度,我們可以考慮將 INDEXES 設(shè)為 N,而 GRANTS 一般者 B是丫。

11、例女口:impuserid=test1/test1file=expdat.dmpfromuser=test1touser=test1indexes=N 表空間傳輸表空間傳輸是 8i 新增加的一種快速在數(shù)據(jù)庫間移動(dòng)數(shù)據(jù)的一種辦法,是把一個(gè)數(shù)據(jù)庫上的格式數(shù)據(jù)文件附加到另外一個(gè)數(shù)據(jù)庫中,而不是把數(shù)據(jù)導(dǎo)出成 Dmp 文件,這在有些時(shí)候是非常管用的,因?yàn)閭鬏敱砜臻g移動(dòng)數(shù)據(jù)就象復(fù)制文件一樣快。關(guān)于傳輸表空間有一些規(guī)則,即:?源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫必須運(yùn)行在相同的硬件平臺上。?源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫必須使用相同的字符集。?源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫一定要有相同大小的數(shù)據(jù)塊?目標(biāo)數(shù)據(jù)庫不能有與遷移表空間同名的表空間?S

12、YS 勺對象不能遷移?必須傳輸自包含的對象集?有一些對象,如物化視圖,基于函數(shù)的索引等不能被傳輸可以用以下的方法來檢測一個(gè)表空間或一套表空間是否符合傳輸標(biāo)準(zhǔn):execsys.dbms_tts.transport_set_check(tablespace_name,true);select*fromsys.transport_set_violation;如果沒有行選擇,表示該表空間只包含表數(shù)據(jù),并且是自包含的。對于有些非自包含的表空間,如數(shù)據(jù)表空間和索引表空間,可以一起傳輸。以下為簡要使用步驟,如果想?yún)⒖荚敿?xì)使用方法,也可以參考 ORACL 或機(jī)幫助。1 .設(shè)置表空間為只讀(假定表空間名字為 A

13、PP_Data 和 APP_Index)altertablespaceapp_datareadonly;altertablespaceapp_indexreadonly;2 .發(fā)出 EXP 命令SQLhostexpuserid=sys/passwordassysdbatransport_tablespace=ytablespace=(app_data,app_index)以上需要注意的是?為了在 SQL 中執(zhí)行 EXP,USERID 必須用三個(gè)引號,在 UNIX 中也必須注意避免“/”的使用?在 816 和以后,必須使用 sysdba 才能操作?這個(gè)命令在 SQL 中必須放置在一行(這里是因?yàn)?/p>

14、顯示問題放在了兩行)3 .拷貝數(shù)據(jù)文件到另一個(gè)地點(diǎn),即目標(biāo)數(shù)據(jù)庫可以是 cp(unix)或 copy(windows)或通過 ftp 傳輸文件(一定要在 bin 方式)4 .把本地的表空間設(shè)置為讀寫5 .在目標(biāo)數(shù)據(jù)庫附加該數(shù)據(jù)文件impfile=expdat.dmpuserid=sys/passwasdsysdbatransport_tablespace=y“datafile=(c:app_index)”6 .設(shè)置目標(biāo)數(shù)據(jù)庫表空間為讀寫altertablespaceapp_datareadwrite;altertablespaceapp_indexreadwrite;優(yōu)化 EXP/IMP 的方

15、法:當(dāng)需要 exp/imp 的數(shù)據(jù)量比較大時(shí),這個(gè)過程需要的時(shí)間是比較長的,我們可以用一些方法來優(yōu)化 exp/imp 的操作。exp:使用直接路徑 direct=yoracle 會(huì)避開 sql 語句處理引擎,直接從數(shù)據(jù)庫文件中讀取數(shù)據(jù),然后寫入導(dǎo)出文件.可以在導(dǎo)出日志中觀察到:exp-00067:tablexxxwillbeexportedinconventionalpath如果沒有使用直接路徑,必須保證 buffer 參數(shù)的值足夠大.有一些參數(shù)于 direct=y 不兼容,無法用直接路徑導(dǎo)出可移動(dòng)的 tablespace,或者用 query參數(shù)導(dǎo)出數(shù)據(jù)庫子集.當(dāng)導(dǎo)入導(dǎo)出的數(shù)據(jù)庫運(yùn)行在不同的

16、os 下時(shí),必須保證 recordlength 參數(shù)的值一致.imp:通過以下幾個(gè)途徑優(yōu)化 1.避免磁盤排序?qū)?sort_area_size 設(shè)置為一個(gè)較大的值,比如 100M7 .避免日志切換等待增加重做日志組的數(shù)量,增大日志文件大小.8 .優(yōu)化日志緩沖區(qū)比如將 log_buffer 容量擴(kuò)大 10 彳(最大不要超過 5M)9 .使用陣列插入與提交 commit=y注意:陣列方式不能處理包含 LOB 和 LONG 類型的表,對于這樣的 table,如果使用 commit=y,每插入一行,就會(huì)執(zhí)行一次提交.10 使用 NOLOGGING 方式減小重做日志大小在導(dǎo)入時(shí)指定參數(shù) indexes=n

17、,只導(dǎo)入數(shù)據(jù)而忽略 index,在導(dǎo)完數(shù)據(jù)后在通過腳本創(chuàng)建 index,指定 NOLOGGING 選項(xiàng)導(dǎo)出/導(dǎo)入與字符集進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出時(shí),我們要注意關(guān)于字符集的問題。在 EXP/IMP 過程中我們需要注意四個(gè)字符集的參數(shù):導(dǎo)出端的客戶端字符集,導(dǎo)出端數(shù)據(jù)庫字符集,導(dǎo)入端的客戶端字符集,導(dǎo)入端數(shù)據(jù)庫字符集。我們首先需要查看這四個(gè)字符集參數(shù)。查看數(shù)據(jù)庫的字符集的信息:SQLselect*fromnls_database_parameters;PARAMETERVALUEAMERICANAMERICA$AMERICA.,ZHS16GBKGREGORIANDD-MON-RRAMERICANBINA

18、RYHH.MI.SSXFFAMDD-MON-RRHH.MI.SSXFFAMHH.MI.SSXFFAMTZH:TZMDD-MON-RRHH.MI.SSXFFAMTZH:TZM$BINARYZHS16GBK.1NLS_CHARACTERSETZHS16GBK前數(shù)據(jù)庫的字符集。我們再來查看客戶端的字符集信息:客戶端字符集的參數(shù) NLS_LANG=_.language:指定 oracle 消息使用的語言,日期中日和月的顯示。Territory:指定貨幣和數(shù)字的格式,地區(qū)和計(jì)算星期及日期的習(xí)慣。Characterset:控制客戶端應(yīng)用程序使用的字符集。通常設(shè)置或等于客戶端的代碼頁。或者對于

19、 Unicode 應(yīng)用設(shè)為 UTF&在 windows 中,查詢和修改 NLS_LANG 可在注冊表中進(jìn)行:HKEY_LOCAL_MACHINESOFTWAREOracleHOMExxxx 指存在多個(gè) Oracle_HOME 時(shí)的系統(tǒng)編號。在 unix 中:$env|grepNLS_LANGNLS_LANG=simplifiedchinese_china.ZHS16GBK 修改可用:$exportNLS_LANG=AMERICAN_AMERICA.UTF8通常在導(dǎo)出時(shí)最好把客戶端字符集設(shè)置得和數(shù)據(jù)庫端相同。當(dāng)進(jìn)行數(shù)據(jù)導(dǎo)入時(shí),主要有以下兩種情況:(1)源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫具有相同的字符集

20、設(shè)置。這時(shí),只需設(shè)置導(dǎo)出和導(dǎo)入端的客戶端 NLS_LANG 等于數(shù)據(jù)庫字符集即可。(2)源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫字符集不同。先將導(dǎo)出端客戶端的 NLS_LANG 設(shè)置成和導(dǎo)出端的數(shù)據(jù)庫字符集一致,導(dǎo)出數(shù)據(jù),然后將導(dǎo)入端客戶端的 NLS_LANG 設(shè)置成和導(dǎo)出端一致,導(dǎo)入數(shù)據(jù),這樣轉(zhuǎn)換只發(fā)生在數(shù)據(jù)庫端,而且只發(fā)生一次。這種情況下,只有當(dāng)導(dǎo)入端數(shù)據(jù)庫字符集為導(dǎo)出端數(shù)據(jù)庫字符集的嚴(yán)格超集時(shí),數(shù)據(jù)才能完全導(dǎo)成功,否則,可能會(huì)有數(shù)據(jù)不一致或亂碼出現(xiàn)。NLS_LANGUAGENLS_TERRITORYNLS_CURRENCYNLS_ISO_CURRENCYNLS_NUMERIC_CHARACTERSNLS_C

21、HARACTERSETNLS_CALENDARNLS_DATE_FORMATNLS_DATE_LANGUAGENLS_SORTNLS_TIME_FORMATNLS_TIMESTAMP_FORMATNLS_TIME_TZ_FORMATNLS_TIMESTAMP_TZ_FORMATNLS_DUAL_CURRENCYNLS_COMPNLS_NCHAR_CHARACTERSETNLSRDBMSVERSION不同版本的 EXP/IMP 問題一般來說, 從低版本導(dǎo)入到高版本問題不大, 麻煩的是將高版本的數(shù)據(jù)導(dǎo)入到低版本中, 在Oracle9i之前,不同版本 Oracle 之間的 EXP/IMP 可以通過下

22、面的方法來解決:1、在高版本數(shù)據(jù)庫上運(yùn)行底版本的 catexp.sql;2、使用低版本的 EXP 來導(dǎo)出高版本的數(shù)據(jù);3、使用低版本的 IMP 將數(shù)據(jù)庫導(dǎo)入到低版本數(shù)據(jù)庫中;4、在高版本數(shù)據(jù)庫上重新運(yùn)行高版本的 catexp.sql 腳本。但在 9i 中,上面的方法并不能解決問題。如果直接使用低版本 EXP/IMP 會(huì)出現(xiàn)如下錯(cuò)誤:EXP-00008:orACLEerror%luencounteredorA-00904:invalidcolumnname這已經(jīng)是一個(gè)公布的 BUG,需要等到 Oracle10.0 才能解決,BUG 號為 2261722,你可以到METALINK 上去查看有關(guān)此 BUG 的詳細(xì)信息。BUG 歸 BUG,我們的工作還是要做,在沒有 Oracle 的支持之前,我們就自己解決。在 Oracle9i中執(zhí)行下面

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論