使用Oracle 10g複製檔案

litterbaby發表於2007-04-01

Oracle 10g複製檔案

[@more@]

Oracle 10g複製檔案

1、在作業系統上建立兩個目錄:

Last login: Sun Aug 20 15:05:45 from 192.168.0.1

Sun Microsystems Inc. SunOS 5.10 Generic January 2005

$ /bin/bash

bash-3.00$ pwd

/opt/oracle

bash-3.00$ cd kb

bash-3.00$ mkdir s_dir

bash-3.00$ mkdir d_dir

bash-3.00$ ls -l

total 72

drwxr-xr-x 2 oracle oinstall 512 8 20 15:11 d_dir

drwxr-xr-x 2 oracle oinstall 512 8 20 15:10 s_dir

2、在Oracle上建立兩個directory

SQL> create directory source_dir as '/opt/oracle/kb/s_dir';

Directory created.

SQL> create directory dest_dir as '/opt/oracle/kb/d_dir';

Directory created.

3、透過檢視檢視dba_directories,可以看到建立的兩個目錄的資訊。

SQL> select * from dba_directories;

OWNER DIRECTORY_NAME

------------------------------ ------------------------------

DIRECTORY_PATH

--------------------------------------------------------------------------------

SYS SOURCE_DIR

/opt/oracle/kb/s_dir

SYS DEST_DIR

/opt/oracle/kb/d_dir

4、使用過程將檔案複製。

begin

dbms_file_transfer.copy_file(

source_directory_object => 'source_dir',

source_file_name => 'hello.txt',

destination_directory_object => 'dest_dir',

destination_file_name => 'copy.txt'

);

END;

/

檔案的複製可以是本地之間,也可以是和遠端資料庫之間的資料檔案的傳送。與遠端資料庫之間應該是現將資料檔案put到一個目錄下,然後在有遠端資料庫get,這個和ftp相類似。

傳送檔案的限制,檔案的大小必須是512位元組的倍數,並且小於2TB。否則回出現以下的錯誤:

ORA-19505: failed to identify file "/opt/oracle/kb/s_dir/hello.txt"

ORA-27046: file size is not a multiple of logical block size

在傳送資料檔案是沒有字符集的轉換,被複製的檔案應該是屬於Oracle資料庫。可以透過檢視V$SESSION_LONGOPS監視複製的程式。

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

相關文章