RE: UTL_FILE and Unix Group Privs

  • From: "Vergara, Michael (TEM)" <mvergara@xxxxxxxxxxx>
  • To: <oracle-l@xxxxxxxxxxxxx>
  • Date: Thu, 13 May 2004 12:49:42 -0700

This could be a couple of things.  How do you have
the initSID.ora 'utl_file_dir' parameter configured?  If you
do not specifically have this path in the parameter (or have
the parameter set to '*') then it will fail.

If you're using 9i, you should create a directory (in the
database) that points to this location and use that directory
name in the utl_file.fopen statement.  That is:

SQL> create directory mydir as '/home/charlotte/report';
... and then ...
fh :=3D utl_file.fopen( 'MYDIR', 'test','w');

HTH,
Mike



-----Original Message-----
From: Charlotte Hammond [mailto:charlottejanehammond@xxxxxxxxx]
Sent: Thursday, May 13, 2004 10:27 AM
To: oracle-l@xxxxxxxxxxxxx
Subject: UTL_FILE and Unix Group Privs


Help!
I am trying to run the following simple test:
declare
   file_id utl_file.file_type;
begin
   file_id :=3D utl_file.fopen('/home/charlotte/report','test','w');
end;
/
I have created a unix group called appgroup.  oracle is a member of =
appgroup. The above PL/SQL works if:
=20
drwxrwxrwx    2 charlotte      appgroup          96 May 13 18:12 report
or
drwxr-xr-x    2 oracle         appgroup          96 May 13 18:12 report
=20
But! It does not work for:
=20
drwxrwxr-x    2 charlotte      appgroup          96 May 13 18:12 report
=20
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 449
ORA-29283: invalid file operation
ORA-06512: at line 4
=20
I don't understand why not.  oracle is a member of appgroup and the =
directory is writeable by appgroup group.  In fact if I log in using the =
oracle unix account, I can manuall create a file in this directory.
=20
The O/S trace shows:
=20
gettimeofday({1084468047, 557093}, NULL) =3D 0
access("/home/charlotte/report/test", F_OK) =3D -1 ENOENT (No such file =
or directory)
statfs("/home/charlotte/report/test", 0xbfff1220) =3D -1 ENOENT (No such =
file or directory)
open("/home/charlotte/report/test", =
O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) =3D -1 EACCES (Permission =
denied)
gettimeofday({1084468047, 559298}, NULL) =3D 0
=20
I'm not sure exactly what the problem is.
Is there anyway I can use UTL_FILE using Unix group privileges or do I =
either (a) have to make oracle own the directory, or (b) make it =
publically writable
Thanks for any info
- Charlotte

----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to:  oracle-l-request@xxxxxxxxxxxxx
put 'unsubscribe' in the subject line.
--
Archives are at //www.freelists.org/archives/oracle-l/
FAQ is at //www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------

Other related posts: