Falla al crear un fichero
Hola
Estoy en el inicio de una migracion de base de datos, hay una persona especialista en oracle que me esta apoyando para realizarla. Esta persona tuvo que salir de viaje y me encargo crear y ejecutar los siguientes scripts, tengo el problema que al ejecutarlos me manda el siguiente error
SQL> execute crearchclob('my_dir');
BEGIN crearchclob('my_dir'); END;
*
ERROR en lÃnea 1:
ORA-29280: ruta de acceso del directorio no válida
ORA-06512: en "SYS.UTL_FILE", lÃnea 18
ORA-06512: en "SYS.UTL_FILE", lÃnea 424
ORA-06512: en "NOMINA.CREARCHCLOB", lÃnea 19
ORA-06512: en lÃnea 1
Los siguientes son los scripts que me pidio ejecutar. Me prodrian ayudar para ver que es lo que esta mal. Gracias
CREATE OR REPLACE DIRECTORY MY_DIR AS 'C:proc'
/
CREATE OR REPLACE PROCEDURE CREARCHCLOB (
my_dir IN VARCHAR2) IS
file UTL_FILE.FILE_TYPE;
filedato VARCHAR2(30):='M4SYS_OBJS32.txt';
-- En este cursor se obtiene los campos a subir
-- Se cambia el nombre de la tabla si se quiere cargar alguna otra tabla
CURSOR tabla IS
SELECT *
FROM M4SYS_OBJETOS32;
BEGIN
-- Este es arhivo donde se cargaran los datos
file := UTL_FILE.FOPEN(my_dir,filedato,'w');
FOR params IN tabla LOOP
-- El formato de la fecha se extrae de acuerdo al tipo de dato en DB2, en este caso es timestamp
-- Si fuera date por ejemplo seria DD-MM-YYY
-- Notese que de acuerdo a la estructura de tabla falta el campo comments, no lo inclui ya que esta nulo
-- y no tiene caso cargarlo en este caso en especifico
-- De igual forma en este archivo en vez de incluir el clob, se incluye en nombre del archivo que llevara el CLOB
-- Este nombre del archivo debe ser identico al que se crean el procedimiento OBTIENECLOB
-- Asegurarse que el nombre del archivo sea único para cada registro
-- Si se modifica para otra tabla, la creacion del nombre del archivo debiera cambiar
-- la cantidad de caracteres en blanco que se pegan esta de acuerdo a la descripcion de la tabla
UTL_FILE.PUT_LINE(file,
rpad(params.id_objeto,30,' ')||
rpad(params.id_extension,3,' ')||
rpad(params.id_tipo_syscli,10,' ')||
rpad(params.n_objeto,40,' ')||
rpad(params.id_idioma,50,' ')||
rpad(params.origen,10,' ')||
rpad(params.id_ver_obj,15,' ')||
rpad(params.id_ver_min_dll,15,' ')||
rpad(params.id_usuario,40,' ')||
to_char(params.fec_ult_actualizac,'DD-MM-YYYY-HH24:MI:SS')||
'OB32'||substr(params.id_objeto,1,5)||substr(params.id_extension,1,3)
);
END LOOP;
UTL_FILE.FCLOSE(file);
END;
/
CREATE OR REPLACE PROCEDURE OBTIENECLOB (
my_dir IN VARCHAR2) IS
file UTL_FILE.FILE_TYPE;
filename VARCHAR2(15);
-- En este cursor se obtiene los campos a subir
-- Se cambia el nombre de la tabla si se quiere cargar alguna otra tabla
CURSOR tabla IS
SELECT *
FROM M4SYS_OBJETOS32;
BEGIN
FOR params IN tabla LOOP
-- Se crea un archivo y se forma el nombre de archivo de manera descriptiva a la tabla, registro para el CLOB
-- Este nombre del archivo debe ser identico al que se se hace referencia en CREARCHCLOB
-- Si se modifica para otra tabla, la creacion del nombre del archivo debiera cambiar
filename := 'OB32'||substr(params.id_objeto,1,5)||substr(params.id_extension,1,3);
file:=UTL_FILE.FOPEN(my_dir,filename,'w');
UTL_FILE.PUT_LINE(file,params.parametros);
UTL_FILE.FCLOSE(file);
END LOOP;
END;
/
Estoy en el inicio de una migracion de base de datos, hay una persona especialista en oracle que me esta apoyando para realizarla. Esta persona tuvo que salir de viaje y me encargo crear y ejecutar los siguientes scripts, tengo el problema que al ejecutarlos me manda el siguiente error
SQL> execute crearchclob('my_dir');
BEGIN crearchclob('my_dir'); END;
*
ERROR en lÃnea 1:
ORA-29280: ruta de acceso del directorio no válida
ORA-06512: en "SYS.UTL_FILE", lÃnea 18
ORA-06512: en "SYS.UTL_FILE", lÃnea 424
ORA-06512: en "NOMINA.CREARCHCLOB", lÃnea 19
ORA-06512: en lÃnea 1
Los siguientes son los scripts que me pidio ejecutar. Me prodrian ayudar para ver que es lo que esta mal. Gracias
CREATE OR REPLACE DIRECTORY MY_DIR AS 'C:proc'
/
CREATE OR REPLACE PROCEDURE CREARCHCLOB (
my_dir IN VARCHAR2) IS
file UTL_FILE.FILE_TYPE;
filedato VARCHAR2(30):='M4SYS_OBJS32.txt';
-- En este cursor se obtiene los campos a subir
-- Se cambia el nombre de la tabla si se quiere cargar alguna otra tabla
CURSOR tabla IS
SELECT *
FROM M4SYS_OBJETOS32;
BEGIN
-- Este es arhivo donde se cargaran los datos
file := UTL_FILE.FOPEN(my_dir,filedato,'w');
FOR params IN tabla LOOP
-- El formato de la fecha se extrae de acuerdo al tipo de dato en DB2, en este caso es timestamp
-- Si fuera date por ejemplo seria DD-MM-YYY
-- Notese que de acuerdo a la estructura de tabla falta el campo comments, no lo inclui ya que esta nulo
-- y no tiene caso cargarlo en este caso en especifico
-- De igual forma en este archivo en vez de incluir el clob, se incluye en nombre del archivo que llevara el CLOB
-- Este nombre del archivo debe ser identico al que se crean el procedimiento OBTIENECLOB
-- Asegurarse que el nombre del archivo sea único para cada registro
-- Si se modifica para otra tabla, la creacion del nombre del archivo debiera cambiar
-- la cantidad de caracteres en blanco que se pegan esta de acuerdo a la descripcion de la tabla
UTL_FILE.PUT_LINE(file,
rpad(params.id_objeto,30,' ')||
rpad(params.id_extension,3,' ')||
rpad(params.id_tipo_syscli,10,' ')||
rpad(params.n_objeto,40,' ')||
rpad(params.id_idioma,50,' ')||
rpad(params.origen,10,' ')||
rpad(params.id_ver_obj,15,' ')||
rpad(params.id_ver_min_dll,15,' ')||
rpad(params.id_usuario,40,' ')||
to_char(params.fec_ult_actualizac,'DD-MM-YYYY-HH24:MI:SS')||
'OB32'||substr(params.id_objeto,1,5)||substr(params.id_extension,1,3)
);
END LOOP;
UTL_FILE.FCLOSE(file);
END;
/
CREATE OR REPLACE PROCEDURE OBTIENECLOB (
my_dir IN VARCHAR2) IS
file UTL_FILE.FILE_TYPE;
filename VARCHAR2(15);
-- En este cursor se obtiene los campos a subir
-- Se cambia el nombre de la tabla si se quiere cargar alguna otra tabla
CURSOR tabla IS
SELECT *
FROM M4SYS_OBJETOS32;
BEGIN
FOR params IN tabla LOOP
-- Se crea un archivo y se forma el nombre de archivo de manera descriptiva a la tabla, registro para el CLOB
-- Este nombre del archivo debe ser identico al que se se hace referencia en CREARCHCLOB
-- Si se modifica para otra tabla, la creacion del nombre del archivo debiera cambiar
filename := 'OB32'||substr(params.id_objeto,1,5)||substr(params.id_extension,1,3);
file:=UTL_FILE.FOPEN(my_dir,filename,'w');
UTL_FILE.PUT_LINE(file,params.parametros);
UTL_FILE.FCLOSE(file);
END LOOP;
END;
/
