SQL*Loader原理
SQL*Loader是Oracle提供的用于數(shù)據(jù)加載的一種工具,它比較適合業(yè)務(wù)分析類型數(shù)據(jù)庫(數(shù)據(jù)倉庫),能處理多種格式的平面文件,批量數(shù)據(jù)裝載比傳統(tǒng)的數(shù)據(jù)插入效率更高。其示意圖如下:
控制文件:用于控制數(shù)據(jù)導(dǎo)入的行為方式的文件(最重要的文件)。
參數(shù)文件(可選)
數(shù)據(jù)文件:放置源數(shù)據(jù)的平面文件
錯誤文件:在數(shù)據(jù)加載時,把無法正確加載的數(shù)據(jù)放入錯誤文件中(比如數(shù)據(jù)格式問題、數(shù)據(jù)類型問題等)
丟棄文件(可選):有些數(shù)據(jù),雖然數(shù)據(jù)格式、數(shù)據(jù)類型沒有問題,但它被邏輯條件過濾掉了(在控制文件中設(shè)置),會被放入丟失文件
日志文件:記錄SQL*Loader的數(shù)據(jù)加載過程
直接路徑加載
在SQL*Loader里,為了提高性能,一般采用直接路徑加載(設(shè)置Direct = TRUE)。
Oracle提供兩種類型的插入語句:常規(guī)插入(conventional insert)和直接路徑插入(direct-path insert),直接路徑插入以犧牲部分功能為代價,換取高效加載大量數(shù)據(jù)。
直接路徑加載把數(shù)據(jù)直接插入到要修改的段的高水位(HWM)以上,從而生成了最少量的undo(只生成數(shù)據(jù)字典的undo,不生成塊中數(shù)據(jù)的undo),且不通過高速緩存(SGA),因此它的性能比常規(guī)插入要好。
直接路徑加載的限制有:
1)一張表同時只能有一個直接路徑插入,因此不適合小數(shù)據(jù)量的插入,只適合大批量的數(shù)據(jù)加載;
2)在HWM下的空閑空間不會被利用;
3)一張表在做直接路徑插入的同時,同一會話不能對其做任何操作(select都不可以);
4)只有insert inot ... select ... 語句、merge語句和使用OCI直接路徑接口的應(yīng)用程序才可以使用。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
