利用DBMS_FILE_TRANSFER传输数据库文件
從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;
/
總結
以上是生活随笔為你收集整理的利用DBMS_FILE_TRANSFER传输数据库文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 传输表空间简介
- 下一篇: 批处理如何清除文本文档里面的重复行