• Domingo 22 de Diciembre de 2024, 08:11

Autor Tema:  Imposibilidad De Generar Archivo Con Utl_file  (Leído 10078 veces)

mbleiva

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Imposibilidad De Generar Archivo Con Utl_file
« en: Martes 19 de Julio de 2005, 17:40 »
0
tengo un procedimiento almacenado que debe generar un archivo de texto en el servidor AIX y al momento de ejecutar la sentencia

vFile_dir          VARCHAR2(60) := '/usr/tmp';
   vFile_name1        VARCHAR2(30) := 'icqty.txt';
   vFile_pointer_w    UTL_FILE.FILE_TYPE;

BEGIN

   vFile_pointer_w := UTL_FILE.FOPEN(vFile_dir, vFile_name1,  'w');

se vapor la excepción no generando el archivo, consulta

 como se por cual excepción se va debido a que tengo Others y al seguir el programa se va por alli.

el directorio está 777 y estoy conectado con el dueño del esquema oracle

agradecido de antemano

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Imposibilidad De Generar Archivo Con Utl_file
« Respuesta #1 en: Martes 19 de Julio de 2005, 17:51 »
0
Hola, no lo recuerdo del todo,
pero primero que todo utl_file no accede al directorio a travez del nomber del sistema operativo, sino del nombre del directoriomatriculado a travez de  ORACLE asi por ejemplo:

<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->CREATE OR REPLACE DIRECTORY Prueba AS '/usr/tmp'
<!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->

Logicamente el usuario sobre el cual corre la bd debe tener permisos sobre ese diretcorio en el OS y ademas debes dar permiso sobre el objeto que acabos de crear en oracle al usuario que lo va a usar.

luego:
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->vFile_name1 VARCHAR2(30) := 'icqty.txt';
vFile_pointer_w UTL_FILE.FILE_TYPE;

BEGIN vFile_pointer_w := UTL_FILE.FOPEN(Prueba , vFile_name1, 'w');
<!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->

ahora lo que no recuerdo exactamente es si debes colocar el objeto directorio como parametro o el nombre del objeto directrio...
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->vFile_name1 VARCHAR2(30) := 'icqty.txt';
vFile_pointer_w UTL_FILE.FILE_TYPE;

BEGIN vFile_pointer_w := UTL_FILE.FOPEN('Prueba' , vFile_name1, 'w');
<!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

mbleiva

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Imposibilidad De Generar Archivo Con Utl_file
« Respuesta #2 en: Martes 19 de Julio de 2005, 17:58 »
0
bien gracias por la explicación, ahora para el punto 1, puedo parametrizar en el mismo procedimiento almacenado o es de algun archivo INI de Oracle?

Diclonius

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Imposibilidad De Generar Archivo Con Utl_file
« Respuesta #3 en: Viernes 22 de Julio de 2005, 21:22 »
0
Hola, yo trabaje hace poco con el UTL_FILE y mandar el directorio completo no da problemas, los ALIAS se ocupan con los BFILE..

Yo creo que tu problema puede estar en que Oracle tiene que estar autorizado para escribir en el directorio y esto se consigue  modificando el archivo INIT.ORA de la base de datos

"

Cada uno de los directorios accesibles se indican mediante una línea como la que sigue:

   UTL_FILE_DIR=nombre directorio

La especificacion del nombre del directorio variara, dependiendo del sistema operativo. Si el sistema operativo diferencia entre mayusculas y minusculas, entonces nombre_directorio tambien diferenciara.

Por ejemplo, para un sistema UNIX, las siguientes instrucciones son correctas, suponiendo que los directorios especificados existan.

   UTL_FILE_DIR = /tmp
   UTL_FILE_DIR = /home/oracle/output_files

Para acceder a un archivo con UTL_FILE, el nombre del directorio y el nombre del archivo se pasan como parametros separados a la funcion FOPEN. El nombre del directorio se compra con la lista de archivos accesibles, si se encuentra entonces se autoriza la operacion, Si el nombre de directorio especificado por FOPEN no es accesible, se devuelve un error.


Si el archivo INIT.ORA contiene

   UTL_FILE_DIR = *

los permisos de la base de datos se desabilitan lo que hace que todos los directorios sean accesibles para UTL_FILE (muuy riesgoso   :devil:  ).

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Imposibilidad De Generar Archivo Con Utl_file
« Respuesta #4 en: Viernes 22 de Julio de 2005, 21:32 »
0
Hola,
creo que deberiamos averiguar mejor al respecto.
hasta donde se el, UTL_FILE se usaba tal como tu dices pero no se desde cual version esto cambio... de hecho creo que ya ni se usa el init.ora sino el spfile unicamente.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

lcauso

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Imposibilidad De Generar Archivo Con Utl_file
« Respuesta #5 en: Viernes 9 de Septiembre de 2005, 09:42 »
0
Hola, hace poco estuve trabajando con el UTL_FILE y para poder generar el fichero tuve que modificar las variables:
   UTL_FILE_DIR = "path requerido"

En mi caso la version era 9.2 y la moficicacion la realize mediante el SPFILE y no en INIT.ORA.

Espero que te sirva