Conventional Path Export和Direct Path Export
exp時direct=y的作用
[@more@]Conventional Path Export和Direct Path Export
從Oracle7的release7.3開始,Oracle開始在exp工具中提供兩種方法匯出表的資料:Direct Path匯出和Conventional Path匯出。透過exp的引數Direct來判斷選用那種匯出方式。這個引數有兩個值Y/N,如果指定為Y,則表明exp是使用Direct Path的模式匯出資料,指定為N,表明資料庫是用Conventional Path的模式匯出資料的。如果不明確指定direct的值,預設是N,也就是用Conventional Path的模式匯出資料
一、兩種匯出的模式在匯出的原理上是存在差別的。
Ø Conventional Path模式匯出相當於使用select語句從表中取出資料,資料從磁碟上先讀到buffer cache中,記錄被轉移到一個評估檢測的緩衝區中,資料經過語法檢測後沒有問題,將資料傳給exp的客戶端,最後寫入匯出的檔案中。
Ø 如果使用Direct Path模式匯出,資料直接從磁碟上讀取到匯出的PGA中:記錄直接被轉換匯出會話的私有buffer中。這也就是意味著SQL語句處理層被忽略掉了,因為資料已經是符合匯出的格式了,不需要其他的轉換處理了。資料直接被傳送給匯出的客戶端,最後寫入匯出檔案。
二、兩種匯出模式效能上也有一定的差異。
Ø Direct Path匯出模式速度上明顯快於Conventional Path匯出模式,因為Direct Path匯出模式忽略了SQL語句處理這一層。
Ø 當使用Direct Path匯出模式的時候,可以增大引數RECORDLENGTH的值來提高匯出的效能。匯出的效能主要取決以下的因素:DB_BLOCK_SIZE、匯出表上列的型別、匯出檔案的I/O層(主要是指匯出檔案儘量要和資料庫的資料檔案在不同的磁碟上,避免I/O上的競爭)。一般來說,引數RECORDLENGTH設定為作業系統I/O的block size或者是DB_BLOCK_SIZE的整數倍,例如64K。
Ø 使用哪種模式匯出資料都不會影響匯入資料,也就是說匯入資料的時間是一樣的。
三、兩種匯出模式都存在一些限制,在某些情況下只能使用其中的一種。
Ø Direct Path匯出模式只能使用命令列或者引數檔案的方式來匯出,不能使用互動式的方式匯出資料,只有Conventional Path匯出模式可以使用互動式的方式。
Ø Direct Path匯出模式不能用於匯出表空間,即設定引數TRANSPORT_TABLESPACES=Y,其他的FULL、USER、TABLE模式均可以使用Direct Path匯出模式。
Ø 在Oracle8i以前的版本里面,如果表裡面存在LOB的物件,是不能使用Direct Path匯出模式匯出表的,如果使用Direct Path匯出模式匯出表,那些存在LOB物件的記錄是不會被匯出的。自從Oracle8i之後,這種限制就被取消了。對於Oracle8i之後的版本,如果使用Direct Path匯出模式匯出表,那些存在LOB物件的記錄是會自動以Conventional Path匯出模式來匯出。但是如果你用低於Oracle8i的客戶端的exp工具的Direct Path匯出模式匯出Oracle8i以上的資料庫存在LOB物件的表,那些包含LOB的記錄還是同樣不會被匯出。
Ø Exp工具中的QUERY引數只能用於Conventional Path匯出模式,QUERY引數允許匯出一個表的滿足一定條件的部分記錄。
Ø Exp工具中的BUFFER引數只能用於Conventional Path匯出模式,BUFFER引數設定了用於fetch記錄的快取的大小,以位元組為單位,即在array中最大數量的記錄。
Ø 引數RECORDLENGTH指定檔案記錄的最大長度,以位元組為單位,即匯出I/O的buffer,最大為64K。這個引數決定了在沒寫入匯出檔案中快取中堆積資料的多少。如果沒有設定這個引數,在大多數平臺的預設值是1024位元組。
Ø 只有當環境變數中的NLS_LANG設定成跟匯出資料庫中的字符集一致的時候才能使用Direct Path匯出模式匯出資料。如果環境變數中的NLS_LANG和資料庫的字符集不一致的時候,匯出就會報類似下面的錯誤:
EXP-41 "Export done in server's UTF8, different from user's character set WE8ISO8859P1"
EXP-0 "Export terminated unsuccessfully".
這種限制只對於Oracle8i及其更低版本的Oracle有效,Oracle8i以上的版本不會出現此類錯誤。
四、兩種匯出模式在安全方面的一些差異。
Ø 對於虛擬資料庫(Virtual Private Database)和Oracle Label Security如果強制使用Conventional Path匯出模式匯出資料,匯出會成功的中止,但是存在類似下面的提示警告:EXP-79 "Data in table %s is protected. Conventional path may only be exporting partial table."
Ø 對於SYS使用者和被授予了EXEMPT ACCESS POLICY許可權的使用者,在匯出資料的時候是不受虛擬資料庫(Virtual Private Database)和Oracle Label Security的影響的,兩種匯出模式均可以使用。但是我們需要注意的是,EXEMPT ACCESS POLICY的許可權很大,在管理資料庫使用者的時候一般不要輕易授予,但是這個許可權不會影響對傳統物件執行SELECT、INSERT、DELETE、UPDATE的操作。
從Oracle7的release7.3開始,Oracle開始在exp工具中提供兩種方法匯出表的資料:Direct Path匯出和Conventional Path匯出。透過exp的引數Direct來判斷選用那種匯出方式。這個引數有兩個值Y/N,如果指定為Y,則表明exp是使用Direct Path的模式匯出資料,指定為N,表明資料庫是用Conventional Path的模式匯出資料的。如果不明確指定direct的值,預設是N,也就是用Conventional Path的模式匯出資料
一、兩種匯出的模式在匯出的原理上是存在差別的。
Ø Conventional Path模式匯出相當於使用select語句從表中取出資料,資料從磁碟上先讀到buffer cache中,記錄被轉移到一個評估檢測的緩衝區中,資料經過語法檢測後沒有問題,將資料傳給exp的客戶端,最後寫入匯出的檔案中。
Ø 如果使用Direct Path模式匯出,資料直接從磁碟上讀取到匯出的PGA中:記錄直接被轉換匯出會話的私有buffer中。這也就是意味著SQL語句處理層被忽略掉了,因為資料已經是符合匯出的格式了,不需要其他的轉換處理了。資料直接被傳送給匯出的客戶端,最後寫入匯出檔案。
二、兩種匯出模式效能上也有一定的差異。
Ø Direct Path匯出模式速度上明顯快於Conventional Path匯出模式,因為Direct Path匯出模式忽略了SQL語句處理這一層。
Ø 當使用Direct Path匯出模式的時候,可以增大引數RECORDLENGTH的值來提高匯出的效能。匯出的效能主要取決以下的因素:DB_BLOCK_SIZE、匯出表上列的型別、匯出檔案的I/O層(主要是指匯出檔案儘量要和資料庫的資料檔案在不同的磁碟上,避免I/O上的競爭)。一般來說,引數RECORDLENGTH設定為作業系統I/O的block size或者是DB_BLOCK_SIZE的整數倍,例如64K。
Ø 使用哪種模式匯出資料都不會影響匯入資料,也就是說匯入資料的時間是一樣的。
三、兩種匯出模式都存在一些限制,在某些情況下只能使用其中的一種。
Ø Direct Path匯出模式只能使用命令列或者引數檔案的方式來匯出,不能使用互動式的方式匯出資料,只有Conventional Path匯出模式可以使用互動式的方式。
Ø Direct Path匯出模式不能用於匯出表空間,即設定引數TRANSPORT_TABLESPACES=Y,其他的FULL、USER、TABLE模式均可以使用Direct Path匯出模式。
Ø 在Oracle8i以前的版本里面,如果表裡面存在LOB的物件,是不能使用Direct Path匯出模式匯出表的,如果使用Direct Path匯出模式匯出表,那些存在LOB物件的記錄是不會被匯出的。自從Oracle8i之後,這種限制就被取消了。對於Oracle8i之後的版本,如果使用Direct Path匯出模式匯出表,那些存在LOB物件的記錄是會自動以Conventional Path匯出模式來匯出。但是如果你用低於Oracle8i的客戶端的exp工具的Direct Path匯出模式匯出Oracle8i以上的資料庫存在LOB物件的表,那些包含LOB的記錄還是同樣不會被匯出。
Ø Exp工具中的QUERY引數只能用於Conventional Path匯出模式,QUERY引數允許匯出一個表的滿足一定條件的部分記錄。
Ø Exp工具中的BUFFER引數只能用於Conventional Path匯出模式,BUFFER引數設定了用於fetch記錄的快取的大小,以位元組為單位,即在array中最大數量的記錄。
Ø 引數RECORDLENGTH指定檔案記錄的最大長度,以位元組為單位,即匯出I/O的buffer,最大為64K。這個引數決定了在沒寫入匯出檔案中快取中堆積資料的多少。如果沒有設定這個引數,在大多數平臺的預設值是1024位元組。
Ø 只有當環境變數中的NLS_LANG設定成跟匯出資料庫中的字符集一致的時候才能使用Direct Path匯出模式匯出資料。如果環境變數中的NLS_LANG和資料庫的字符集不一致的時候,匯出就會報類似下面的錯誤:
EXP-41 "Export done in server's UTF8, different from user's character set WE8ISO8859P1"
EXP-0 "Export terminated unsuccessfully".
這種限制只對於Oracle8i及其更低版本的Oracle有效,Oracle8i以上的版本不會出現此類錯誤。
四、兩種匯出模式在安全方面的一些差異。
Ø 對於虛擬資料庫(Virtual Private Database)和Oracle Label Security如果強制使用Conventional Path匯出模式匯出資料,匯出會成功的中止,但是存在類似下面的提示警告:EXP-79 "Data in table %s is protected. Conventional path may only be exporting partial table."
Ø 對於SYS使用者和被授予了EXEMPT ACCESS POLICY許可權的使用者,在匯出資料的時候是不受虛擬資料庫(Virtual Private Database)和Oracle Label Security的影響的,兩種匯出模式均可以使用。但是我們需要注意的是,EXEMPT ACCESS POLICY的許可權很大,在管理資料庫使用者的時候一般不要輕易授予,但是這個許可權不會影響對傳統物件執行SELECT、INSERT、DELETE、UPDATE的操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1015925/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- export 和 export default 區別Export
- export和export default的區別Export
- JavaScript中的export、export default、exports和module.exports(export、export default、exports使用詳細)JavaScriptExport
- direct path read/read temp等待事件事件
- [20180905]lob與direct path read.txt
- ES6 export 和 export default的區別Export
- SAP UI5 Gateway Export 和 Client Export 的比較UIGatewayExportclient
- Oracle direct path read相關隱含引數Oracle
- import、require 、export、export default、exports、module exportsImportUIExport
- export/importExportImport
- 6.exports、module.exports、export、export defalutExport
- JavaScript ES6中,export與export defaultJavaScriptExport
- ES6:export 與 export default 區別Export
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write”Oracle事件
- ES6 export && export default 差異總結Export
- vSphere export openstackExport
- 【TUNE_ORACLE】等待事件之IO等待“direct path write temp”Oracle事件
- source 和export 命令的區別Export
- Nodejs中exports和module.exports與ES6中的export default 和 export 區別NodeJSExport
- JavaScript 中的 exportJavaScriptExport
- openGauss lo_exportExport
- Linux之export命令LinuxExport
- csdn_export_mdExport
- Flutter Path(二) : Path 進階Flutter
- Flutter Path(一) : Path 與 CustomPainterFlutterAI
- ubuntu64位系統編譯時標頭檔案找不到的問題(可以檢視g++ -v路徑,設定export C_INCLUDE_PATH,CPLUS_INCLUDE_PATH)Ubuntu編譯Export
- python技巧-使用os.path.join和os.path.sep.joinPython
- JS/TS 的 import 和 export 用法小結JSImportExport
- import,export的支援[nodejs]ImportExportNodeJS
- [BUG反饋]defined('ADDON_PATH') or define('ADDON_PATH', APP_PATH.'Addon');APP
- 你可以說出export export default || model.exports exports 的區別嗎(一)Export
- 詳解es6的export和import命令ExportImport
- crontab on raspberry pi, full path, not relative path, is needed.
- Export/import Datas To/from a Csv FileExportImport
- The Best Way to Export an SVG from SketchExportSVG
- export GIT_PYTHON_REFRESH=quietExportGitPythonUI
- 翻譯|How to Export a Connected ComponentExport
- DB2 export詳解DB2Export