utl文件frename(mv)不起作用 - 29292

时间:2017-03-13 13:48:00

标签: linux oracle bash unix

我安装了一个共享的sftp目录

  

\ xx.xx.xx.xx \ SFTP_AX \ / sftp / cifs   用户,UID = 54321,GID = 54321,SUID,用户名=用户,密码=通过,工作组=应用,file_mode = 0775,dir_mode = 0775,RW   0 0

然后是一个将我的文件移动到另一个安装目录的PL / SQL 使用UTL_FILE

这是一个例子

这是我创建目录的方式

  

创建或替换目录       SFTP_DIR AS       '/ SFTP /';

GRANT READ, WRITE ON DIRECTORY SFTP_DIR TO SCHEMA1;

GRANT READ, WRITE ON DIRECTORY SFTP_DIR TO SCHEMA2;

这里是ls -l / sftp和/ ext / files(775)

drwxrwxr-x 2 oracle oinstall  4096 Mar 13 14:24 sftp
drwxrwxr-x 6 oracle oinstall  4096 Mar 13 14:40 ext/files

所以,当我执行

DECLARE
  sftp_folder  VARCHAR2(50)          := 'SFTP_DIR';
  l_file_test  CONSTANT VARCHAR2(50) := 'test.txt';
  external_dir VARCHAR2(50)          := 'EXTERNAL_DIR';
BEGIN
  UTL_FILE.FRENAME(sftp_folder, l_file_test, external_dir, l_file_test, true);
END;

我得到了

  
      
  1. 00000 - “文件重命名操作失败”   *原因:操作系统拒绝了文件重命名尝试          或者因为源目录或目标目录没有          存在或不可访问,或源文件无法访问,          或目标文件存在。   *操作:验证源文件,源目录和目标          目录存在且可访问,以及目标          文件尚不存在。
  2.   

我已检查过所有内容,文件存在,权限是对的(IMO)

由于我无法弄清楚,我采取了这样的方法 我在ext / files中复制我的文件(使用FCOPY,它可以工作) 然后我使用FREMOVE删除我的文件..猜猜是什么..这有用 这怎么可能?事实上,这就像复制一样,而不是删除文件..

所以FREMOVE有效,但FRENAME没有..

有什么想法吗?

谢谢

编辑**我也测试了unix ..在两个文件夹之间运行MV并且它确实有效

编辑**

CREATE OR REPLACE DIRECTORY 
EXTERNAL_DIR AS 
'/ext/files';


GRANT READ, WRITE ON DIRECTORY EXTERNAL_DIR TO SCHEMA1;

GRANT READ, WRITE ON DIRECTORY EXTERNAL_DIR TO SCHEMA2;

GRANT EXECUTE, READ, WRITE ON DIRECTORY EXTERNAL_DIR TO SYSTEM WITH GRANT OPTION;

编辑***我也测试了FOPEN ..它的工作原理

编辑**已安装的文件夹位于WINDOWS ..

0 个答案:

没有答案
相关问题