Oracle 10g使用DBMS_FILE_TRANSFER包在ASM和作業系統之間拷貝檔案

tangyunoracle發表於2013-12-26
DBMS_FILE_TRANSFER是Oracle用於ASM和作業系統之間拷貝檔案的包,不要小看這個包(當然在11g中有很多增強,或許這個包就顯得沒那麼有用了),這個包的存在使得使用者可以在不離開SQLPLUS就可以執行作業系統中才能執行的copy命令,而且可以通過包的呼叫實現在ASM和作業系統之間拷貝檔案。有了這個包,可以在兩個Oracle伺服器直接通過資料庫鏈的方式拷貝2進位制檔案,雖然對檔案的大小有一定的要求,必須是512位元組的整數倍,必須小於2T位元組。但是對於絕大部分Oracle處理的檔案都滿足這個要求。使用這個包,可以實現資料庫在遠端伺服器上備份,也可以實現將包含BFILE型別的表,連同作業系統上對應的二進位制檔案一同複製到遠端資料庫中。
這裡先簡單介紹一下COPY_FILE過程。COPY_FILE過程用於在本地伺服器上拷貝檔案,這個過程的最大用處在於可以在ASM和作業系統之間拷貝檔案。
bash-2.03$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 星期六 3月 7 01:41:17 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> col directory_path format a50
SQL> select directory_name, directory_path from dba_directories;
DIRECTORY_NAME       DIRECTORY_PATH
------------------  --------------------------------------------------
D_OUTPUT             /export/home/oracle
D_TEST               /data1
D_DIR_FOR_GETDBID   +DISK/testrac/datafile
WORK_DIR            /data/oracle/product/10.2/database/work
D_DMPDP             /data
ADMIN_DIR           /data/oracle/product/10.2/database/md/admin
DATA_PUMP_DIR       /data/oracle/product/10.2/database/rdbms/log/
已選擇7行。
SQL> show parameter spfile
NAME       TYPE        VALUE
---------  ----------- ------------------------------
spfile     string        +DISK/testrac/spfiletestrac.ora
SQL> create directory d_asm_spfile as '+DISK/testrac';
目錄已建立。
SQL> exec dbms_file_transfer.copy_file('D_ASM_SPFILE', 'spfiletestrac.ora', 'D_OUTPUT', 'spfiletestrac.ora')
PL/SQL 過程已成功完成。
SQL> host
$ ls -l /export/home/oracle/spfile*.ora
-rw-r----- 1 oracle oinstall 8704 Mar 7 01:44 /export/home/oracle/spfiletestrac.ora
當然這個過程也可以用於作業系統上拷貝檔案,或在ASM中拷貝檔案。

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

相關文章