Auditoria en Oracle 10g Por Medio de Triggers

Embed Size (px)

Citation preview

AUDITORIA EN BASE DE DATOS ORACLE 10G.

AUDITORIA EN BASE DE DATOS ORACLE 10G.2011

INDICE

1.INTRODUCCION A LA BASE DE DATOS71.1.BASE DE DATOS71.1.1.COMPONENTES DE UNA BASE DE DATOS71.1.2.TIPOS DE BASES DE DATOS.81.1.3.FUNCIONES DE LAS BASES DE DATOS.81.1.4.AUDITORIA EN BASES DE DATOS81.2.BASE DE DATOS ORACLE91.2.1.ESTRUCTURAS DE ORACLE101.3.TIPOS DE DATOS EN ORACLE102.PROGRAMACINCON PL/SQL122.1.INTRODUCCION122.2.TIPOS DE OBJETOS EN ORACLE122.2.1.IDENTIFICADORES132.2.2.TIPOS DE OPERADORES132.3.PROCEDIMIENTOS ALMACENADOS132.4.TRIGGERS143.DESARROLLO163.1.SERVICIOS DE ORACLE.163.2.CREACIN DE USUARIO EN ORACLE10G.163.3.MODELO DE LA BASE DE DATOS.183.4.CREACIN DE SECUENCIAS, DISPARADORES Y PROCEDIMIENTOS ALMACENADOS EN ORACLE SQLDEVELOPER.213.5.DEMOSTRACIN253.5.1.INSERTAR UN REGISTRO EN LA TABLA CLIENTE.253.5.2.ACTUALIZAR UN REGISTRO EN LA TABLA CLIENTE.263.5.3.ELIMINAR UN REGISTRO EN LA TABLA CLIENTE264.CONCLUSIONES285.BIBLIOGRAFA296.ANEXOS30

INDICE DE GRAFICOS

Ilustracin 1.- Partes principales de una Base de Datos6Ilustracin 2.- Componentes Principales de Una base de Datos.8Ilustracin 3.- Levantar Servicios de Oracle10g15Ilustracin 4.- Nuevo Usuario16Ilustracin 5.-Privilegios del Sistema16Ilustracin 6.-Roles del Sistema16Ilustracin 7.-Modelo de Base de Datos18Ilustracin 8.- Iniciar Sesin19Ilustracin 9.- Cargar el script en el Isqlplus.19Ilustracin 10.- Usuario Objetos Creados20Ilustracin 11.- Oracle Sqldeveloper20Ilustracin 12.- Conexin a oracle21Ilustracin 13.- Secuencia del IDUSER21Ilustracin 14.- Secuencia ID22Ilustracin 15.- Trigger LOGOFF22Ilustracin 16.- Trigger LOGON23Ilustracin 17.- Procedimiento Validar24Ilustracin 18.- Procedimiento Guardar24

CREACION DE TABLAS MEDIANTE LA UTILIZACION DE SENTENCIAS SQL Y AUDITORIA EN LA BASE DE DATOS ORACLE 10G.

OBJETIVOS

OBJETIVO GENERAL

Conocer la funcionalidad de la Base de datos Oracle, a travs del diseo de tablas y sentencias SQL, que permitan ingresar datos y realizar una auditora para salvaguardar la informacin registrada.

OBJETIVOS ESPECFICOS

Conocer el uso esencial de la base de datos Oracle 10g y sentencias SQL.

Aplicar distintos objetos que permitan insertar datos en las tablas.

Auditar el inicio y cierre de sesin del usuario, reportando automticamente las irregularidades detectadas.

INTRODUCCIN

La mayora de Organizaciones que almacenan su informacin en bases de datos no disponen de herramientas de software que les proporcionen la posibilidad de detectar si se han realizado accesos autorizados pero no adecuados a sus datos.

La necesidad de manejar gran cantidad de informacin de una manera rpida y segura ha obligado a recurrir a soluciones informticas, muy necesarias.

Los sistemas implementados con Bases de Datos Oracle disponen de diversas herramientas que permiten el manejo eficaz de los datos importantes de una empresa y gestionar toda la entrada, salida, proteccin y elaboracin de la informacin que almacena, asegurando el desempeo y competitividad de los datos.

Una Base de datos Oracle incluye mejoras de rendimiento y de utilizacin de recursos, independientemente de que se necesite dar soporte a decenas de miles de usuarios. Proporcionando mejores resultados al automatizar las tareas administrativas, ofreciendo seguridad y disponibilidad.

Con Oracle Database 10g, la primera Base de Datos Relacional, su informacin se consolida de manera segura y est siempre disponible. Como sabemos Oracle es una potente herramienta cliente/servidor para la gestin de Bases de Datos.

En el siguiente informe se desarrollara el diseo de tablas mediante la conexin a una base de datos Oracle 10g, el cual permitir ingresar, actualizar y modificar datos a travs de la utilizacin de sentencias SQL como Procedimientos almacenados y Triggers, y as mismo dar seguridad a la informacin registrada.

CAPITULO I

1. INTRODUCCION A LA BASE DE DATOS

1.1. BASE DE DATOS

Una base de datos es una entidad en la cual se pueden almacenar datos de manera estructurada, con la menor redundancia posible. Diferentes programas y diferentes usuarios deben poder utilizar estos datos.

De all el trminobase. "Sistema de informacin" es el trmino general utilizado para la estructura global que incluye todos los mecanismos para compartir datos que se han instalado.

Ilustracin 1.- Partes principales de una Base de Datos

Una base de datos proporciona a los usuarios el acceso a datos, que pueden visualizar, ingresar o actualizar, en concordancia con los derechos de acceso que se les hayan otorgado. Se convierte ms til a medida que la cantidad de datos almacenados crece.

Una base de datos puede ser local, es decir que puede utilizarla slo un usuario en un equipo, o puede ser distribuida, es decir que la informacin se almacena en equipos remotos y se puede acceder a ella a travs de una red.(Kioskea, 2008)1.1.1. COMPONENTES DE UNA BASE DE DATOS

Una base de datos consta de varios componentes:

Motor: Programa ejecutable que debe estar en memoria para manejar la base de datos. Cuando este programa est ejecutndose se dice que la base de datos est levantada (startup), en caso contrario se dice que la base de datos est bajada (shutdown). Servicio de red: Programa que se encarga de establecer las conexiones y transmitir datos entre cliente y servidor o entre servidores. Listener (escuchador): Es un programa residente en memoria que se encarga de recibir las llamadas que llegan a la base de datos desde la red, y de pasrselas a esta. Una base de datos que no tenga un listener cargado, no podr recibir llamadas remotas.

(Wikilearning, 2009)

1.1.2. TIPOS DE BASES DE DATOS.

Una base de datos es un programa residente en memoria, que se encarga de gestionar todo el tratamiento de entrada, salida, proteccin y elaboracin de la informacin que almacena.

Desde el punto de vista de la organizacin lgica se compone de:

Jerrquicas. (Progress) Relacionales. (Oracle, Access, Sybase)

Desde el punto de vista de la arquitectura y el nmero de usuarios:

De escritorio (dBase, Access, Paradox) Cliente/servidor (Oracle, Sybase)

(Wikilearning, 2009)

1.1.3. FUNCIONES DE LAS BASES DE DATOS.

Permitir la introduccin de datos por parte de los usuarios (o programadores).

Salida de datos. Almacenamiento de datos. Proteccin de datos (seguridad e integridad). Elaboracin de datos.

Bsicamente, la comunicacin del usuario-programador con la base de datos se hace a travs de un lenguaje denominado SQL: Structured Query Laguage (Lenguaje estructurado de consultas).

(Wikilearning, 2009)

1.1.4. AUDITORIA EN BASES DE DATOS

Es el proceso que permite medir, asegurar, demostrar, monitorear y registrar los accesos a la informacin almacenada en las bases de datos incluyendo la capacidad de determinar:

Quin accede a los datos Cundo se accedi a los datos. Desde qu tipo de dispositivo/aplicacin. Desde qu ubicacin en la red. Cul fue la sentencia SQL ejecutada. Cul fue el efecto del acceso a la base de datos.

La optimizacin de la base de datos, como ya hemos sealado, es fundamental, puesto que se acta en un entorno concurrente puede degradarse fcilmente el nivel de servicio que haya podido establecerse con los usuarios.

1.2. BASE DE DATOS ORACLE

Oracle es una base de datos relacional para entornos cliente/servidor, es decir, que aplica las normas del lgebra relacional (conjuntos, uniones, intersecciones) y que utiliza la arquitectura cliente/servidor, donde en un lado de la red est el servidor con los datos y en el otro lado estn los clientes que interrogan al servidor.

Una base de datos Oracle es utilizada con el fin de almacenar y recuperar la informacin relacionada, consta de una estructura lgica, fsica.

Ilustracin 2.- Componentes Principales de Una base de Datos.Posee tres tipos de archivos:

Los archivos de datos que contienen los datos reales de la base de datos. Los archivos redo log que contienen un registro de los cambios efectuados en la base de datos para activar la recuperacin de los datos en caso de fallos. Los archivos de control que contienen la informacin necesaria para mantener y verificar la integridad de la base de datos.

Las bases de datos Oracle ofrecen un extenso conjunto de funciones estndar SQL y PL/SQL para manipular nmeros y realizar conversiones entre nmeros y cadenas de caracteres.(slideshare, 2011)1.2.1. ESTRUCTURAS DE ORACLE

Una BD Oracle tiene una estructura fsica y una estructura lgica:

La estructura fsica se corresponde a los ficheros del sistema operativo. La estructura lgica est formada por los tablespace y los objetos de un esquema de BD.

1.2.1.1. ESTRUCTURA LGICA

Se divide en unidades de almacenamiento lgicas: Tablespaces.

Cada BD estar formada por uno o ms tablespaces. Cada tablespace se corresponde con uno o ms ficheros de datos. Objetos: tablas, vistas, ndices asociados a una tabla, clster.

1.2.1.2. ESTRUCTURA FSICAUna B.D. tiene uno o ms ficheros de datos. Estos ficheros son de tamao fijo y se Establecen en el momento en que se crea la base de datos o en el momento en el que se crean tablespaces. Los datos del fichero de datos son ledos cuando se necesitan y situados en una cach de memoria compartida para que el prximo acceso a los mismos sea ms rpido.(iessanvicente, 2011)1.3. TIPOS DE DATOS EN ORACLE

Es importante la declaracin de tipos de datos a utilizar, ya que a la hora de crear una tabla en una base de datos, debemos resolver qu campos (columnas) tendr y que tipo de datos almacenar cada uno de ellos, es decir, su estructura.El tipo de dato especifica el tipo de informacin que puede guardar un campo: caracteres, nmeros, etc. En SQL tenemos bastantes sentencias que se pueden utilizar para realizar diversas tareas.

CHAR Tienen una longitud fija. Almacena de 1 a 255. Si se introduce una cadena de menos longitud que la definida se rellenara con blancos a la derecha hasta quedar completada. Si se introduce una cadena de mayor longitud que la fijada nos dar un error.

VARCHAR Almacena cadenas de longitud variable. La longitud mxima es de 2000 caracteres. Si se introduce una cadena de menor longitud que la que est definida, se almacena con esa longitud y no se rellenara con blancos ni con ningn otro carcter a la derecha hasta completar la longitud definida. Si se introduce una cadena de mayor longitud que la fijada, nos dar un error.

NUMBER Se almacenan tanto enteros como decimales. Number (precisin, escala).

LONG No almacena nmeros de gran tamao, sino cadenas de caracteres de hasta 2 GB

DATE Almacena la fecha. Se almacena de la siguiente forma:Siglo/Ao/Mes/Da/Hora/Minutos/Segundos

RAW Almacena cadenas de Bytes (grficos, sonidos)

LONGRAW Como el anterior pero con mayor capacidad.

ROWID Posicin interna de cada una de las columnas de las tablas. Sentencias de consultas de datos.

Un tipo de dato define una estructura y un comportamiento comn para un conjunto de datos de las aplicaciones. Los usuarios de Oracle pueden definir sus propios tipos de datos mediante dos categoras: tipos de objetos (object type) y tipos para colecciones (collection type). Para construir los tipos de usuario se utilizan los tipos bsicos provistos por el sistema y otros tipos de usuario previamente definidos.

(SQL con ORACLE, 2005)

CAPITULO II2. PROGRAMACINCON PL/SQL

2.1. INTRODUCCION

SQL es un lenguaje de consulta para los sistemas de bases de datos relacinales, pero que no posee la potencia de los lenguajes de programacin. No permite el uso de variables,estructuras de control de flujo, bucles, y dems elementos caractersticos de la programacin.

No es de extraar, SQL es un lenguaje de consulta, no un lenguaje de programacin. Sin embargo, SQL es la herramienta ideal para trabajar con bases de datos.

Cuando se desea realizar una aplicacin completa para el manejo de una base de datos relacional, resulta necesario utilizar alguna herramienta que soporte la capacidad de consulta del SQL y la versatilidad de los lenguajes de programacin tradicionales. PL/SQL es el lenguaje de programacin que proporciona Oracle para extender el SQL estndar con otro tipo de instrucciones y elementos propios de los lenguajes de programacin.

Con PL/SQL se puede programar las unidades de programa de la base de datos ORACLE, ests son: Procedimientos almacenados Funciones Trigger Scripts

2.2. TIPOS DE OBJETOS EN ORACLE

El trmino Base de Datos Objeto Relacional (BDOR) utilizado por Oracle, se usa para describir una base de datos que ha evolucionado desde el modelo relacional hacia otra ms amplia que incorpora conceptos del paradigma orientado a objetos.

Un tipo de objeto representa una entidad del mundo real y se compone de los siguientes elementos:

Su nombre que sirve para identificar el tipo de los objetos. Sus atributos que modelan la estructura y los valores de los datos de ese tipo. Cada atributo puede ser de un tipo de datos bsico o de un tipo de usuario. Sus mtodos (procedimientos o funciones) escritos en lenguaje PL/SQL (almacenados en la BDOR), o escritos en C (almacenados externamente).

(Base de Datos ORACLE PL-SQL)

2.2.1. IDENTIFICADORES

Un identificador es un nombre que se le pone a un objeto que interviene en un programa, que puede ser variable, constante, procedimientos, excepciones, cursores. Debe tener un mximo de 30 caracteres que empiece siempre por una letra, y puede contener letras, nmeros, smbolos, maysculas y minsculas indiferentemente.

Los identificadores no pueden ser palabras reservadas (SELECT, INSERT, DELETE, UPDATE, DROP).

(Programacion PL-SQL , 2011)

2.2.2. TIPOS DE OPERADORES

Operador de asignacin: := (dos puntos + igual) Operadores aritmticos:/ (divisin)+ (suma) - (resta) Operadores relacionales o de comparacin:= (igual a) , != (distinto de)< (menor que)> (mayor que)>= (mayor o igual a) nombre_parametro);END;

(Programacion PL-SQL, 2011)

2.4. TRIGGERS

Un trigger o disparador se ejecuta ante un determinado evento de manera automtica. Generalmente se utilizan para garantizar que una determinada accin siempre se realiza despus de realizar una tarea determinada. Se debe tener cuidado con este tipo de estructuras puesto que un uso excesivo puede dar lugar a dependencias difciles de mantener. Adems se deben tener muy claros las restricciones de integridad para evitar problemas.

Los trigger permiten:

Realizar comprobaciones a objeto de mantener la integridad de la base de datos. Registro de las operaciones realizadas. Operaciones de insercin, modificacin o borrado de registros en paralelo a una operacin.

A nivel de sentencia:

CREATE [OR REPLACE] TRIGGER nombre_triggermomento_ejecucin evento [evento] ON nombre_tablabloque PLSQL;

A nivel de registro

CREATE [OR REPLACE] TRIGGER nombre_triggermomento_ejecucin evento [evento] ON nombre_tabla

Donde "momento_ejecucin" indica cuando se ejecuta el trigger automticamente, puede contener los valores BEFORE o AFTER. "evento" indica la operacin que provoca la ejecucin de este bloque, puede contener los valores INSERT, UPDATE o DELETE.

[REFERENCING OLD AS old | NEW AS new]FOR EACH ROW

"old" indica el nombre que se le da al registro con los valores antiguos que se tenan antes de la ejecucin de la operacin que activ el trigger. Mientras que "new" indica el valor que tiene actualmente despus de dicha operacin. La clusula "FOR EACH ROW" indica que el trigger es a nivel de registro. [WHEN condicin]Bloque PLSQL;

Con la clusula "WHEN" se puede indicar una restriccin que haga que el trigger se ejecute o no. Por ejemplo se puede indicar que el trigger se ejecute solo si el campo "campo1" de la tabla tiene un valor mayor que 50.

Para eliminar un trigger:

DROP TRIGGER nombre_trigger

(Programacion PL-SQL, 2011)

CAPITULO III

3. DESARROLLO

3.1. SERVICIOS DE ORACLE.

Como primer punto levantamos los servicios del servidor de base de datos Oracle 10g, para luego conectarnos de forma remota a dicho servidor.

Ilustracin 3.- Levantar Servicios de Oracle10g3.2. CREACIN DE USUARIO EN ORACLE10G.

Crearemos un nuevo usuario en Oracle10g para guardar nuestras tablas y crear los diferentes objetos que necesitamos para la auditoria de dicho esquema.

Ilustracin 4.- Nuevo Usuario Le daremos los respectivos privilegios y roles para poder crear los objetos de la base de datos

Ilustracin 5.-Privilegios del Sistema

Ilustracin 6.-Roles del Sistema3.3. MODELO DE LA BASE DE DATOS.

El modelo de la base de datos lo hemos creado con la aplicacin Toad Data Modeler 3.6, para luego generar el script del modelo y as ejecutarlo en el isqlplus del oracle10g obteniendo las tablas con sus respectivas Primary Key, Foreign Key y sus relaciones.

AUDITORIA EN BASE DE DATOS ORACLE 10G.2011

1.1.1.1. 1

18

Ilustracin 7.-Modelo de Base de Datos

Ejecutamos el Script, que generamos en el Toad Data Modeler 3.6, en el isqlplus con el usuario creado anteriormente.

Ilustracin 8.- Iniciar Sesin

Ilustracin 9.- Cargar el script en el Isqlplus.

Ilustracin 10.- Usuario Objetos Creados3.4. CREACIN DE SECUENCIAS, DISPARADORES Y PROCEDIMIENTOS ALMACENADOS EN ORACLE SQLDEVELOPER.

Oracle SQL Developer es la herramienta grfica gratuita que proporcionaOracle para que no sea necesario utilizar herramientas de terceros (como el conocido TOAD, o elPL/SQL Developer) para desarrollar, o simplemente para ejecutar consultas oscripts SQL, tantoDMLcomoDDL, sobre bases de datos Oracle.

Ilustracin 11.- Oracle Sqldeveloper En la siguiente ventana realizaremos la conexin a la base de datos, para ello agregaremos los campos necesarios para establecer la conexin.

Ilustracin 12.- Conexin a oracle Como primer punto en la creacin de los objetos, ejecutamos dos Secuencia, una para que en la tabla usuarios aumente de 1 en 1 el iduser y la otra en la tabla de auditora. (Ver Cdigo Anexo1).

Ilustracin 13.- Secuencia del IDUSER

Ilustracin 14.- Secuencia ID Crearemos un disparador para escribir un registro a una tabla de USUARIOS cada vez que un usuario inicia sesin y tambin cuando cierre sesin, los dems disparadores (Ver Cdigo Anexo2).

Ilustracin 15.- Trigger LOGOFF

Ilustracin 16.- Trigger LOGON Para crear un trigger para auditar cambios en una tabla, se debe crear una tabla en donde se va a guardar los cambios de las tablas. Lo primero que hay que hacer es crear la tabla auditoria, sobre la cual el trigger escribir el detalle de las transacciones realizadas, luego crearemos los procedimientos que utilizaremos:

CREATE TABLE "JVARGAS"."AUDITORIA"("ID" NUMBER(4,0),"TABLA" VARCHAR2(40 BYTE),"CAMPO" VARCHAR2(40 BYTE),"VALORORIGINAL" VARCHAR2(40 BYTE),"VALORNUEVO" VARCHAR2(40 BYTE),"FECHA" VARCHAR2(40 BYTE),"USUARIOS" VARCHAR2(40 BYTE),"TIPO" VARCHAR2(30 BYTE)) Los Procedimientos almacenados crearemos para validar cuando un campo es modificado por otro y a su vez para cuando el usuario inserta, actualiza y elimina un registro de cualquier tabla dicha informacin se guardara en la tabla AUDITORIA. (Ver Cdigo Anexo3).

Ilustracin 17.- Procedimiento Validar

Ilustracin 18.- Procedimiento Guardar 3.5. DEMOSTRACIN

3.5.1. INSERTAR UN REGISTRO EN LA TABLA CLIENTE.

INSERT INTO "JVARGAS"."CLIENTES" (CEDULA, NOMBRE_CED, APELLIDO_CED, CIUDAD_CED, DIRECCION_CED) VALUES ('0758962315', 'JORGE ', 'RODRIGUEZ', 'MACHALA', '6 ESQUINAS')

Obsrvese que en la tabla de auditora se han creado un registro por cada campo del registro que se ha insertado en la tabla Cliente. El tipo de transaccin es de Insert yel campo Valor Original es nulo porque este es un nuevo registro. Hagamos una segunda prueba.

3.5.2. ACTUALIZAR UN REGISTRO EN LA TABLA CLIENTE.

UPDATE "JVARGAS"."CLIENTES" SET NOMBRE_CED = 'JUAN PEDRO', APELLIDO_CED = 'PEREZ IBARRA', CIUDAD_CED = 'MACHALA' WHERE ROWID = 'AAAM1vAAEAAAAJvAAD' AND ORA_ROWSCN = '1393349'

Obsrvese que se ha ingresado 3 registros en la tabla de auditora, ya que se actualiz 3 campos de la tabla Cliente. El tipo de transaccin es U de Updated y los campos ValorOriginal y ValorNuevo si tienen datos reflejando el antes y el despus de la actualizacin.

3.5.3. ELIMINAR UN REGISTRO EN LA TABLA CLIENTE

DELETE FROM "JVARGAS"."CLIENTES" WHERE ROWID = 'AAAM1vAAEAAAAJvAAD' AND ORA_ROWSCN = '1449634' and ( "CEDULA" is null or "CEDULA" is not null )

Aqu aparece un registro por cada campo del registro eliminado de la tabla Cliente. El tipo de transaccin es D de Deleted y el campo ValorNuevo es nulo porque el registro se ha borrado, solo registra el valor original.

4. CONCLUSIONES

Ofrecer seguridad en los datos es importante, por lo que se debe llevar una auditoria en la base de datos, que es donde se va almacenar toda la informacin ingresada por el usuario.

Para poder hacer uso de todos los recursos que ofrece una base de datos en Oracle es importante establecer una auditora, y llevar un registro que contenga todos los lineamientos para el ingreso y acceso de un usuario, el buen manejo de trigger, y la correcta utilizacin de procedimientos almacenados.

Oracle Database 10g ha evolucionado con el tiempo, aprovechando al mximo los servicios y caractersticas del sistema operativo en el que es instalado, por lo que nos permite mejorar el desempeo, la escalabilidad y la capacidad en el manejo del servidor de base de datos.

Finalmente hemos concluido que Oracle Database 10g brinda flexibilidad para los usuarios que elijan trabajar con este gestor, sin sacrificar la facilidad de uso y la seguridad de la informacin.

5. BIBLIOGRAFA

http://es.kioskea.net/contents/bdd/bddintro.php3 http://www.slideshare.net/RMCA/administracion-de-base-de-datos-oracle http://www.wikilearning.com/curso_gratis/iniciacion_a_oracle/3861-3 http://www.wikilearning.com/curso_gratis/iniciacion_a_oracle-introduccion_a_las_bases_de_datos/3861-2 http://www.slideshare.net/pajaro5/introduccin-a-base-de-datos-oracle-6589981 http://www.iessanvicente.com/colaboraciones/oracle.pdf http://www.desarrolloweb.com/articulos/1869.php http://www.geocities.ws/cacuestaa/matdoc/misapu/triggers/index.html http://www.infor.uva.es/~chernan/Bases/Teoria/TySQL.pdf oasis.cisc-ug.org/.../QUINTO/Programacin%20con%20PL-SQL.doc http://sinbad.dit.upm.es/docencia/grado/curso0506/BDO-R%20en%20Oracle.pdf

6. ANEXOS

ANEXO 1

USUARIO SECUENCIA

CREATE SEQUENCE "JVARGAS"."USU_AUDI_SECUENCIA" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 35 NOCACHE NOORDER NOCYCLE; AUDITORIA SECUENCIA

CREATE SEQUENCE "JVARGAS"."ID_AUDITORIA_SECUENCIA" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 24 NOCACHE NOORDER NOCYCLE;

ANEXO 2

TRIGGERS USUARIO

create or replaceTRIGGER USUARIOS_TRG BEFORE INSERT ON USUARIOS FOR EACH ROW BEGIN BEGIN IF :NEW.IDUSER IS NULL THEN SELECT USU_AUDI_SECUENCIA.NEXTVAL INTO :NEW.IDUSER FROM DUAL; END IF; END COLUMN_SEQUENCES;END;

TRIGGERS LOGOFF

create or replaceTRIGGER USER_LOGOFF_TRG BEFORE LOGOFF ON JVARGAS.SCHEMA declare n varchar2(20);BEGIN SELECT USU_AUDI_SECUENCIA.NEXTVAL INTO n FROM DUAL; INSERT INTO USUARIOS VALUES (n,(select user from dual),'Log OF',TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS'));END;

TRIIGGERS LOGON

create or replaceTRIGGER USER_AUDI_TRG AFTER LOGON ON JVARGAS.SCHEMAdeclare n varchar2(20);BEGIN SELECT USU_AUDI_SECUENCIA.NEXTVAL INTO n FROM DUAL; INSERT INTO USUARIOS VALUES (n,(select user from dual),'Log ON',TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS'));END;

TRIGGERS PROVEEDORES

create or replaceTRIGGER PROVEEDORES_AUDI_DSP BEFORE INSERT OR DELETE OR UPDATE ON PROVEEDORES FOR EACH ROW BEGIN proc_validar('PROVEEDORES','RUC_PROV',:NEW."RUC_PROV",:OLD."RUC_PROV"); proc_validar('PROVEEDORES','NOMBRE_PROV',:NEW."NOMBRE_PROV",:OLD."NOMBRE_PROV"); proc_validar('PROVEEDORES','DIR_PROV',:NEW."DIR_PROV",:OLD."DIR_PROV"); proc_validar('PROVEEDORES','TELF_PROV',:NEW."TELF_PROV",:OLD."TELF_PROV"); proc_validar('PROVEEDORES','COD_CIU_PROV',:NEW."COD_CIU_PROV",:OLD."COD_CIU_PROV");END;

TRIGGERS INVENTARIO

create or replaceTRIGGER INVENTARIO_AUDI_DISP BEFORE INSERT OR DELETE OR UPDATE ON INVENTARIO FOR EACH ROW BEGIN proc_validar('INVENTARIO','COD_INV',:NEW."COD_INV",:OLD."COD_INV"); proc_validar('INVENTARIO','NOM_INV',:NEW."NOM_INV",:OLD."NOM_INV"); proc_validar('INVENTARIO','STOCK_INV',:NEW."STOCK_INV",:OLD."STOCK_INV"); proc_validar('INVENTARIO','PCOMPRA_INV',:NEW."PCOMPRA_INV",:OLD."PCOMPRA_INV"); proc_validar('INVENTARIO','GANANCIA',:NEW."GANANCIA",:OLD."GANANCIA");END;

TRIGGERS FACTURA

create or replaceTRIGGER FACTURA_AUDI_DISP BEFORE INSERT OR DELETE OR UPDATE ON FACTURA FOR EACH ROW BEGIN proc_validar('FACTURA','NRO_FACT',:NEW."NRO_FACT",:OLD."NRO_FACT"); proc_validar('FACTURA','FECHA_FACT',:NEW."FECHA_FACT",:OLD."FECHA_FACT"); proc_validar('FACTURA','CED_CLI_FACT',:NEW."CED_CLI_FACT",:OLD."CED_CLI_FACT");END;

TRIGGERS COMPRA

create or replaceTRIGGER COMPRA_AUDI_DSP BEFORE INSERT OR DELETE OR UPDATE ON COMPRA FOR EACH ROW BEGIN proc_validar('COMPRA','NRO_COMP',:NEW."NRO_COMP",:OLD."NRO_COMP"); proc_validar('COMPRA','FECHA_COMP',:NEW."FECHA_COMP",:OLD."FECHA_COMP"); proc_validar('COMPRA','REFERENCIA',:NEW."REFERENCIA",:OLD."REFERENCIA"); proc_validar('COMPRA','RUC_PROV_COMP',:NEW."RUC_PROV_COMP",:OLD."RUC_PROV_COMP");END;

TRIGGERS CLIENTE

create or replaceTRIGGER CLIE_AUDI_DISP BEFORE INSERT OR UPDATE OR DELETE ON CLIENTES FOR EACH ROW BEGIN proc_validar('CLIENTES','CEDULA',:NEW."CEDULA",:OLD."CEDULA"); proc_validar('CLIENTES','NOMBRE_CED',:NEW."NOMBRE_CED",:OLD."NOMBRE_CED"); proc_validar('CLIENTES','APELLIDO_CED',:NEW."APELLIDO_CED",:OLD."APELLIDO_CED"); proc_validar('CLIENTES','CIUDAD_CED',:NEW."CIUDAD_CED",:OLD."CIUDAD_CED"); proc_validar('CLIENTES','DIRECCION_CED',:NEW."DIRECCION_CED",:OLD."DIRECCION_CED");END;

TRIGGERS CIUDAD

create or replaceTRIGGER CIU_AUDI_DSP BEFORE INSERT OR DELETE OR UPDATE ON CIUDAD FOR EACH ROW

BEGIN proc_validar('CIUDAD','COD_CIU',:NEW."COD_CIU",:OLD."COD_CIU"); proc_validar('CIUDAD','NOM_CIU',:NEW."NOM_CIU",:OLD."NOM_CIU");END;

TRIGGERS IDAUDITORIA

create or replaceTRIGGER AUDITORIA_CLIE_TRG BEFORE INSERT ON AUDITORIA FOR EACH ROW BEGIN BEGIN IF :NEW.ID IS NULL THEN SELECT ID_AUDITORIA_SECUENCIA.NEXTVAL INTO :NEW.ID FROM DUAL; END IF; END COLUMN_SEQUENCES;END;

ANEXO 3

TABLA DE AUDITORIA DDL for Table AUDITORIA

CREATE TABLE "JVARGAS"."AUDITORIA" ("ID" NUMBER(4,0), "TABLA" VARCHAR2(40 BYTE), "CAMPO" VARCHAR2(40 BYTE), "VALORORIGINAL" VARCHAR2(40 BYTE), "VALORNUEVO" VARCHAR2(40 BYTE), "FECHA" VARCHAR2(40 BYTE), "USUARIOS" VARCHAR2(40 BYTE), "TIPO" VARCHAR2(30 BYTE)) TABLESPACE "USERS" ;

TABLA CIUDADDDL for Table CIUDAD

CREATE TABLE "JVARGAS"."CIUDAD" ("COD_CIU" NUMBER(4,0), "NOM_CIU" VARCHAR2(50 BYTE))

TABLESPACE "USERS" ;

TABLA CLIENTESDDL for Table CLIENTESCREATE TABLE "JVARGAS"."CLIENTES" ("CEDULA" NUMBER(10,0), "NOMBRE_CED" VARCHAR2(40 BYTE), "APELLIDO_CED" VARCHAR2(40 BYTE), "CIUDAD_CED" VARCHAR2(30 BYTE), "DIRECCION_CED" VARCHAR2(40 BYTE))

TABLESPACE "USERS" ;

TABLA PROVEEDORESDDL for Table PROVEEDORES

CREATE TABLE "JVARGAS"."PROVEEDORES" ("RUC_PROV" NUMBER(13,0), "NOMBRE_PROV" VARCHAR2(100 BYTE), "DIR_PROV" VARCHAR2(50 BYTE), "TELF_PROV" VARCHAR2(30 BYTE), "COD_CIU_PROV" NUMBER(4,0)) TABLESPACE "USERS" ;

TABLA COMPRADDL for Table COMPRA

CREATE TABLE "JVARGAS"."COMPRA" ("NRO_COMP" NUMBER(4,0), "FECHA_COMP" VARCHAR2(40 BYTE), "REFERENCIA" VARCHAR2(40 BYTE), "RUC_PROV_COMP" NUMBER(13,0)) TABLESPACE "USERS" ;

TABLA INVENTARIODDL for Table INVENTARIO

CREATE TABLE "JVARGAS"."INVENTARIO" ("COD_INV" NUMBER(4,0), "NOM_INV" VARCHAR2(40 BYTE), "STOCK_INV" NUMBER, "PCOMPRA_INV" FLOAT(126), "GANANCIA" FLOAT(126)) TABLESPACE "USERS" ;

TABLA DET_COMP_INVDDL for Table DET_COMP_INV

CREATE TABLE "JVARGAS"."DET_COMP_INV" ("NRO_COMP" NUMBER(4,0), "COD_INV" NUMBER(4,0), "CANTIDAD_DET" NUMBER, "DETALLE_DET" VARCHAR2(50 BYTE), "PRECIO_DET" FLOAT(126), "TOTAL_DET" FLOAT(126)) TABLESPACE "USERS" ;

TABLA FACTURADDL for Table FACTURA

CREATE TABLE "JVARGAS"."FACTURA" ("NRO_FACT" NUMBER(4,0), "FECHA_FACT" VARCHAR2(40 BYTE), "CED_CLI_FACT" NUMBER(10,0)) TABLESPACE "USERS" ;

TABLA DET_FACT_INV DDL for Table DET_FACT_INV

CREATE TABLE "JVARGAS"."DET_FACT_INV" ("NRO_FACT" NUMBER(4,0), "COD_INV" NUMBER(4,0), "PUNITARIO" FLOAT(126), "CANTIDAD" NUMBER, "DETALLE" VARCHAR2(50 BYTE), "TOTAL" FLOAT(126)) TABLESPACE "USERS" ;

TABLA USUARIOS DDL for Table USUARIOS

CREATE TABLE "JVARGAS"."USUARIOS" ("IDUSER" VARCHAR2(20 BYTE), "USER_NOMBRE" VARCHAR2(30 BYTE), "ACTIVIDAD" VARCHAR2(30 BYTE), "FECHA" VARCHAR2(40 BYTE)) TABLESPACE "USERS" ;

INSERTAR REGISTROS EN LAS TABLAS REM INSERTING into JVARGAS.AUDITORIA

Insert into JVARGAS.AUDITORIA(ID,TABLA,CAMPO,VALORORIGINAL,VALORNUEVO,FECHA,USUARIOS,TIPO)values(1,'COMPRA','REFERENCIA','###########','#############','21/12/2011 23:01:50','JVARGAS','UPDATE');

Insert into JVARGAS.AUDITORIA(ID,TABLA,CAMPO,VALORORIGINAL,VALORNUEVO,FECHA,USUARIOS,TIPO)values(2,'FACTURA','FECHA_FACT','25/12/2011','27/12/2011','21/12/2011 23:09:14','JVARGAS','UPDATE');

Insert into JVARGAS.AUDITORIA(ID,TABLA,CAMPO,VALORORIGINAL,VALORNUEVO,FECHA,USUARIOS,TIPO)values(3,'INVENTARIO','STOCK_INV','10','5','21/12/2011 23:14:02','JVARGAS','UPDATE');

Insert into JVARGAS.AUDITORIA(ID,TABLA,CAMPO,VALORORIGINAL,VALORNUEVO,FECHA,USUARIOS,TIPO)values(4,'PROVEEDORES','NOMBRE_PROV','TRIONICA','TRIONICA S.A','21/12/2011 23:20:32','JVARGAS','UPDATE');

Insert into JVARGAS.AUDITORIA(ID,TABLA,CAMPO,VALORORIGINAL,VALORNUEVO,FECHA,USUARIOS,TIPO)values(5,'CIUDAD','COD_CIU',null,'7','21/12/2011 23:23:06','JVARGAS','INSERT');

Insert into JVARGAS.AUDITORIA(ID,TABLA,CAMPO,VALORORIGINAL,VALORNUEVO,FECHA,USUARIOS,TIPO)values(6,'CIUDAD','NOM_CIU',null,'RIOBAMBA','21/12/2011 23:23:06','JVARGAS','INSERT');

REM INSERTING into JVARGAS.CIUDAD

Insert into JVARGAS.CIUDAD (COD_CIU,NOM_CIU) values (1,'MACHALA');

Insert into JVARGAS.CIUDAD (COD_CIU,NOM_CIU) values (2,'GUAYAQUIL');

Insert into JVARGAS.CIUDAD (COD_CIU,NOM_CIU) values (3,'QUITO');

Insert into JVARGAS.CIUDAD (COD_CIU,NOM_CIU) values (4,'CUENCA');

Insert into JVARGAS.CIUDAD (COD_CIU,NOM_CIU) values (6,'BABAHOYOS');

Insert into JVARGAS.CIUDAD (COD_CIU,NOM_CIU) values (7,'RIOBAMBA');

REM INSERTING into JVARGAS.CLIENTES

Insert into JVARGAS.CLIENTES(CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCION_CED) values (704123069,'LEONARDO ','RUIZ','PASAJE','10 DE AGOSTO Y BUENAVISTA');

Insert into JVARGAS.CLIENTES(CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCION_CED) values (704582576,'JAIME','VARGAS','MACHALA','LA FLORIDA SECTOR 4');

Insert into JVARGAS.CLIENTES(CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCION_CED) values (704464445,'NATALI','ERREYES','MACHALA','LOS VERGELES');

Insert into JVARGAS.CLIENTES(CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCION_CED) values (702490616,'MANUEL ','ERREYES','MACHALA','LOS "VERGELES"');

Insert into JVARGAS.CLIENTES(CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCION_CED) values (704127487,'JUAN','PEREZ','PASAJE','BARRIO "ABDON CALDERON"');

REM INSERTING into JVARGAS.COMPRA

Insert into JVARGAS.COMPRA(NRO_COMP,FECHA_COMP,REFERENCIA,RUC_PROV_COMP) values (1,'21/12/2011','###########',704582576001);

Insert into JVARGAS.COMPRA (NRO_COMP,FECHA_COMP,REFERENCIA,RUC_PROV_COMP) values (2,'22/12/2011','###########',704464445001);Insert into JVARGAS.COMPRA(NRO_COMP,FECHA_COMP,REFERENCIA,RUC_PROV_COMP) values (3,'21/12/2011','#############',702414547001);

REM INSERTING into JVARGAS.DET_COMP_INV

Insert into JVARGAS.DET_COMP_INV(NRO_COMP,COD_INV,CANTIDAD_DET,DETALLE_DET,PRECIO_DET,TOTAL_DET) values (1,1,2,'OPTICO',30,30);

Insert into JVARGAS.DET_COMP_INV(NRO_COMP,COD_INV,CANTIDAD_DET,DETALLE_DET,PRECIO_DET,TOTAL_DET) values (2,2,1,'SOUND',25,25);

Insert into JVARGAS.DET_COMP_INV(NRO_COMP,COD_INV,CANTIDAD_DET,DETALLE_DET,PRECIO_DET,TOTAL_DET) values (1,2,2,'SOUND ',50,50);

Insert into JVARGAS.DET_COMP_INV(NRO_COMP,COD_INV,CANTIDAD_DET,DETALLE_DET,PRECIO_DET,TOTAL_DET) values (3,4,1,'24 V..',45,45);

REM INSERTING into JVARGAS.DET_FACT_INV

Insert into JVARGAS.DET_FACT_INV(NRO_FACT,COD_INV,PUNITARIO,CANTIDAD,DETALLE,TOTAL) values (1,1,10,2,null,20);

Insert into JVARGAS.DET_FACT_INV(NRO_FACT,COD_INV,PUNITARIO,CANTIDAD,DETALLE,TOTAL) values (2,5,80,1,null,80);

Insert into JVARGAS.DET_FACT_INV(NRO_FACT,COD_INV,PUNITARIO,CANTIDAD,DETALLE,TOTAL) values (2,1,10,1,null,10);

Insert into JVARGAS.DET_FACT_INV(NRO_FACT,COD_INV,PUNITARIO,CANTIDAD,DETALLE,TOTAL) values (3,3,30,1,null,30);

Insert into JVARGAS.DET_FACT_INV(NRO_FACT,COD_INV,PUNITARIO,CANTIDAD,DETALLE,TOTAL) values (4,2,25,2,null,50);

REM INSERTING into JVARGAS.FACTURA

Insert into JVARGAS.FACTURA(NRO_FACT,FECHA_FACT,CED_CLI_FACT) values(1,'21/12/2011',704582576);

Insert into JVARGAS.FACTURA(NRO_FACT,FECHA_FACT,CED_CLI_FACT) values(2,'22/12/2011',704464445);

Insert into JVARGAS.FACTURA(NRO_FACT,FECHA_FACT,CED_CLI_FACT) values(3,'23/12/2011',702490616);

Insert into JVARGAS.FACTURA(NRO_FACT,FECHA_FACT,CED_CLI_FACT) values(4,'27/12/2011',702490616);

REM INSERTING into JVARGAS.INVENTARIO

Insert into JVARGAS.INVENTARIO(COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (1,'MOUSE',3,10,3,5);

Insert into JVARGAS.INVENTARIO(COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (2,'PARLANTES',5,25,8);

Insert into JVARGAS.INVENTARIO(COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (3,'USB 2.0 8GB',8,30,6);

Insert into JVARGAS.INVENTARIO(COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (4,'REGULADOR DE VOLTAJE',2,45,15);

Insert into JVARGAS.INVENTARIO (COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (5,'PANTALLA LCD ''15',6,80,30);

Insert into JVARGAS.INVENTARIO(COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (6,'IMPRESORA EPSON MULTIFUNCION',7,150,50);

Insert into JVARGAS.INVENTARIO(COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (7,'DISCO DURO 500GB',4,75,25);

Insert into JVARGAS.INVENTARIO(COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (8,'LECTOR BLU-RAY',9,120,45);

Insert into JVARGAS.INVENTARIO(COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (9,'MEMORIA DDR2 2GB',3,40,12);

Insert into JVARGAS.INVENTARIO(COD_INV,NOM_INV,STOCK_INV,PCOMPRA_INV,GANANCIA) values (10,'AUDIFONOS',5,28,8);

REM INSERTING into JVARGAS.PROVEEDORES

Insert into JVARGAS.PROVEEDORES(RUC_PROV,NOMBRE_PROV,DIR_PROV,TELF_PROV,COD_CIU_PROV) values (704582576001,'CYBERTRONIC S.A','AV. AMERICA','2262784',3);

Insert into JVARGAS.PROVEEDORES(RUC_PROV,NOMBRE_PROV,DIR_PROV,TELF_PROV,COD_CIU_PROV) values (704464445001,'IMPACAR S.A','AV. 25 DE JUNIO / COLON Y TARQUI','2987451',1);

Insert into JVARGAS.PROVEEDORES(RUC_PROV,NOMBRE_PROV,DIR_PROV,TELF_PROV,COD_CIU_PROV) values (702490616001,'MARCIMEX S.A','AV. ROCAFUERTE / COLO Y TARQUI','2974102',1);

Insert into JVARGAS.PROVEEDORES(RUC_PROV,NOMBRE_PROV,DIR_PROV,TELF_PROV,COD_CIU_PROV) values (702414547001,'SOLO HP ','AV. MACHALA Y PEDRO MONCAYO','2841254',2);

Insert into JVARGAS.PROVEEDORES(RUC_PROV,NOMBRE_PROV,DIR_PROV,TELF_PROV,COD_CIU_PROV) values (705478945001,'INTERMAX S.A','AV. SOLANO Y REMIGIO CRESPO','2741258',4);

Insert into JVARGAS.PROVEEDORES(RUC_PROV,NOMBRE_PROV,DIR_PROV,TELF_PROV,COD_CIU_PROV) values (702315984001,'TRIONICA S.A','AV. ROSENDO / PAEZ','2874125',6);

REM INSERTING into JVARGAS.USUARIOS

Insert into JVARGAS.USUARIOS(IDUSER,USER_NOMBRE,ACTIVIDAD,FECHA) values('1','JVARGAS','Log ON','21/12/2011 03:16:02');

Insert into JVARGAS.USUARIOS(IDUSER,USER_NOMBRE,ACTIVIDAD,FECHA) values('2','JVARGAS','Log ON','21/12/2011 03:53:40');

Insert into JVARGAS.USUARIOS(IDUSER,USER_NOMBRE,ACTIVIDAD,FECHA) values('3','JVARGAS','Log OF','21/12/2011 20:01:29');

DDL for Index AUDITORIA_CLIE_PK

CREATE UNIQUE INDEX "JVARGAS"."AUDITORIA_CLIE_PK" ON"JVARGAS"."AUDITORIA" ("ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ;

DDL for Index KEY_CIUDAD

CREATE UNIQUE INDEX "JVARGAS"."KEY_CIUDAD" ON"JVARGAS"."CIUDAD" ("COD_CIU") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ;

DDL for Index KEY_CLIENTES

CREATE UNIQUE INDEX "JVARGAS"."KEY_CLIENTES" ON"JVARGAS"."CLIENTES" ("CEDULA") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ;

DDL for Index KEY_COMPRACREATE UNIQUE INDEX "JVARGAS"."KEY_COMPRA" ON"JVARGAS"."COMPRA" ("NRO_COMP") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)TABLESPACE "USERS" ;

DDL for Index KEY_DET_COMP_INV

CREATE UNIQUE INDEX "JVARGAS"."KEY_DET_COMP_INV" ON"JVARGAS"."DET_COMP_INV" ("NRO_COMP", "COD_INV") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ;

DDL for Index KEY_DETALLE_FACT_INV

CREATE UNIQUE INDEX "JVARGAS"."KEY_DETALLE_FACT_INV"ON "JVARGAS"."DET_FACT_INV" ("NRO_FACT", "COD_INV") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ;

DDL for Index KEY_FACTURA

CREATE UNIQUE INDEX "JVARGAS"."KEY_FACTURA" ON "JVARGAS"."FACTURA" ("NRO_FACT") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)TABLESPACE "USERS" ;

DDL for Index KEY_INVENTARIO

CREATE UNIQUE INDEX "JVARGAS"."KEY_INVENTARIO" ON "JVARGAS"."INVENTARIO" ("COD_INV") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ;

DDL for Index KEY_PROVEE

CREATE UNIQUE INDEX "JVARGAS"."KEY_PROVEE" ON "JVARGAS"."PROVEEDORES" ("RUC_PROV") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ;

DDL for Index USUARIOS_PK

CREATE UNIQUE INDEX "JVARGAS"."USUARIOS_PK" ON"JVARGAS"."USUARIOS" ("IDUSER") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ;

Constraints for Table AUDITORIA

ALTER TABLE "JVARGAS"."AUDITORIA" ADD CONSTRAINT "AUDITORIA_CLIE_PK" PRIMARY KEY ("ID")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."AUDITORIA" MODIFY ("ID" NOT NULL ENABLE);

Constraints for Table CIUDADALTER TABLE "JVARGAS"."CIUDAD" ADD CONSTRAINT"KEY_CIUDAD" PRIMARY KEY ("COD_CIU")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."CIUDAD" MODIFY ("COD_CIU" NOT NULL ENABLE);

Constraints for Table CLIENTES

ALTER TABLE "JVARGAS"."CLIENTES" ADD CONSTRAINT"KEY_CLIENTES" PRIMARY KEY ("CEDULA")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."CLIENTES" MODIFY ("CEDULA" NOT NULL ENABLE);

Constraints for Table COMPRA

ALTER TABLE "JVARGAS"."COMPRA" ADD CONSTRAINT"KEY_COMPRA" PRIMARY KEY ("NRO_COMP")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."COMPRA" MODIFY ("NRO_COMP" NOT NULL ENABLE);

Constraints for Table DET_COMP_INV--------------------------------------------------------

ALTER TABLE "JVARGAS"."DET_COMP_INV" ADD CONSTRAINT"KEY_DET_COMP_INV" PRIMARY KEY ("NRO_COMP", "COD_INV")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."DET_COMP_INV" MODIFY ("NRO_COMP" NOT NULL ENABLE); ALTER TABLE "JVARGAS"."DET_COMP_INV" MODIFY ("COD_INV" NOT NULL ENABLE);

Constraints for Table DET_FACT_INV

ALTER TABLE "JVARGAS"."DET_FACT_INV" ADD CONSTRAINT"KEY_DETALLE_FACT_INV" PRIMARY KEY ("NRO_FACT", "COD_INV")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."DET_FACT_INV" MODIFY ("NRO_FACT" NOT NULL ENABLE); ALTER TABLE "JVARGAS"."DET_FACT_INV" MODIFY ("COD_INV" NOT NULL ENABLE);

Constraints for Table FACTURA

ALTER TABLE "JVARGAS"."FACTURA" ADD CONSTRAINT "KEY_FACTURA" PRIMARY KEY ("NRO_FACT")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."FACTURA" MODIFY ("NRO_FACT" NOT NULL ENABLE);

Constraints for Table INVENTARIO

ALTER TABLE "JVARGAS"."INVENTARIO" ADD CONSTRAINT "KEY_INVENTARIO" PRIMARY KEY ("COD_INV")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."INVENTARIO" MODIFY ("COD_INV" NOT NULL ENABLE);

Constraints for Table PROVEEDORES

ALTER TABLE "JVARGAS"."PROVEEDORES" ADD CONSTRAINT"KEY_PROVEE" PRIMARY KEY ("RUC_PROV")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."PROVEEDORES" MODIFY ("RUC_PROV" NOT NULL ENABLE);

Constraints for Table USUARIOS

ALTER TABLE "JVARGAS"."USUARIOS" MODIFY ("IDUSER" NOT NULL ENABLE); ALTER TABLE "JVARGAS"."USUARIOS" ADD CONSTRAINT"USUARIOS_PK" PRIMARY KEY ("IDUSER")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT)TABLESPACE "USERS" ENABLE;

Ref Constraints for Table COMPRA

ALTER TABLE "JVARGAS"."COMPRA" ADD CONSTRAINT"PROVEE_COMPRA" FOREIGN KEY ("RUC_PROV_COMP")REFERENCES "JVARGAS"."PROVEEDORES" ("RUC_PROV")ENABLE;

Ref Constraints for Table DET_COMP_INV

ALTER TABLE "JVARGAS"."DET_COMP_INV" ADD CONSTRAINT"COMPRA_DET_INV" FOREIGN KEY ("NRO_COMP")REFERENCES "JVARGAS"."COMPRA" ("NRO_COMP") ENABLE; ALTER TABLE "JVARGAS"."DET_COMP_INV" ADD CONSTRAINT"INV_DET_COMP" FOREIGN KEY ("COD_INV")REFERENCES "JVARGAS"."INVENTARIO" ("COD_INV") ENABLE;

Ref Constraints for Table DET_FACT_INV

ALTER TABLE "JVARGAS"."DET_FACT_INV" ADD CONSTRAINT"FACTURA_DET_INV" FOREIGN KEY ("NRO_FACT")REFERENCES "JVARGAS"."FACTURA" ("NRO_FACT") ENABLE; ALTER TABLE "JVARGAS"."DET_FACT_INV" ADD CONSTRAINT "INV_DET_FACT" FOREIGN KEY ("COD_INV")REFERENCES "JVARGAS"."INVENTARIO" ("COD_INV") ENABLE;

Ref Constraints for Table FACTURA

ALTER TABLE "JVARGAS"."FACTURA" ADD CONSTRAINT "CLIENTES_FACTURA" FOREIGN KEY ("CED_CLI_FACT")REFERENCES "JVARGAS"."CLIENTES" ("CEDULA") ENABLE;

Ref Constraints for Table PROVEEDORES

ALTER TABLE "JVARGAS"."PROVEEDORES" ADD CONSTRAINT "CIUDAD_PROVEEDORES" FOREIGN KEY ("COD_CIU_PROV")REFERENCES "JVARGAS"."CIUDAD" ("COD_CIU") ENABLE;

DDL for Sequence ID_AUDITORIA_SECUENCIA

47