我在Oracle 11上有一个程序包,它通过ssh从oracle文件夹发送文件到另一个目标(另一台机器或同一台机器上的其他用户)。
包发送文件如下:
host_command(p_command => 'cd /u01/app/oracle/product/11.2.0/db_1/oraclefolder;/usr/bin/scp -p txt.zip anotheruser@127.0.0.1:/home/anotheruser/userfolder');
但是我得到了这个错误:
"Host key verification failed.
Mensaje : ORA-0000: normal, successful completion"
当我在SQL Developer上尝试相同的命令时,它不会给出任何错误但它不起作用(文件未发送):
SET SERVEROUTPUT ON SIZE 1000000
BEGIN
host_command(p_command => 'cd /u01/app/oracle/product/11.2.0/db_1/oraclefolder;/usr/bin/scp -p txt.zip anotheruser@127.0.0.1:/home/anotheruser/userfolder');
END;
/
PL/SQL procedure successfully completed.
当我在linux机器上尝试相同的命令(oracle用户)也可以工作(文件也被发送):
[oracle@machine oraclefolder]$ /usr/bin/scp -p txt.zip anotheruser@127.0.0.1:/home/anotheruser/userfolder
txt.zip 100% 166 0.2KB/s 00:00
[oracle@machine oraclefolder]$
我尝试将文件发送到远程服务器并发生相同的情况,但程序包失败但命令行正常工作 ¿为什么程序包无法发送文件?
更新:同一个包在另一台机器上运行。克隆了数据库,并将此克隆安装在另一台计算机上。这台其他机器可能有其他配置,但我不知道在哪里看。
更新:我知道问题是什么,但我不知道如何解决。当我通过SQL Developer或TOAD运行包时,文件被压缩并由用户“grid”发送,但是当包自己运行(由作业/计划/程序运行)时,文件将被压缩并通过以下方式发送:用户oracle。 ¿谁控制用户创建,压缩或发送文件? ¿我怎么能改变这个?