Error en Procedimiento Almacenado Oracle

No replies
Offline
Joined: 22/08/2012
Puntos: 3

Buenas soy nuevo con oracle, estoy optimizando algunas consultas por lo cual realizo creacion de vistas, tablas, store procedures y jobs

 

1- Create table tEmpleados (la tabla esta indexada)

2- Create or Replace vEmpleados

3-  CREATE OR REPLACE PROCEDURE ESQUEMA.LOAD_EMPLEADOS

     AS

     BEGIN

        EXECUTE IMMEDIATE 'TRUNCATE TABLE tEmpleados' ;

        INSERT INTO tEmpleados( campo1 , campo 2) SELECT campo1, campo2 FROM vEmpleados;

        COMMIT;

 

     END LOAD_EMPLEADOS;

4- Genero JOBS

   X NUMBER;
    BEGIN    
   SYS.DBMS_JOB.SUBMIT
        (
        job => X
        ,what   => ' ESQUEMA.LOAD_EMPLEADOS;'
        ,next_date  => to_date('22/08/2012 13:00:30','dd/mm/yyyy hh24:mi:ss')
        ,interval   => 'SYSDATE + 30 / 1440'
        ,no_parse   => FALSE
        );
    :JobNumber := to_char(X);
    END;

  

Tengo cuatro pregunras :

1- El procedimiento es el adecuado ?

2- Es factible crear un store con un truncate y un insert

3- Cunado ejecuto el jobs, automaticamente de ejecuta el periodo que establecí ?

4- Me sale un error ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'  y no se que haceR????

 

Agraceré su ayuda, aclaro que no soy DBA solo aplico consultas y soy nuevo con ORACLE.

Saludos Junior

Contenido relacionado

  • Saludos

    Estoy comenzando en estos de las Base de Datos de Oracle mi problematica es la siguiente:

    He creado el siguiente procedimiento a travez de Enterprise Manager (Consulta):

    CREATE OR REPLACE PROCEDURE ver_orden(ordenv number) 
    is  
     v_output_file1 utl_file.file_type;   
     orden  Varchar2 (10); 
     cliente       Varchar2 (10);    
     Referencia Varchar2 (10);    
    begin   
    v_output_file1 := utl_file.fopen('TEST_DIR', 'miguel.txt', 'W'); v_output_file1 := utl_file.fopen ('test_dir', 'miguel.txt', 'W');   
      select t$orno, t$cuno ,t$refe into orden, cliente, referencia from ttdsls928100 where orden=ordenv;  
     DBMS_OUTPUT.PUT_LINE('Orden:'||orden|| 'Cliente:' ||Cliente|| 'Referencia' ||referencia);  
     EXCEPTION  
        WHEN NO_DATA_FOUND THEN  
           DBMS_OUTPUT.PUT_LINE('No hemos encontrado ordenes');   
    utl_file.fclose_all; utl_file.fclose_all;    
    end;  

     

    Cuando lo compilo me indica que no tiene errores.

    Luego en el Oracle Scheduler > Trabajos

    Creo un trabajo para ejecutar llamando este procedimiento:

    begin;
      execute ver_orden('25030');
    end;

    Cuando ejecuto el trabajo me da un error:

  • Es bastante habitual si se trabaja con bases de datos que a menudo se tenga que realizar alguna tarea de creación o alteración de estructuras, análisis, recompilación, etc. sobre objetos de la base de datos. Para ello se suele crear un script con numerosas sentencias DDL, en las que la mayoría de las veces lo único que cambia es el nombre del objeto a tratar.
    En estos casos puede ahorrarnos mucho trabajo la utilización del diccionario de la base de datos para construir estas sentencias dinámicamente.

    Pondremos como ejemplo la creación de un nuevo campo para almacenar la fecha de creación de los registros en todas las tablas de un esquema de una base de datos ORACLE. Para ello utilizaríamos la siguiente sentencia..

  • Gráfico ejecución flashback query de OracleRevisamos brevemente en este post la funcionalidad flashback query que aporta el gestor de BBDD de Oracle desde su versión 9i.

    Básicamente se trata de un tipo de sql que accede a datos que existían en la base de datos en un momento anterior, pero que en el momento en el que se ejecuta la sql pueden no existir o haber sufrido modificaciones. Para ello, Oracle utiliza los datos que quedan disponibles durante un tiempo en el segmento de UNDO. Este segmento, como es sabido, almacena los datos anteriores a una serie de modificaciones. Se utiliza para asegurar la consistencia en la lectura de una consulta previa a la confirmación de las modificaciones (commit) y pueden ser utilizados en una posible recuperación (rollback).

  • Con este script para Oracle se crea una tabla DIM_TIEMPO y se rellena con los valores comprendidos entre las fechas que se indiquen en las variables FechaDesde y FechaHasta. Puede ser muy útil para la creación de la tabla de tiempo de cualquier Data Warehouse.

    Esta es la versión para una base de datos Oracle, que se suma a las que han creado anteriormente il_masacratore y Dario Bernabeu para SQL Server y MySQL en sus respectivos blogs:

    Estructura de la Dimensión Tiempo y Script de carga para SQL Server

    Estructura de la Dimensión Tiempo y Procedure de carga para MySQL

     

  • Merge SQL

    En muchas ocasiones, especialmente en procesos ETL o de carga de datos para un data warehouse, por ejemplo, interesa hacer en una sola sentencia o en un solo paso la comprobación de si un registro existe, y si existe actualizarlo, y si no insertarlo. A esta combinación se le ha apodado UPSET, aunque en SQL existe una sentencia específica para hacerlo, que es MERGE.

 

 

 

Gestion del Conocimiento    |    Business Intelligence y Analítica    |     Bases de Datos    |      ERP     |      CRM      |     Tendencias tecnológicas