海量資料遷移之資料抽取流程

jeanron100發表於2015-03-12
在之前的一些博文中花了大篇幅介紹了採用外部表抽取的一些細節,可能細節到了,基本原理的內容還希望再補充補充。
採用外部表抽取資料的流程圖如下:


大體標註了一下抽取的基本結構,我們會盡量保證不去碰原本的資料來源,會建立兩個臨時的使用者,一個是隻讀使用者,這個使用者上只有同義詞,只具有資料來源中的select許可權。這就對應上面紅色標註的1,而另外一個使用者是外部表使用者,所有透過建立外部表都會在這個使用者下進行,生成了dump檔案之後,我們可以隨時刪除外部表,這個時候為了保證相關的drop操作不會牽扯到資料來源,外部表使用者會繼承只讀使用者中的select許可權。這就對應紅色標註的2.
當開始抽取資料的時候,會去查詢是否有許可權讀取資料,會找到只讀使用者,最終能夠讀取資料來源的資料,這就對應紅色標註的3,4
當滿足了基本的條件,就開始生成外部表的dump,可以為一個表生成多個dump,而且這個過程是並行的,這就對應紅色標註的5

對於步驟5,是抽取的關鍵,基本的原理可以參考下面的虛擬碼,黃色標註的重點部分。

CREATE TABLE MO1_MEMO_EXT

    ORGANIZATION EXTERNAL

   (

     TYPE ORACLE_DATAPUMP

     DEFAULT DIRECTORY xxxxx

     LOCATION (

    ‘xxxx1.dmp’,‘xxxx2.dmp’)

    )

    parallel xx   as

    SELECT  /*+ parallel(t xx) */

  *

    FROM 只讀使用者.MO1_MEMO;

我們使用了外部表的oracle_datapump引擎,可以在指定的目錄下生成多個dump檔案,我們可以指定並行度,指定多個dump的名稱等等。這些都需要透過程式設計來控制和管理這些複雜的部分。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1457835/,如需轉載,請註明出處,否則將追究法律責任。

相關文章