ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle10g新增DBMS_FILE_TRANSFER包(二)

Oracle10g新增DBMS_FILE_TRANSFER包(二)

原创 Linux操作系统 作者:yangtingkun 时间:2009-05-07 22:29:12 0 删除 编辑

Oracle10g新增了DBMS_FILE_TRANSFER包,通过数据库的功能实现了文件的传输。

这篇介绍GET_FILEPUT_FILE过程。

Oracle10g新增DBMS_FILE_TRANSFER包(一):http://yangtingkun.itpub.net/post/468/484002

 

 

前面介绍了COPY_FILE,这里介绍这个包的另外两个过程,GET_FILEPUT_FILE。这两个过程的功能和FTPgetput命令是否类似,就是利用数据库的功能将文件在两个数据库服务器之间进行拷贝。和COPY_FILE过程唯一不同之处在于,GET_FILEPUT_FILE过程多了一个参数,这个参数用来指定数据库链信息。

[oracle@yanttest ~]$ export ORACLE_SID=testzj
[oracle@yanttest ~]$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 5 7 15:31:47 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, OLAP and Data Mining options

SQL> select directory_path
  2  from dba_directories
  3  where directory_name = 'D_OUTPUT';

未选定行

SQL> create directory d_output as '/home/oracle';

目录已创建。

SQL> grant read, write on directory d_output to test;

授权成功。

在远端数据库做好DIRECTORY的准备工作。

bash-2.03$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期六 3 7 19:15:24 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> grant execute on dbms_file_transfer to test;

授权成功。

SQL> grant read, write on directory d_output to test;

授权成功。

SQL> conn test/test
已连接。
SQL> create database link testzj           
  2  connect to test
  3  identified by test
  4  using '172.25.13.231/testzj';

数据库链接已创建。

SQL> begin
  2  sys.dbms_file_transfer.put_file(
  3  'D_OUTPUT',
  4  'spfiletestrac.ora',
  5  'D_OUTPUT',
  6  'spfiletestzj.ora',
  7  'TESTZJ');
  8  end;
  9  /

PL/SQL 过程已成功完成。

已经将本地/export/home/oracle目录下的spfiletestrac.ora文件拷贝到远端站点,下面在利用GET_FILE,从远端读取文件:

SQL> begin
  2  sys.dbms_file_transfer.get_file(
  3  'D_OUTPUT',
  4  'spfiletestzj.ora',
  5  'TESTZJ',
  6  'D_OUTPUT',
  7  'spfiletestrac.bak');
  8  end;
  9  /

PL/SQL 过程已成功完成。

需要注意,这个过程的执行要求本地数据库和远端数据库的版本都是10g以上,否则会出现错误:

SQL> create database link testdata94.emedchina.com
  2  connect to test
  3  identified by test
  4  using '172.25.88.94/testdata';

数据库链接已创建。

SQL> select * from v$version@testdata94.emedchina.com;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE    9.2.0.3.0       Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production

SQL> col directory_path format a50
SQL> set pages 100 lines 120
SQL> select directory_name, directory_path from all_directories@testdata94.emedchina.com;

DIRECTORY_NAME                 DIRECTORY_PATH
------------------------------ --------------------------------------------------
DIR_TEST                       /home/oracle/test
D_TEST                         /data/oradata/testdata

SQL> exec sys.dbms_file_transfer.put_file('D_OUTPUT', 'spfiletestzj.ora', 'D_TEST', 'spfiletestzj.ora', 'TESTDATA94.EMEDCHINA.COM')
BEGIN sys.dbms_file_transfer.put_file('D_OUTPUT', 'spfiletestzj.ora', 'D_TEST', 'spfiletestzj.ora', 'TESTDATA94.EMEDCHINA.COM'); END;

*
1 行出现错误:
ORA-03115:
不支持的网络数据类型或表示法
ORA-02063:
紧接着 line (起自 TESTDATA94.EMEDCHINA.COM)
ORA-06512:
"SYS.DBMS_FILE_TRANSFER", line 60
ORA-06512:
"SYS.DBMS_FILE_TRANSFER", line 168
ORA-06512:
line 1

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-594462/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10438334