首页 > 数据库 > Oracle > 使用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博客 ” ,链接:https://blog.itpub.net/222350/viewspace-907899/ ,如需转载,请注明出处,否则将追究法律责任。