100萬資料載入 sqlldr 能不能再快一點?

來源:互聯網
上載者:User
setp-1 產生資料檔案:

getobject.sql

SELECT a.owner||',"'||a.object_name||'",'||a.object_id||','||to_char(a.created,'yyyy-mm-dd hh24:mi:ss')||','||a.statusFROM dba_objects a, (SELECT rownum rn FROM dual connect BY rownum<=23) b;

call.sql

SET echo offSET term offSET line 100 pages 0SET feedback offSET heading offspool C:\oracle\script\ldr_object.csv@C:\oracle\script\getobject.sqlspool offSET heading onSET feedback onSET term on SET echo on 

 step 0初始化環境:

createobject.sql

CREATE TABLE objects (owner varchar(30),object_name varchar(50),object_id NUMBER,created date,status VARCHAR2(10));CREATE INDEX  idx_obj_owner_name on objects(owner,object_name);

step1:第一次執行匯入

ldr_object.ctl

load datainfile ldr_object.csvtruncate into table objectsfields terminated by "," optionally enclosed by '"'(owner,object_name,object_id,created date 'yyyy-mm-dd hh24:mi:ss',status "substr(:status,1,5)")

C:\oracle\script>sqlldr scott/tiger control=ldr_object.ctl errors=10

ldr_object.log

SQL*Loader: Release 10.2.0.1.0 - Production on 星期五 1月 20 02:16:56 2012Copyright (c) 1982, 2005, Oracle.  All rights reserved.控制檔案:      ldr_object.ctl資料檔案:      ldr_object.csv  錯誤檔案:    ldr_object.bad  廢棄檔案:    未作指定 (可廢棄所有記錄)要載入的數: ALL要跳過的數: 0允許的錯誤: 10綁定數組: 64 行, 最大 256000 位元組繼續:    未作指定所用路徑:       常規表 OBJECTS,已載入從每個邏輯記錄插入選項對此表 TRUNCATE 生效   列名                        位置      長度  中止 封裝資料類型------------------------------ ---------- ----- ---- ---- ---------------------OWNER                               FIRST     *   ,  O (") CHARACTER            OBJECT_NAME                          NEXT     *   ,  O (") CHARACTER            OBJECT_ID                            NEXT     *   ,  O (") CHARACTER            CREATED                              NEXT     *   ,  O (") DATE yyyy-mm-dd hh24:mi:ssSTATUS                               NEXT     *   ,  O (") CHARACTER                列的 SQL 串: "substr(:status,1,5)"表 OBJECTS:  1033298 行 載入成功。  由於資料錯誤, 0 行 沒有載入。  由於所有 WHEN 子句失敗, 0 行 沒有載入。  由於所有欄位都為空白的, 0 行 沒有載入。為綁定數組分配的空間:                 82560 位元組 (64 行)讀取   緩衝區位元組數: 1048576跳過的邏輯記錄總數:          0讀取的邏輯記錄總數:       1033298拒絕的邏輯記錄總數:          0廢棄的邏輯記錄總數:        0從 星期五 1月  20 02:16:56 2012 開始運行在 星期五 1月  20 02:19:02 2012 處運行結束經過時間為: 00: 02: 05.55CPU 時間為: 00: 00: 10.38

step2: 第二次執行匯入

C:\oracle\script>sqlldr scott/tiger control=ldr_object.ctl errors=10 rows=640

.log

SQL*Loader: Release 10.2.0.1.0 - Production on 星期五 1月 20 02:56:28 2012Copyright (c) 1982, 2005, Oracle.  All rights reserved.控制檔案:      ldr_object.ctl資料檔案:      ldr_object.csv  錯誤檔案:    ldr_object.bad  廢棄檔案:    未作指定 (可廢棄所有記錄)要載入的數: ALL要跳過的數: 0允許的錯誤: 10綁定數組: 640 行, 最大 256000 位元組繼續:    未作指定所用路徑:       常規表 OBJECTS,已載入從每個邏輯記錄插入選項對此表 TRUNCATE 生效   列名                        位置      長度  中止 封裝資料類型------------------------------ ---------- ----- ---- ---- ---------------------OWNER                               FIRST     *   ,  O (") CHARACTER            OBJECT_NAME                          NEXT     *   ,  O (") CHARACTER            OBJECT_ID                            NEXT     *   ,  O (") CHARACTER            CREATED                              NEXT     *   ,  O (") DATE yyyy-mm-dd hh24:mi:ssSTATUS                               NEXT     *   ,  O (") CHARACTER                列的 SQL 串: "substr(:status,1,5)"ROWS 參數所用的值已從 640 更改為 198表 OBJECTS:  1033298 行 載入成功。  由於資料錯誤, 0 行 沒有載入。  由於所有 WHEN 子句失敗, 0 行 沒有載入。  由於所有欄位都為空白的, 0 行 沒有載入。為綁定數組分配的空間:                255420 位元組 (198 行)讀取   緩衝區位元組數: 1048576跳過的邏輯記錄總數:          0讀取的邏輯記錄總數:       1033298拒絕的邏輯記錄總數:          0廢棄的邏輯記錄總數:        0從 星期五 1月  20 02:56:28 2012 開始運行在 星期五 1月  20 02:57:48 2012 處運行結束經過時間為: 00: 01: 20.91CPU 時間為: 00: 00: 09.45

嗯,加快了45s

setp3 第三次執行匯入

使用direct參數

C:\oracle\script>sqlldr scott/tiger control=ldr_object.ctl errors=10 direct=true

log

SQL*Loader: Release 10.2.0.1.0 - Production on 星期五 1月 20 03:44:39 2012Copyright (c) 1982, 2005, Oracle.  All rights reserved.控制檔案:      ldr_object.ctl資料檔案:      ldr_object.csv  錯誤檔案:    ldr_object.bad  廢棄檔案:    未作指定 (可廢棄所有記錄)要載入的數: ALL要跳過的數: 0允許的錯誤: 10繼續:    未作指定所用路徑:       直接表 OBJECTS,已載入從每個邏輯記錄插入選項對此表 TRUNCATE 生效   列名                        位置      長度  中止 封裝資料類型------------------------------ ---------- ----- ---- ---- ---------------------OWNER                               FIRST     *   ,  O (") CHARACTER            OBJECT_NAME                          NEXT     *   ,  O (") CHARACTER            OBJECT_ID                            NEXT     *   ,  O (") CHARACTER            CREATED                              NEXT     *   ,  O (") DATE yyyy-mm-dd hh24:mi:ssSTATUS                               NEXT     *   ,  O (") CHARACTER                列的 SQL 串: "substr(:status,1,5)"表 OBJECTS 的以下索引已處理:索引 SCOTT.IDX_OBJ_OWNER_NAME 已成功載入, 具有 1033298 個關鍵字表 OBJECTS:  1033298 行 載入成功。  由於資料錯誤, 0 行 沒有載入。  由於所有 WHEN 子句失敗, 0 行 沒有載入。  由於所有欄位都為空白的, 0 行 沒有載入。  日期快取:   最大大小:      1000   條目數:       892   命中數    :   1032406   未命中數  :         0在直接路徑中沒有使用綁定數組大小。列數組  行數:    5000流緩衝區位元組數:  256000讀取   緩衝區位元組數: 1048576跳過的邏輯記錄總數:          0讀取的邏輯記錄總數:       1033298拒絕的邏輯記錄總數:          0廢棄的邏輯記錄總數:        0由 SQL*Loader 主線程載入的流緩衝區總數:      302由 SQL*Loader 載入線程載入的流緩衝區總數:      201從 星期五 1月  20 03:44:39 2012 開始運行在 星期五 1月  20 03:45:11 2012 處運行結束經過時間為: 00: 00: 32.17CPU 時間為: 00: 00: 06.19

嗯,現在只要半分鐘零一點就好了

setp 4 執行第四次匯入

加大流儲存區,加大日期格式緩衝區

C:\oracle\script>sqlldr scott/tiger control=ldr_object.ctl errors=10 direct=true streamsize=10485760 date_cache=5000

log

SQL*Loader: Release 10.2.0.1.0 - Production on 星期五 1月 20 03:48:27 2012Copyright (c) 1982, 2005, Oracle.  All rights reserved.控制檔案:      ldr_object.ctl資料檔案:      ldr_object.csv  錯誤檔案:    ldr_object.bad  廢棄檔案:    未作指定 (可廢棄所有記錄)要載入的數: ALL要跳過的數: 0允許的錯誤: 10繼續:    未作指定所用路徑:       直接表 OBJECTS,已載入從每個邏輯記錄插入選項對此表 TRUNCATE 生效   列名                        位置      長度  中止 封裝資料類型------------------------------ ---------- ----- ---- ---- ---------------------OWNER                               FIRST     *   ,  O (") CHARACTER            OBJECT_NAME                          NEXT     *   ,  O (") CHARACTER            OBJECT_ID                            NEXT     *   ,  O (") CHARACTER            CREATED                              NEXT     *   ,  O (") DATE yyyy-mm-dd hh24:mi:ssSTATUS                               NEXT     *   ,  O (") CHARACTER                列的 SQL 串: "substr(:status,1,5)"表 OBJECTS 的以下索引已處理:索引 SCOTT.IDX_OBJ_OWNER_NAME 已成功載入, 具有 1033298 個關鍵字表 OBJECTS:  1033298 行 載入成功。  由於資料錯誤, 0 行 沒有載入。  由於所有 WHEN 子句失敗, 0 行 沒有載入。  由於所有欄位都為空白的, 0 行 沒有載入。  日期快取:   最大大小:      5000   條目數:       892   命中數    :   1032406   未命中數  :         0在直接路徑中沒有使用綁定數組大小。列數組  行數:    5000流緩衝區位元組數:10485760讀取   緩衝區位元組數: 1048576跳過的邏輯記錄總數:          0讀取的邏輯記錄總數:       1033298拒絕的邏輯記錄總數:          0廢棄的邏輯記錄總數:        0由 SQL*Loader 主線程載入的流緩衝區總數:      302由 SQL*Loader 載入線程載入的流緩衝區總數:        0從 星期五 1月  20 03:48:27 2012 開始運行在 星期五 1月  20 03:48:53 2012 處運行結束經過時間為: 00: 00: 25.39CPU 時間為: 00: 00: 06.38

順利突破30s

我相信,隨著我繼續學習,對各個參數的熟悉,還能再快點~

參考《塗抹oracle 》相關內容

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.