INDICE 1.
INTRODUCCION A LA BASE DE DATOS ........................................................... 6
1.1.
................................................................................................ .................................. 6 BASE DE DATOS ..............................................................
1.1.1.
COMPONENTES DE UNA BASE DE DATOS ..................................... 6
1.1.2.
TIPOS DE BASES DE DATOS. ............................................................... 7
1.1.3.
FUNCIONES DE LAS BASES DE DATOS.
1.1.4.
AUDITORIA EN BASES DE DATOS ..................................................... 7
1.2.
BASE DE DATOS ORACLE ..................................................................... ............................................................................. ........ 8
1.2.1. 1.3. 2.
......................................... 7
ESTRUCTURAS DE ORACLE ................................................................. 9 ..................................................................... ........... 9 TIPOS DE DATOS EN ORACLE ..........................................................
PROGRAMACIÓN CON PL/SQL .......................................................................... .......................................................................... 11
2.1.
............................................................................................... ................................ 11 INTRODUCCION ...............................................................
2.2.
TIPOS DE OBJETOS EN ORACLE ............................................................. 11
2.2.1.
................................................................................. .................... 12 IDENTIFICADORES .............................................................
2.2.2.
TIPOS DE OPERADORES ............................................................. ...................................................................... ......... 12
2.3.
PROCEDIMIENTOS ALMACENADOS ........................................................ 12
2.4.
TRIGGERS ............................................................... .......................................................................................................... ........................................... 13
3.
............................................................................................................ .......................................... 15 DESARROLLO ..................................................................
3.1.
SERVICIOS DE ORACLE. .......................................................... .............................................................................. .................... 15
3.2.
CREACIÓN DE USUARIO EN ORACLE10G. ........................................... 15
3.3.
MODELO DE LA BASE DE DATOS. ........................................................... 17
3.4. CREACIÓN DE SECUENCIAS, DISPARADORES Y PROCEDIMIENTOS ALMACENADOS EN ORACLE SQLDEVELOPER. 3.5.
........ 20
DEMOSTRACIÓN .............................................................. .............................................................................................. ................................ 24
3.5.1.
INSERTAR UN REGISTRO EN LA TABLA CLIENTE.
3.5.2.
ACTUALIZAR UN REGISTRO EN LA TABLA CLIENTE. ............ 25
3.5.3.
ELIMINAR UN REGISTRO EN LA TABLA CLIENTE
................. 24
................... 25
4.
CONCLUSIONES ............................................................ ....................................................................................................... ........................................... 27
5.
BIBLIOGRAFÍA ............................................................... .......................................................................................................... ........................................... 28
6.
ANEXOS .................................................................. ....................................................................................................................... ..................................................... 29
AUDITORIA EN BASE BASE DE DATOS ORACLE 10G. 10G.
2011
INDICE DE GRAFICOS ...................................6 Ilustración 1.- Partes principales de una Base de Datos ................................... Ilustración 2.- Componentes Principales de Una base de Datos. ...................8 Ilustración 3.- Levantar Servicios de Oracle10g ......................................... ............................................... ...... 15 Ilustración 4.- Nuevo Usuario ........................................... ................................................................. ....................................... ................. 16 .................................................................. ......................... 16 Ilustración 5.-Privilegios del Sistema ........................................... Ilustración 6.-Roles del Sistema ............................................ ................................................................... ................................ ......... 16 Ilustración 7.-Modelo de Base de Datos .......................................... ............................................................... .....................18 .................................................................. ....................................... ................. 19 Ilustración 8.- Iniciar Sesión ............................................ .................................................... .......... 19 Ilustración 9.- Cargar el script en el Isqlplus. .......................................... Ilustración 10.- Usuario Objetos Creados ........................................... ............................................................ ................. 20 .................................................................... ......................... 20 Ilustración 11.- Oracle Sqldeveloper ............................................. Ilustración 12.- Conexión a oracle ............................................ ................................................................... ............................ ..... 21 Ilustración 13.- Secuencia del IDUSER ........................................... ................................................................ .....................21 ................................................................. ....................................... ................. 22 Ilustración 14.- Secuencia ID ........................................... ................................................................... ................................ ......... 22 Ilustración 15.- Trigger LOGOFF ............................................ Ilustración 16.- Trigger LOGON ........................................... ................................................................. ................................... ............. 23 ................................................................ .....................24 Ilustración 17.- Procedimiento Validar ........................................... .............................................................. .....................24 Ilustración 18.- Procedimiento Guardar .........................................
AUDITORIA EN BASE BASE DE DATOS ORACLE 10G. 10G.
2011
CREACION DE TABLAS MEDIANTE LA UTILIZACION DE SENTENCIAS SQL Y AUDITORIA EN LA BASE DE DATOS ORACLE 10G.
AUDITORIA EN BASE BASE DE DATOS ORACLE 10G. 10G.
2011
OBJETIVOS
OBJETIVO GENERAL -
Conocer la funcionalidad de la Base de datos Oracle, a través del diseño de tablas y sentencias SQL, que permitan ingresar datos y realizar una auditoría para salvaguardar la información registrada.
OBJETIVOS ESPECÍFICOS -
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 sesión del usuario, automáticamente las irregularidades detectadas.
reportando
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
INTRODUCCIÓN La mayoría de Organizaciones que almacenan su información 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 información de una manera rápida y segura ha obligado a recurrir a soluciones informáticas, 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, protección y elaboración de la información que almacena, asegurando el desempeño y competitividad de los datos. Una Base de datos Oracle incluye mejoras de rendimiento y de utilización 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 información se consolida de manera segura y está siempre disponible. Como sabemos Oracle es una potente herramienta cliente/servidor para la gestión de Bases de Datos. En el siguiente informe se desarrollara el diseño de tablas mediante la conexión a una base de datos Oracle 10g, el cual permitirá ingresar, actualizar y modificar datos a través de la utilización de sentencias SQL como Procedimientos almacenados y Triggers, y así mismo dar seguridad a la información registrada.
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
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 término base. "Sistema de información" es el término general utilizado para la estructura global que incluye todos los mecanismos para compartir datos que se han instalado.
Ilustración 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 más útil a medida que la cantidad de datos almacenados crece. Una base de datos puede ser local, es decir que puede utilizarla sólo un usuario en un equipo, o puede ser distribuida, es decir que la información se almacena en equipos remotos y se puede acceder a ella a través 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á ejecutándose se dice que la base de datos está levantada (startup), en caso contrario se dice que la base de datos está bajada (shutdown).
AUDITORIA EN BASE DE DATOS ORACLE 10G.
-
-
2011
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 pasárselas 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, protección y elaboración de la información que almacena . Desde el punto de vista de la organización lógica se compone de:
-
Jerárquicas. (Progress) Relacionales. (Oracle, Access, Sybase…)
Desde el punto de vista de la arquitectura y el número de usuarios:
-
De escritorio (dBase, Access, Paradox) Cliente/servidor (Oracle, Sybase)
(Wikilearning, 2009) 1.1.3. FUNCIONES DE LAS BASES DE DATOS. Permitir la introducción programadores).
-
de
datos
por
parte
de
los
usuarios
(o
Salida de datos. Almacenamiento de datos. Protección de datos (seguridad e integridad). Elaboración de datos.
Básicamente, la comunicación del usuario-programador con la base de datos se hace a través 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 información almacenada en las bases de datos incluyendo la capacidad de determinar:
AUDITORIA EN BASE DE DATOS ORACLE 10G.
-
2011
Quién accede a los datos Cuándo se accedió a los datos. Desde qué tipo de dispositivo/aplicación. Desde qué ubicación en la red. Cuál fue la sentencia SQL ejecutada. Cuál fue el efecto del acceso a la base de datos.
La optimización de la base de datos, como ya hemos señalado, es fundamental, puesto que se actúa en un entorno concurrente puede degradarse fácilmente 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 están los clientes que interrogan al servidor. Una base de datos Oracle es utilizada con el fin de almacenar y recuperar la información relacionada, consta de una estructura lógica, física.
Ilustración 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 recuperación de los datos en caso de fallos. Los archivos de control que contienen la información necesaria para mantener y verificar la integridad de la base de datos.
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
Las bases de datos Oracle ofrecen un extenso conjunto de funciones estándar SQL y PL/SQL para manipular números y realizar conversiones entre números y cadenas de caracteres.
(slideshare, 2011) 1.2.1. ESTRUCTURAS DE ORACLE Una BD Oracle tiene una estructura física y una estructura lógica:
-
1.2.1.1.
La estructura física se corresponde a los ficheros del sistema operativo. La estructura lógica está formada por los tablespace y los objetos de un esquema de BD.
ESTRUCTURA LÓGICA
Se divide en unidades de almacenamiento lógicas: Tablespaces.
-
1.2.1.2.
Cada BD estará formada por uno o más tablespaces. Cada tablespace se corresponde con uno o más ficheros de datos. Objetos: tablas, vistas, índices asociados a una tabla, clúster.
ESTRUCTURA FÍSICA
Una B.D. tiene uno o más ficheros de datos. Estos ficheros son de tamaño 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 leídos cuando se necesitan y situados en una caché de memoria compartida para que el próximo acceso a los mismos sea más rápido.
(iessanvicente, 2011) 1.3. TIPOS DE DATOS EN ORACLE Es importante la declaración 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 información que puede guardar un campo: caracteres, números, 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.
AUDITORIA EN BASE DE DATOS ORACLE 10G.
-
-
No almacena números de gran tamaño, sino cadenas de caracteres de hasta 2 GB
DATE -
Se almacenan tanto enteros como decimales. Number (precisión, escala).
LONG -
Almacena cadenas de longitud variable. La longitud máxima 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 ningún otro carácter a la derecha hasta completar la longitud definida. Si se introduce una cadena de mayor longitud que la fijada, nos dará un error.
NUMBER -
Si se introduce una cadena de mayor longitud que la fijada nos dará un error.
VARCHAR -
2011
Almacena la fecha. Se almacena de la siguiente forma: Siglo/Año/Mes/Día/Hora/Minutos/Segundos
RAW -
Almacena cadenas de Bytes (gráficos, sonidos…)
LONGRAW
Como el anterior pero con mayor capacidad.
ROWID -
Posición 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 común para un conjunto de datos de las aplicaciones. Los usuarios de Oracle pueden definir sus propios tipos de datos mediante dos categorías: tipos de objetos (object type) y tipos para colecciones (collection type). Para construir los tipos de usuario se utilizan los tipos básicos provistos por el sistema y otros tipos de usuario previamente definidos.
(SQL con ORACLE, 2005)
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
CAPITULO II 2. PROGRAMACIÓN CON PL/SQL 2.1. INTRODUCCION SQL es un lenguaje de consulta para los sistemas de bases de datos relaciónales, pero que no posee la potencia de los lenguajes de programación. No permite el uso de variables, estructuras de control de flujo, bucles, y demás elementos característicos de la programación. No es de extrañar, SQL es un lenguaje de consulta, no un lenguaje de programación. Sin embargo, SQL es la herramienta ideal para trabajar con bases de datos. Cuando se desea realizar una aplicación 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 programación tradicionales. PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los lenguajes de programación. Con PL/SQL se puede programar las unidades de programa de la base de datos ORACLE, estás son: - Procedimientos almacenados - Funciones - Trigger - Scripts
2.2. TIPOS DE OBJETOS EN ORACLE El término 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 más 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 básico o de un tipo de usuario. Sus métodos (procedimientos o funciones) escritos en lenguaje PL/SQL (almacenados en la BDOR), o escritos en C (almacenados externamente).
(Base de Datos ORACLE PL-SQL)
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2.2.1.
2011
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 máximo de 30 caracteres que empiece siempre por una letra, y puede contener letras, números, símbolos, mayúsculas y minúsculas 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 asignación: := (dos puntos + igual)
-
Operadores aritméticos: / (división) + (suma) - (resta)
-
Operadores relacionales o de comparación: = (igual a) <>, != (distinto de) < (menor que) > (mayor que) >= (mayor o igual a) <= (menor o igual a)
-
Operador de concatenación:
|| -
Comentarios: /* comentario de dos o más líneas */ -- comentario de una línea
2.3. PROCEDIMIENTOS ALMACENADOS Un procedimiento almacenado es un conjunto de instrucciones en PL/SQL, que pueden ser llamados usando el nombre que se le haya asignado. Los procedimientos tienen la utilidad de fomentar la reutilización de programas que se usan comúnmente. Una vez compilado, queda almacenado en la base de datos (por eso es tam bién llamado 'Procedimiento almacenado') y puede ser utilizado por múltiples aplicaciones. La sintaxis es la siguiente:
-
CREATE [OR REPLACE] PROCEDURE nombre_procedimiento [nombre_parametro modo tipodatos_parametro ] IS | AS Bloque de código
AUDITORIA EN BASE DE DATOS ORACLE 10G.
Donde "modo" puede contener los valores IN, OUT, IN OUT. Por defecto tiene el valor IN si no se pone nada. Con lo que al llamar al procedimiento se le dará un valor que luego podrá ser modificado por el procedimiento y devolver este nuevo valor.
-
IN indica que el parámetro es de entrada y no se podrá
-
modificar. OUT indica que el parámetro es de salida con lo que el procedimiento devolverá un valor en él. IN OUT indica que el parámetro es de entrada/salida.
Tipodatos_parametro, en cambio nos indica el tipo de datos que tendrá el parámetro según lo indicado en Tipos de datos Oracle/PLSQL. Para borrar un procedimiento almacenado de la base de datos:
2011
DROP PROCEDURE nombre_procedimiento
Para utilizar un procedimiento almacenado de la base de datos simplemente se lo llama desde un bloque anónimo (desde la línea de comandos), previamente habiendo inicializado el/los parámetro/s en caso que existan.
-
DECLARE nombre_parametro tipodatos_parametro; BEGIN nombre_parametro tipodatos_parametro:= valor_de_inicializacion; nombre_procedimiento (nombre_parametro => nombre_parametro); END; (Programacion PL-SQL, 2011)
2.4. TRIGGERS Un trigger o disparador se ejecuta ante un determinado evento de manera automática. Generalmente se utilizan para garantizar que una determinada acción siempre se realiza después de realizar una tarea determinada. Se debe tener cuidado con este tipo de estructuras puesto que un uso excesivo puede dar lugar a dependencias difíciles de mantener. Además 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 inserción, modificación o borrado de registros en paralelo a una operación.
AUDITORIA EN BASE DE DATOS ORACLE 10G.
A nivel de sentencia:
-
CREATE [OR REPLACE] TRIGGER nombre_trigger momento_ejecución evento [evento] ON nombre_tabla
Donde "momento_ejecución" indica cuando se ejecuta el trigger automáticamente, puede contener los valores BEFORE o AFTER. "evento" indica la operación que provoca la ejecución de este bloque, puede contener los valores INSERT, UPDATE o DELETE.
-
CREATE [OR REPLACE] TRIGGER nombre_trigger momento_ejecución evento [evento] ON nombre_tabla bloque PLSQL;
A nivel de registro
-
2011
[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 tenían antes de la ejecución de la operación que activó el trigger. Mientras que "new" indica el valor que tiene actualmente después de dicha operación. La cláusula "FOR EACH ROW" indica que el trigger es a nivel de registro.
-
[WHEN condición] Bloque PLSQL;
Con la cláusula "WHEN" se puede indicar una restricción 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)
AUDITORIA EN BASE DE DATOS ORACLE 10G.
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.
Ilustración 3.- Levantar Servicios de Oracle10g 3.2. CREACIÓN 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.
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
Ilustración 4.- Nuevo Usuario
Le daremos los respectivos privilegios y roles para poder crear los objetos de la base de datos
Ilustración 5.-Privilegios del Sistema
Ilustración 6.-Roles del Sistema
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
3.3. MODELO DE LA BASE DE DATOS.
El modelo de la base de datos lo hemos creado con la aplicación 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
Ilustración 7.-Modelo de Base de Datos
18
Ejecutamos el Script, que generamos en el Toad Data Modeler 3.6, en el isqlplus con el usuario creado anteriormente.
Ilustración 8.- Iniciar Sesión
Ilustración 9.- Cargar el script en el Isqlplus.
19
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
Ilustración 10.- Usuario Objetos Creados 3.4. CREACIÓN DE SECUENCIAS, DISPARADORES Y PROCEDIMIENTOS ALMACENADOS EN ORACLE SQLDEVELOPER.
Oracle SQL Developer es la herramienta gráfica gratuita que proporciona Oracle para que no sea necesario utilizar herramientas de terceros (como el conocido TOAD, o el PL/SQL Developer) para desarrollar, o simplemente para ejecutar consultas o scripts SQL, tanto DML como DDL, sobre bases de datos Oracle.
Ilustración 11.- Oracle Sqldeveloper
20
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
En la siguiente ventana realizaremos la conexión a la base de datos, para ello agregaremos los campos necesarios para establecer la conexión.
Ilustración 12.- Conexión a oracle
Como primer punto en la creación 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 auditoría. (Ver Código Anexo1).
Ilustración 13.- Secuencia del IDUSER
21
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
Ilustración 14.- Secuencia ID
Crearemos un disparador para escribir un registro a una tabla de USUARIOS cada vez que un usuario inicia sesión y también cuando cierre sesión, los demás disparadores (Ver Código Anexo2).
Ilustración 15.- Trigger LOGOFF
22
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
Ilustración 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 información se guardara en la tabla AUDITORIA. (Ver Código Anexo3).
23
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
Ilustración 17.- Procedimiento Validar
Ilustración 18.- Procedimiento Guardar 3.5. DEMOSTRACIÓN 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')
24
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
Obsérvese que en la tabla de auditoría se han creado un registro por cada campo del registro que se ha insertado en la tabla Cliente. El tipo de transacción es de Insert y el 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'
Obsérvese que se ha ingresado 3 registros en la tabla de auditoría, ya que se actualizó 3 campos de la tabla Cliente. El tipo de transacción es U de Updated y los campos ValorOriginal y ValorNuevo si tienen datos reflejando el antes y el después de la actualización.
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 )
25
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
Aquí aparece un registro por cada campo del registro eliminado de la tabla Cliente. El tipo de transacción es D de Deleted y el campo ValorNuevo es nulo porque el registro se ha borrado, solo registra el valor original.
26
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
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 información ingresada por el usuario.
-
Para poder hacer uso de todos los recursos que ofrece una base de datos en Oracle es importante establecer una auditoría, 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 utilización de procedimientos almacenados.
-
Oracle Database 10g ha evolucionado con el tiempo, aprovechando al máximo los servicios y características del sistema operativo en el que es instalado, por lo que nos permite mejorar el desempeño, 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 información.
27
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
5. BIBLIOGRAFÍA
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_oracleintroduccion_a_las_bases_de_datos/3861-2
http://www.slideshare.net/pajaro5/introduccin-a-base-de-datos-oracle6589981
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/Programación%20con%20PL-SQL.doc
http://sinbad.dit.upm.es/docencia/grado/curso0506/BDOR%20en%20Oracle.pdf
28
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
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 replace TRIGGER 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 replace TRIGGER 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 29
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
create or replace TRIGGER USER_AUDI_TRG AFTER LOGON 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 ON',TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS')); END;
TRIGGERS PROVEEDORES create or replace TRIGGER PROVEEDORES_AUDI_DSP BEFORE INSERT OR DELETE OR UPDATE ON PROVEEDORES FOR EACH ROW BEGIN proc_validar('PROVEEDORES','RUC_PROV',:NEW."RUC_PROV",:OL D."RUC_PROV"); proc_validar('PROVEEDORES','NOMBRE_PROV',:NEW."NOMBRE_P ROV",:OLD."NOMBRE_PROV"); proc_validar('PROVEEDORES','DIR_PROV',:NEW."DIR_PROV",:OLD." DIR_PROV"); proc_validar('PROVEEDORES','TELF_PROV',:NEW."TELF_PROV",:OL D."TELF_PROV"); proc_validar('PROVEEDORES','COD_CIU_PROV',:NEW."COD_CIU_P ROV",:OLD."COD_CIU_PROV"); END;
TRIGGERS INVENTARIO create or replace TRIGGER 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");
30
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
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."G ANANCIA"); END;
TRIGGERS FACTURA create or replace TRIGGER 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",:O LD."CED_CLI_FACT"); END;
TRIGGERS COMPRA create or replace TRIGGER COMPRA_AUDI_DSP BEFORE INSERT OR DELETE OR UPDATE ON COMPRA FOR EACH ROW BEGIN proc_validar('COMPRA','NRO_COMP',:NEW."NRO_COMP",:OLD."NR O_COMP"); proc_validar('COMPRA','FECHA_COMP',:NEW."FECHA_COMP",:OLD ."FECHA_COMP");
31
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
proc_validar('COMPRA','REFERENCIA',:NEW."REFERENCIA",:OLD." REFERENCIA"); proc_validar('COMPRA','RUC_PROV_COMP',:NEW."RUC_PROV_COM P",:OLD."RUC_PROV_COMP"); END;
TRIGGERS CLIENTE create or replace TRIGGER 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",:O LD."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_CE D",:OLD."DIRECCION_CED"); END;
TRIGGERS CIUDAD create or replace TRIGGER 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_CI U"); END; 32
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
TRIGGERS IDAUDITORIA create or replace TRIGGER 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 CIUDAD DDL for Table CIUDAD CREATE TABLE "JVARGAS"."CIUDAD" ("COD_CIU" NUMBER(4,0), "NOM_CIU" VARCHAR2(50 BYTE) ) TABLESPACE "USERS" ;
TABLA CLIENTES DDL for Table CLIENTES CREATE TABLE "JVARGAS"."CLIENTES" ("CEDULA" NUMBER(10,0), 33
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
"NOMBRE_CED" VARCHAR2(40 BYTE), "APELLIDO_CED" VARCHAR2(40 BYTE), "CIUDAD_CED" VARCHAR2(30 BYTE), "DIRECCION_CED" VARCHAR2(40 BYTE) ) TABLESPACE "USERS" ;
TABLA PROVEEDORES DDL 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 COMPRA DDL 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 INVENTARIO DDL 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_INV DDL for Table DET_COMP_INV CREATE TABLE "JVARGAS"."DET_COMP_INV" 34
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
("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 FACTURA DDL 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 35
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
(ID,TABLA,CAMPO,VALORORIGINAL,VALORNUEVO,FECHA,USUA RIOS,TIPO)values(1,'COMPRA','REFERENCIA','###########','##### ########','21/12/2011 23:01:50','JVARGAS','UPDATE'); Insert into JVARGAS.AUDITORIA (ID,TABLA,CAMPO,VALORORIGINAL,VALORNUEVO,FECHA,USUA RIOS,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,USUA RIOS,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,USUA RIOS,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,USUA RIOS,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,USUA RIOS,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 (1,'MACHALA');
(COD_CIU,NOM_CIU)
values
Insert into JVARGAS.CIUDAD (2,'GUAYAQUIL');
(COD_CIU,NOM_CIU)
values
Insert into (3,'QUITO');
JVARGAS.CIUDAD
(COD_CIU,NOM_CIU)
values
Insert into JVARGAS.CIUDAD (4,'CUENCA');
(COD_CIU,NOM_CIU)
values
Insert into JVARGAS.CIUDAD (6,'BABAHOYOS');
(COD_CIU,NOM_CIU)
values
36
AUDITORIA EN BASE DE DATOS ORACLE 10G.
Insert into JVARGAS.CIUDAD (7,'RIOBAMBA');
(COD_CIU,NOM_CIU)
2011
values
REM INSERTING into JVARGAS.CLIENTES Insert into JVARGAS.CLIENTES (CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCIO N_CED) values (704123069,'LEONARDO ','RUIZ','PASAJE','10 DE AGOSTO Y BUENAVISTA'); Insert into JVARGAS.CLIENTES (CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCIO N_CED) values (704582576,'JAIME','VARGAS','MACHALA','LA FLORIDA SECTOR 4'); Insert into JVARGAS.CLIENTES (CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCIO N_CED) values (704464445,'NATALI','ERREYES','MACHALA','LOS VERGELES'); Insert into JVARGAS.CLIENTES (CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCIO N_CED) values (702490616,'MANUEL ','ERREYES','MACHALA','LOS "VERGELES"'); Insert into JVARGAS.CLIENTES (CEDULA,NOMBRE_CED,APELLIDO_CED,CIUDAD_CED,DIRECCIO N_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 37
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
(NRO_COMP,COD_INV,CANTIDAD_DET,DETALLE_DET,PRECIO_D ET,TOTAL_DET) values (1,1,2,'OPTICO',30,30); Insert into JVARGAS.DET_COMP_INV (NRO_COMP,COD_INV,CANTIDAD_DET,DETALLE_DET,PRECIO_D ET,TOTAL_DET) values (2,2,1,'SOUND',25,25); Insert into JVARGAS.DET_COMP_INV (NRO_COMP,COD_INV,CANTIDAD_DET,DETALLE_DET,PRECIO_D ET,TOTAL_DET) values (1,2,2,'SOUND ',50,50); Insert into JVARGAS.DET_COMP_INV (NRO_COMP,COD_INV,CANTIDAD_DET,DETALLE_DET,PRECIO_D ET,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);
38
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
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 39
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
(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_PR OV) values (704582576001,'CYBERTRONIC S.A','AV. AMERICA','2262784',3); Insert into JVARGAS.PROVEEDORES (RUC_PROV,NOMBRE_PROV,DIR_PROV,TELF_PROV,COD_CIU_PR OV) 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_PR OV) 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_PR OV) 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_PR OV) 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_PR OV) 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
40
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
(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 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_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 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_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 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ;
DDL for Index KEY_COMPRA CREATE 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 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ;
DDL for Index KEY_DET_COMP_INV 41
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
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 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_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 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_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 1 MAXEXTENTS 2147483645 PCTINCREASE 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 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ;
DDL for Index KEY_PROVEE CREATE UNIQUE INDEX "JVARGAS"."KEY_PROVEE" "JVARGAS"."PROVEEDORES" ("RUC_PROV")
ON
42
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
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 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_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 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."AUDITORIA" MODIFY ("ID" NOT NULL ENABLE);
Constraints for Table CIUDAD ALTER TABLE "JVARGAS"."CIUDAD" ADD CONSTRAINT "KEY_CIUDAD" PRIMARY KEY ("COD_CIU") USING INDEX 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" ENABLE; ALTER TABLE "JVARGAS"."CIUDAD" MODIFY ("COD_CIU" NOT NULL ENABLE);
43
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
Constraints for Table CLIENTES ALTER TABLE "JVARGAS"."CLIENTES" ADD CONSTRAINT "KEY_CLIENTES" PRIMARY KEY ("CEDULA") USING INDEX 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" 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 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_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 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."DET_COMP_INV" ("NRO_COMP" NOT NULL ENABLE);
MODIFY
44
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
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 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_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 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_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 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) 45
AUDITORIA EN BASE DE DATOS ORACLE 10G.
2011
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 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "JVARGAS"."PROVEEDORES" ("RUC_PROV" NOT NULL ENABLE);
MODIFY
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 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_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; 46