> On NT oracle.exe runs as "OracleService<SID>" service.
> Hence UTL_FILE will be executed under whatever OS account
> "OracleService<SID>" service runs.

Well, I just tested it, and I can open a file on a local drive, but not on 
a network
drive. 

This is because the VOS is running as a service, somewhat as you stated.
The Oracle instance itself does not run as a service. 

The VOS ( virtual operating system ) does, and this is the code 
responsible for writing to disk.

Here's the workaround from Oracle.  Maybe there's a step you were missing 
in trying
to get the Oracle Service to run as a user other than SYSTEM?

I followed the instructions, and then successfully created a file on the 
same network
drive where the attempt failed previously.  Here's the code I used:

DECLARE
   relink_log UTL_FILE.FILE_TYPE;
   log_dir varchar2(80) := 'F:\tmp';
   log_fname varchar2(80) := 'utl.txt';
BEGIN

   relink_log := UTL_FILE.FOPEN(log_dir, log_fname, 'w');

   if utl_file.is_open( relink_log ) then
      utl_file.put_line(relink_log, 'The utl file is open');
      UTL_FILE.FFLUSH(relink_log);
      UTL_FILE.FCLOSE(relink_log);
   else
      raise_application_error(-20100,'Open failed on ' || log_dir || '/' 
|| log_fname );
   end if;

END;
/


HTH

Jared




Doc ID: 
         Note:1034188.6
  Subject: 
         INVALID_OPERATION Exception from UTL_FILE when
         Writing to/from Network Drive
  Type: 
         PROBLEM
  Status: 
         PUBLISHED

                                                         Content Type: 
 TEXT/PLAIN
                                                         Creation Date: 
 30-JUL-1997
                                                         Last Revision 
Date: 
 29-JUN-2000



  Problem Description
  -------------------

  On the Windows NT platform, the UTL_FILE package raises the 
  INVALID_OPERATION exception when attempting to write to, or 
  read from, a network or compressed drive.

  If the exception is not handled, then you receive the following
  error:

     ERROR at line 1:
     ORA-06510: PL/SQL: unhandled user-defined exception
     ORA-06512: at "SYS.UTL_FILE", line 98
     ORA-06512: at "SYS.UTL_FILE", line 157
     ORA-06512: at "SCOTT.MYFILE", line 9
     ORA-06512: at line 1


  Problem Explanation
  -------------------

  The process that is attempting to perform the read or write operation 
  is the Oracle RDBMS Service.  The OracleService<sid> service runs as 
  the SYSTEM account by default.  The SYSTEM account, however, has no 
  access to shares that are set up by the user who is currently logged in. 
 
  Therefore, the Oracle RDBMS service can only read and write files on 
  local hard drives.


  Solution Description
  --------------------

  Start the Oracle service as a user who has the same permissions as 
SYSTEM,
  and also who has access to the shared directory.


  Solution Explanation
  --------------------

  When the Oracle service is started, it is done so as the user SYSTEM. 
  SYSTEM is unable to see any shared directories therefore UTL_FILE is 
  restricted to accessing local drives only.  Hence, Oracle must be 
  started as a user who can see the relevant shares. 

  This user must have full permissions in order for Oracle to run 
  successfully.  In addition, we recommend that you alter the Oracle 
SQL*Net 
  Listener Service to log on as the same user.

  For a full description refer to the following article:

     [NOTE:45172.1]   Running UTL_FILE on Windows NT

  Another approach is to alter the SYSTEM user so that it can see shared 
  directories, however, Microsoft does not recommend this because it is 
  a security risk.  Refer to the following Microsoft article:

  ' Q124184:Service Running as System Account Fails Accessing Network '
  ( http://support.microsoft.com/support/kb/articles/q124/1/84.asp )


  Reference
  ---------

  [BUG:493693]   UTL_FILE CANNOT WRITE ON NETWORK DRIVE
  .







"Igor Neyman" <[EMAIL PROTECTED]>
Sent by: [EMAIL PROTECTED]
02/28/02 11:49 AM
Please respond to ORACLE-L

 
        To:     Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]>
        cc: 
        Subject:        Re: moving from unix to NT


Jared,

On NT oracle.exe runs as "OracleService<SID>" service.
Hence UTL_FILE will be executed under whatever OS account
"OracleService<SID>" service runs.
And I was not able to make it running properly under any other than SYSTEM
account.
Remember, on NT Oracle is one big (though multithreaded) process, unlike 
it
is on UNIX.

Igor Neyman, OCP DBA
[EMAIL PROTECTED]


----- Original Message -----
To: "Multiple recipients of list ORACLE-L" <[EMAIL PROTECTED]>
Sent: Thursday, February 28, 2002 1:03 PM


> I don't have any experience with UTL_FILE on NT.  I've used it a little
> on unix.  Don't know why it wouldn't work on NT.  As stated by others,
> it might be a problem if writing to network drives, as the SYSTEM user
> does not have access to those when run as a service.
>
> This doesn't seem reasonable though, as the instance itself does not
> run as a service.  The VOS runs as a service, but not the instance.
>
> Best bet is to try it.
>
> The biggest problem will likely be your code.  If you have paths hard
> coded in it, you will have to rewrite.  If they are stored in a table,
> just
> change the data.
>
> If you're interested in Perl, I can send you the same email I sent
> Dave Farnsworth.  I can do that tonight from home if you like.
>
> Jared
>
>
>
>
>
>
> John Dunn <[EMAIL PROTECTED]>
> Sent by: [EMAIL PROTECTED]
> 02/28/02 02:08 AM
> Please respond to ORACLE-L
>
>
>         To:     Multiple recipients of list ORACLE-L
<[EMAIL PROTECTED]>
>         cc:
>         Subject:        RE: moving from unix to NT
>
>
> Jared
>
> It would be useful if you could point me in the right direction.
>
> I guess the real question for me is will UTL_FILE work properly when I
> move
> to NT, including on Network drives?. There seems to be some doubt 
amongst
> the listers as to whether it does.
>
>
>
> John.
>
>
> > -----Original Message-----
> > From:          [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED]]
> > Sent:          27 February 2002 18:35
> > To:            Multiple recipients of list ORACLE-L
> > Subject:               RE: moving from unix to NT
> >
> > Perl is *much* more flexible than UTL_FILE for flat file operations.
> >
> > There is simply no basis for comparison.
> >
> > The question in your case is this:  Can you easily replace the PL/SQL
> > procedures that are using UTL_FILE with a process that runs outside
> > of the database?
> >
> > If so, myself and others on this list can point you in the right
> > direction, as
> > basics in Perl/Oracle/DBI are really not too hard.
> >
> > If your PL/SQL is part of a larger application and not easily removed,
> you
> > may just have to deal with modifying  the PL/SQL.
> >
> > Of course, if you had made this stuff data driven ( meta data, if you
> will
> >
> > ),
> > this would be a  non-issue.  :)
> >
> > Jared
> >
> >
> >
> >
> >
> >
> > John Dunn <[EMAIL PROTECTED]>
> > Sent by: [EMAIL PROTECTED]
> > 02/27/02 01:53 AM




-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: 
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to