前面介绍了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 |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
Oracle 10g/11g Latch机制的变化
Oracle的Latch机制采用spin来进行持有CPU的不断尝试,虽然通常Latch的获取会非常快(一般在微秒级),但是很多时候Latch竞争还是会引发极为严重的CPU争用。
-
Oracle10g DBCONSOLE 服务无法启动的解决方法
EM工具是Oracle10g推出的web方式的数据库控制台管理工具,此工具采用三层的技术架构,工具比较直观,使用方便。而DBCONSOLE服务是EM工具的服务程序。
-
详解Oracle 10g中关于序列的使用
在Oracle中如果要设定一个独立表结构的主键为自增,其中就涉及到了 Oracle 10G中关于序列(Sequence)的使用。
-
无法在Windows Vista中安装Oracle 10g
在Windows Vista中安装Oracle 10g数据库,系统不断提示错误信息,要求运行还原程序,专家给出了出错原因。