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 》相關內容