我有一个安装目录如下:
etc/fstab
10.100.52.12:/ftp /ftp nfs rw,bg,hard,nointr,rsize=1048576,wsize=1048576,tcp,vers=3,timeo=60,actimeo=0 0 0
# ll
drwxr-xr-x 6 root 1000 62 Mar 29 13:48 ftp
所以我必须'移动'此目录中的文件到ACFS内的目录
drwxrwxrwx 6 oracle oinstall 4096 Apr 10 09:34 ftp_files
这些是私人
(GRANTEE,TABLE_NAME,PRIVILEGE)
PUBLIC FTP_IN READ
PUBLIC FTP_IN WRITE
DB_SCHEMA FTP_OUT READ
DB_SCHEMA FTP_OUT WRITE
我执行此操作来移动文件
declare
SRC CONSTANT VARCHAR2(50) := 'FTP_IN';
DST CONSTANT VARCHAR2(50) := 'FTP_OUT';
begin
UTL_FILE.FRENAME(
src_location => SRC,
src_filename => 'test.txt',
dest_location => DST,
dest_filename => 'test.txt',
overwrite => FALSE);
end;
但它没有用,我得到了
ORA-29292: file rename operation failed
ORA-06512: a "SYS.UTL_FILE", line 348
ORA-06512: a "SYS.UTL_FILE", line 1290
ORA-06512: a line 6
29292. 00000 - "file rename operation failed"
*Cause: A file rename attempt was refused by the operating system
either because the source or destination directory does not
exist or is inaccessible, or the source file isn't accessible,
or the destination file exists.
*Action: Verify that the source file, source directory, and destination
directory exist and are accessible, and that the destination
file does not already exist.
-rw-r--r-- 1 oracle oinstall 0 Apr 10 14:47 test.txt
但是如果我只是尝试删除文件而不是frename
它,它就可以了。
那么这可能是什么?
以下是DBA_DIRECTORIES的输出:
SYS FTP_IN /sftp
SYS FTP_OUT /acfs/external/ftp_files
CREATE DIRECTORY FTP_IN as '/ftp';
GRANT READ, WRITE ON DIRECTORY FTP_IN TO DB_SCHEMA;
GRANT EXECUTE, READ, WRITE ON DIRECTORY FTP_IN TO SYSTEM WITH GRANT OPTION;
由于
测试UTL_FILE.FOPEN(SRC)
declare
SRC CONSTANT VARCHAR2(50) := 'FTP_IN';
DST CONSTANT VARCHAR2(50) := 'FTP_OUT';
l_file UTL_FILE.FILE_TYPE;
begin
l_file:=utl_file.fopen(SRC,'test.txt','W');
UTL_FILE.PUT_LINE(l_file, CONVERT('test', 'AL32UTF8'));
UTL_FILE.FCLOSE(l_file);
end;
-rw-r--r-- 1 oracle oinstall 5 Apr 10 15:21 test.txt
测试UTL_FILE.FOPEN(DST)
declare
SRC CONSTANT VARCHAR2(50) := 'FTP_IN';
DST CONSTANT VARCHAR2(50) := 'FTP_OUT';
l_file UTL_FILE.FILE_TYPE;
begin
l_file:=utl_file.fopen(DST,'test.txt','W');
UTL_FILE.PUT_LINE(l_file, CONVERT('test', 'AL32UTF8'));
UTL_FILE.FCLOSE(l_file);
end;
-rw-r--r-- 1 oracle oinstall 5 Apr 10 15:29 test.txt
[oracle@db01 ftp_files]$ pwd
/acfs/external/ftp_files
[oracle@db01 ftp_files]$
答案 0 :(得分:0)
“如果我只是尝试删除文件而不是frename,它可以工作..那么这可能是什么?”
因此OS源目录存在且oracle
OS帐户具有写权限。
但frename
失败表明:
oracle
操作系统帐户没有写入权限,或