oracle dbms_file,Oracle10g新增DBMS_FILE_TRANSFER包(二)

本文介绍了Oracle 10g中新增的DBMS_FILE_TRANSFER包,详细讲解了GET_FILE和PUT_FILE过程,它们通过数据库功能实现文件在数据库服务器间的高效传输,特别提到了数据库链路设置和权限管理的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

这篇介绍GET_FILE和PUT_FILE过程。

前面介绍了COPY_FILE,这里介绍这个包的另外两个过程,GET_FILE和PUT_FILE。这两个过程的功能和FTP的get和put命令是否类似,就是利用数据库的功能将文件在两个数据库服务器之间进行拷贝。和COPY_FILE过程唯一不同之处在于,GET_FILE和PUT_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值