利用DBMS_FILE_TRANSFER传输数据库文件
從Oracle 10g開始,Oracle提供了DBMS_FILE_TRANSFER這么一個程序包,可以方便地在本地數(shù)據(jù)庫和遠程數(shù)據(jù)庫,ASM和文件系統(tǒng)間傳輸數(shù)據(jù)庫文件。這樣數(shù)據(jù)庫文件的傳輸就方便了許多,尤其是在傳輸基于ASM存儲的數(shù)據(jù)文件時,不再局限于利用RMAN來進行傳輸。下面介紹一下這個包的用法。
DBMS_FILE_TRANSFER包一共包含了3個存儲過程,分別提供本機之間、本機從遠程主機抓取以及本機上傳至遠程主機三種傳輸數(shù)據(jù)庫文件的功能。要求傳輸用戶有對源目錄讀和對目標(biāo)目錄寫的權(quán)限,單個數(shù)據(jù)庫文件必須是512字節(jié)的整數(shù)倍并且文件大小必須小于或者等于2TB。
1、COPY_FILE。可以在數(shù)據(jù)庫本機的文件系統(tǒng)之間,ASM磁盤組之間或者文件系統(tǒng)和ASM磁盤組之間方便地傳輸數(shù)據(jù)庫文件。
DBMS_FILE_TRANSFER.COPY_FILE(
source_directory_object IN VARCHAR2,–源目錄
source_file_name IN VARCHAR2,–源文件名
destination_directory_object IN VARCHAR2,–目標(biāo)目錄
destination_file_name IN VARCHAR2);–目標(biāo)文件名
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。從遠程數(shù)據(jù)庫讀取數(shù)據(jù)庫文件并在本機的文件系統(tǒng)或者ASM磁盤組上創(chuàng)建一份復(fù)制文件。
DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object IN VARCHAR2,
source_file_name IN VARCHAR2,
source_database IN VARCHAR2, –到遠程數(shù)據(jù)庫的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。在本地數(shù)據(jù)庫將數(shù)據(jù)庫文件傳輸至遠程數(shù)據(jù)庫的文件系統(tǒng)或者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); –到目標(biāo)數(shù)據(jù)庫的db link名
begin
DBMS_FILE_TRANSFER.COPY_FILE(‘DATA’,'system.286.650339101′, ‘TEST2′,’system.dbf’, ‘lnk_test’);
end;
/
總結(jié)
以上是生活随笔為你收集整理的利用DBMS_FILE_TRANSFER传输数据库文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 传输表空间简介
- 下一篇: Oracle数据库索引失效,引起Gold