【流雲】利用DBMS_FILE_TRANSFER傳輸資料庫檔案

idba發表於2008-06-07

從Oracle 10g開始,Oracle提供了DBMS_FILE_TRANSFER這麼一個程式包,可以方便地在本地資料庫和遠端資料庫,ASM和檔案系統間傳輸資料庫檔案。這樣資料庫檔案的傳輸就方便了許多,尤其是在傳輸基於ASM儲存的資料檔案時,不再侷限於利用RMAN來進行傳輸。下面介紹一下這個包的用法。

DBMS_FILE_TRANSFER包一共包含了3個儲存過程,分別提供本機之間、本機從遠端主機抓取以及本機上傳至遠端主機三種傳輸資料庫檔案的功能。要求傳輸使用者有對源目錄讀和對目標目錄寫的許可權,單個資料庫檔案必須是512位元組的整數倍並且檔案大小必須小於或者等於2TB。

1、COPY_FILE。可以在資料庫本機的檔案系統之間,ASM磁碟組之間或者檔案系統和ASM磁碟組之間方便地傳輸資料庫檔案。

DBMS_FILE_TRANSFER.COPY_FILE(
source_directory_object IN VARCHAR2,–源目錄
source_file_name IN VARCHAR2,–原始檔名
destination_directory_object IN VARCHAR2,–目標目錄
destination_file_name IN VARCHAR2);–目標檔名

SQL> create directory data as ‘+DATA/HELLODB/DATAFILE’;
SQL> create directory test as ‘+TEST/HELLODB/DATAFILE’;
SQL> exec DBMS_FILE_TRANSFER.PUT_FILE(’DATA’,’system.286.650339101′, ‘TEST’,’system.dbf’)
ASMCMD> ls -a
+TEST/HELLODB/DATAFILE/system.dbf => COPY_FILE.256.654701983

2、GET_FILE。從遠端資料庫讀取資料庫檔案並在本機的檔案系統或者ASM磁碟組上建立一份複製檔案。

DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
source_database IN VARCHAR2, –到遠端資料庫的db link名
destination_directory_object IN VARCHAR2,
destination_file_name IN VARCHAR2);

begin
DBMS_FILE_TRANSFER.GET_FILE(’DATA’,’system.286.650339101′, ‘lnk_test’,’TEST1′,’system.dbf’);
end;
/

3、PUT_FILE。在本地資料庫將資料庫檔案傳輸至遠端資料庫的檔案系統或者ASM磁碟組。

DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
destination_directory_object IN VARCHAR2,
destination_file_name IN VARCHAR2,
destination_database IN VARCHAR2); –到目標資料庫的db link名

begin
DBMS_FILE_TRANSFER.COPY_FILE(’DATA’,’system.286.650339101′, ‘TEST2′,’system.dbf’, ‘lnk_test’);
end;
/

<!--

--EOF--

Trackback:http://rdc.taobao.com/blog/dba/html/146_dbms-file-transfer.html/trackback

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

相關文章