UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request...

23
UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES UNIANDES Facultad de Sistemas Mercantiles Carrera de Sistemas de Informática Tema: ORACLE 9i. Autor: Muñoz Vivero Álvaro Andrés Ibarra 2010

Transcript of UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request...

Page 1: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES

UNIANDES

Facultad de Sistemas Mercantiles

Carrera de Sistemas de Informática

Tema: ORACLE 9i.

Autor:

Muñoz Vivero Álvaro Andrés

Ibarra 2010

Page 2: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

Introducción

La arquitectura de ORACLE tiene tres componentes básicos: las estructuras de memoria para almacenar los datos y el código ejecutable, los procesos que corren el sistema de base de datos y las tareas de cada usuario conecta a la base de datos y los archivos que sirven para el almacenamiento físico, en disco, de la información de la base de datos.

Dentro de la estructura de la memoria hay dos clases de memoria, una de ellas compartida por todos lo usuarios conectados y otra dedicada al trabajo de cada uno de ellos; SGA (system global area) Área Global de Sistema, PGA (program global area) área global de programa.

Para la manipulación de BD (Base de Datos) tenemos privilegios del sistema los cuales permite al usuario hacer ciertas tareas sobre la BD, como por ejemplo crear un Tablespace. Estos permisos son otorgados por el administrador; también encontramos los privilegios de objetos que le permite al usuario hacer cierta acción en un objeto de la base de datos, como puede ser una tabla, vista, función etc.

Oracle cuenta con roles que son conjuntos de privilegios; puede tener garantizados una serie de privilegios tanto del sistema como sobre objetos. Por otro lado los perfiles permiten definir limitaciones de recursos. Por ejemplo podemos definir un perfil que limite el número de sesiones abiertas concurrentemente por un usuario cualquiera.

Objetivos.

1. Fortalecer el conocimiento sobre la arquitectura de la plataforma de base de datos Oracle de una forma de auto aprendizaje.

2. Establecer pautas base para la inicialización en el trabajo de manipulación y administración de bases de datos desarrolladas en Oracle.

3. Generar de las consultas en internet un instrumento de análisis y reflexión para una participación activa durante el avance del modulo.

4. Expandir nuestros discernimiento acerca de la información que nos pone a consideración sabiendo definir y diferenciar la buena de la mala información que encontramos.

Page 3: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

Componentes del S. G. A. (Área Global de Sistema).

Sirve para facilitar la transferencia de información entre usuarios. Almacena la mayor parte de la información sobre la propia estructura de la base de datos que es consultada con más frecuencia.

Actúa de forma similar a la caché de un PC. Si un usuario realiza una consulta SQL contra la base de datos y ésta ya ha sido ejecutada por otro usuario, tal vez se encuentre almacenada en la SGA, si es así, Oracle devolverá el resultado de la consulta SQL al segundo usuario que la ha solicitado bastante más rápida pues no tendrá que leer de los archivos de datos.

Se divide en tres partes:

• Fondo común compartido (Shared pool). En ella mantiene el diccionario de datos y las áreas compartidas de las órdenes SQL que se solicitan para su procesamiento.

• Fondo de memoria rápida (Database buffer cache).

Su función es mantener bloques de datos leídos directamente de los archivos de datos. Cuando se procesa una consulta, el servidor busca los bloques de datos requeridos en esta estructura. Si el bloque no se encuentra en esta estructura, el proceso servidor lee el bloque de la memoria secundaria y coloca una copia en esta estructura. De esta forma, otras peticiones que requieran de este bloque de datos no requerirán de acceso a memoria secundaria (lecturas físicas).

• Área de registros de rehacer (Redo log buffer).

Es un buffer circular que mantiene todos los cambios que han sido realizados sobre la base de datos por operaciones de insert, update, delete, create, alter y drop. Las entradas de este buffer contienen toda la información necesaria para reconstruir los cambios realizados a la base de datos por medio de cualquier sentencia del DDL o del DML (el bloque que ha sido cambiado, la posición de cambio y el nuevo valor). El uso del Redo Buffer es estrictamente secuencial, en tal sentido pueden entrelazarse cambios en los bloques de datos producidos por transacciones diferentes. El tamaño de este Buffer también puede ser configurado para mejorar el rendimiento de la instancia y de las aplicaciones que sobre ellas se ejecutan.

Page 4: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

• Request Queue y Response Queues. Estas estructuras constituyen los elementos básicos para el manejo de conexiones de usuarios al manejador. Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión con el manejador, la solicitud de conexión será encolada en la Request Queue. Los procesos servidores tomarán las solicitudes de conexión, efectuarán las acciones necesarias para que la base de datos complete la solicitud y colocarán la petición en la Response Queue asociada al proceso que atendió la solicitud.

Componentes del P. G. A. (Área Central de Proceso).

Esta área de memoria contiene datos e información de control para los procesos que se ejecutan en el servidor de Oracle (relacionados con la base de datos). El tamaño y contenido de la PGA depende de las opciones del servidor que se hayan instalado.

El PGA constituye una región de memoria asociada a cada proceso servidor, la cual contiene datos e información de control para cada una de las sesiones que los usuarios mantienen con el RDBMS ORACLE a través de éste proceso servidor. Por lo tanto el PGA no es un área de memoria compartida. Una región de memoria para almacenar un PGA es solicitada cuando un proceso usuario establece una sesión de trabajo con el manejador de datos. El tipo de información que se almacena en el PGA depende de las opciones instaladas para el servidor

ORACLE. Por ejemplo, cuando se utiliza una configuración de servidor dedicado, el PGA contiene los siguientes componentes:

Sort Area, que es utilizada para llevar a cabo los posibles ordenamientos de filas requeridos antes de que las filas sean procesadas o devueltas al usuario como resultado de una consulta.

Stack Space, el cual contiene las variables de sesión de usuario y sus valores. Cursor State, el cual almacena el estado de los diferentes cursores que están siendo

utilizados en la sesión del usuario. Session Information, la cual mantiene información sobre los privilegios que el usuario

que ejecuta la sesión. Ejemplo: Cada vez que se invoca SQL*Plus, se crear un proceso usuario. Este proceso usuario se comunicará (bien sea por los mecanismos de IPC –en caso de que el servidor ORACLE y el proceso usuario estén en la misma máquina- o por mecanismos de software de comunicación en Red como SQL*Net –en caso de que el servidor ORACLE y el proceso usuario estén en máquinas diferentes) con el proceso servidor que le proveerá del acceso necesario al servidor ORACLE.

Page 5: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

PRIVILEGIOS DE ORACLE 9i

Privilegios de Objeto

Existen alrededor de 126 privilegios del sistema, a continuación los más destacados:

Categoría Ejemplo SESSION

CREATE SESSION ALTER SESSION RESTRICTED SESSION

TABLESPACE

CREATE / ALTER / DROP TABLESPACE UNLIMITED TABLESPACE

TABLE

CREATE TABLE CREATE / ALTER / DROP ANY TABLE SELECT / INSERT / UPDATE / DELETE ANY TABLE

INDEX

CREATE / ALTER / DROP ANY INDEX

Consideraciones

No existe el privilegio ‘CREATE INDEX’, el usuario que pueda crear una tabla, podrá crear un índice (en su esquema)

‘CREATE TABLE’ ya incluye ‘CREATE INDEX’ y ‘ANALYZE’ Si puedes crear una tabla, un procedimiento. Los usuarios con el privilegio ‘ANY’ podrán manipular los objetos en cualquier

esquema. Es decir, si un usuario recibe el privilegio ‘CREATE ANY TABLE’, podrá crear una tabla en el esquema de cualquier usuario

‘UNLIMITED TABLESPACE’ no se puede otorgar a un rol Para conceder privilegios utilizamos el comando ‘GRANT’

En la Sintaxis:

system_priv especifica el privilegio a otorgar user especifica el usuario que lo recibe role existe la posibilidad de asignar el privilegio a un role PUBLIC especifica que el rol se otorga a todos los usuarios de la BBDD WITH ADMIN OPTION permite a la persona que recibe el privilegio otorgarlo a otros

usuarios o roles

Consideraciones

Para que un usuario pueda otorgar un privilegio de sistema, ha tenido que recibirlo con la opción ‘WITH ADMIN OPTION’

El usuario que goce del privilegio ‘GRANT ANY ROLE’ podrá otorgar cualquier rol en una BBDD

El usuario que reciba un privilegio con la opción ‘WITH ADMIN OPTION’ podrá otorgarlo y revocarlo de cualquier usuario o rol de la BBDD

Page 6: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

Privilegios SYSDBA y SYSOPER

Los usuarios que gocen de estos privilegios de sistema serán los usuarios que puedan, entre otras cosas, arrancar y parar una BBDD (si los usuarios se autentican mediante el fichero de contraseñas).

Ejemplo de asignación de privilegios SYSDBA y SYSOPER al usuario SYSTEM:

Desde este momento, el usuario ‘SYSTEM’ podrá bajar la BBDD (entre otras cosas) siempre y cuando se conecte de la siguiente manera:

Consideraciones

En esta asignación no es posible añadir la cláusula ‘WITH ADMIN.OPTION’ Estos privilegios no se pueden asignar a roles En la vista ‘V$PWFILE_USERS’ podemos ver qué usuarios gozan de estos privilegios Para que la autenticación se realice mediante el fichero de passwords, hemos de

definir con el valor ‘EXCLUSIVE’ el parámetro ‘REMOTE_LOGIN_PASSWORDFILE’ del ‘init.ora’ para permitir conexiones remotas

Revocar Privilegios

Para revocar los privilegios otorgados a un usuario o rol utilizamos la sentencia ‘REVOKE’

Consideraciones

Sólo se podrán revocar aquellos privilegios otorgados directamente con un comando GRANT

Page 7: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

No se producen revocaciones en cascada. Es decir, user1 otorgó privilegios a user2 y, a

su vez, user2 los otorgó a user3, si user1 revoca los privilegios a user2, user3 no los pierde

Page 8: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

Privilegio Descripción CREATE ANY INDEX Crear cualquier índice. CREATE [PUBLIC] SYNONYM Crear sinónimos [públicos].

CREATE [ANY] TABLE Crear tablas. El usuario debe tener cuota en el espacio de tablas, o ha de tener asignado el privilegio UNLIMITED TABLESPACE.

CREATE [ANY] VIEW Crear vistas. ALTER ANY INDEX Alterar cualquier índice. ALTER ANY TABLE Alterar cualquier tabla DROP ANY INDEX Borrar cualquier índice. DROP ANY SYNONYM Borrar cualquier sinónimo. DROP PUBLIC SYNONYM Borrar sinónimos públicos. DROP ANY VIEW Borrar cualquier vista. DROP ANY TABLE Borrar cualquier tabla. SELECT ANY TABLE Efectuar selecciones de cualquier tabla o vista. INSERT ANY TABLE Insertar en cualquier tabla o vista. DELETE ANY TABLE Borrar filas de cualquier tabla o vista, y también truncar. ALTER SESSION Alterar los parámetros de la sesión. CREATE SESSION Conectarse a la BD. CREATE PROFILE Crear perfiles de usuario. CREATE ROLE Crear roles. CREATE ROLLBACK SEGMENT Creación de segmentos de rollback.

CREATE TABLESPACE Crear espacios de tablas. CREATE USER Crear usuarios. ALTER PROFILE Alterar perfiles existentes. ALTER ANY ROLE Alterar cualquier rol. ALTER ROLLBACK SEGMENT Alterar segmentos de rollback.

ALTER TABLESPACE Alterar espacios de tablas. ALTER USER Alterar usuarios. DROP PROFILE Borrar un perfil existente. DROP ANY ROLE Borrar cualquier rol. DROP ROLLBACK SEGMENT Borrar un segmento de rollback existente.

DROP TABLESPACE Borrar un espacio de tablas. DROP USER Borrar un usuario. Añadir CASCADE si el usuario posee objetos. ALTER DATABASE Permite una sentencia ALTER DATABASE. GRANT ANY PRIVILEGE Otorgar cualquiera de estos privilegios. GRANT ANY ROLE Otorgar cualquier rol a un usuario. UNLIMITED TABLESPACE Puede usar una cantidad de almacenamiento ilimitada. DROP PROFILE Borrar un perfil existente.

Page 9: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

Privilegios de Objeto

Objeto Privilegio TABLA ALTER TABLE

SELECT / INSERT / UPDATE / DELETE VISTA SELECT / INSERT / UPDATE / DELETE SECUENCIA SELECT / ALTER PROCEDIMIENTO EXECUTE

Para otorgar privilegios de objeto debemos utilizar el comando ‘GRANT’

Sintaxis:

object_priv especifica el privilegio a otorgar column_list se puede especificar sobre qué columnas se tendrá el

privilegio ALL PRIVILEGES otorga todos los privilegios sobre el objeto object especifica sobre qué objeto

WITH GRANT OPTION permite a la persona que recibe el privilegio otorgarlo a otros usuarios o roles

Consideraciones

Para que un usuario pueda otorgar un privilegio de objeto, este ha de estar en su esquema o bien ha tenido que recibirlo con la opción ‘WITH ADMIN OPTION’

Los privilegios de objeto se revocan igual que los de sistema Un usuario sólo podrá revocar el privilegio a los usuarios que lo hayan recibido

directamente por él. En los privilegios de objeto sí se producen revocaciones en cascada

Privilegio Descripción

SELECT Puede consultar a un objeto.

INSERT Puede insertar filas en una tabla o vista. Puede especificarse las columnas donde se permite insertar dentro de la tabla o vista.

UPDATE Puede actualizar filas en una tabla o vista. Puede especificarse las columnas donde se permite actualizar dentro de la tabla o vista.

DELETE Puede borrar filas dentro de la tabla o vista.

ALTER Puede alterar la tabla.

INDEX Puede crear índices de una tabla.

REFERENCES Puede crear claves ajenas que referencie a esta tabla.

Page 10: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

EXECUTE Puede ejecutar un procedimiento, paquete o función.

READ Permite leer archivos asociados con objetos BFILE en el directorio del sistema ROLES

Un rol es un grupo de privilegios relacionados que se otorgan a usuarios o a otros roles.

Características

Los roles no pertenecen a nadie, no están en ningún esquema Sus características se almacenan en el diccionario de datos El nombre del rol ha de ser único en la BBDD Pueden estar formados por privilegios de sistema y privilegios de objeto Se otorgan y se revocan con los mismos comandos que se utilizan para los privilegios Es un método indirecto de asignación de privilegios

El rol es una capa intermedia entre los privilegios y los usuarios

Creación de Roles

Para crear un role utilizamos la sentencia ‘CREATE ROLE’

Sintaxis:

Role es el nombre del rol IDENTIFIED BY indica que el rol deberá activarse (en el caso que alguien lo

haya desactivado) especificando un password Modificación de Roles

Podemos modificar un rol para cambiar su método de autenticación mediante el comando ‘ALTER ROLE’

Page 11: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

Sintaxis:

role es el nombre del rol NOT IDENTIFIED especifica que ya no se necesitará un password para activar el

rol IDENTIFIED BY indica que el rol deberá activarse (en el caso que alguien lo

haya desactivado) especificando un password Asignar un role

Un rol se puede asignar a un usuario o a otros roles mediante la sentencia GRANT y se puede añadir la cláusula ‘WITH ADMIN OPTION’ para permitir a la persona que recibe el rol pueda otorgarlo a otro usuario.

El rol siempre está activado (a no ser que un usuario lo desactive) y se asigna al usuario en el momento de la conexión.

Los Roles se activan y se desactivan mediante el

comando ‘SET ROLE’

Sintaxis:

IDENTIFIED BY especificamos el password para poder activar el rol. ALL activa todos los roles otorgados al usuario salvo los que

nombremos en la cláusula EXCEPT. Esta opción solo es válida si los roles no tienen password.

NONE desactiva todos los roles de la sesión.

PERFILES

Los perfiles permiten definir limitaciones de recursos. Por ejemplo podemos definir un perfil que limite el número de sesiones abiertas concurrentemente por un usuario cualquiera, y posteriormente aplicar este perfil a uno o más usuarios concretos.

Por ejemplo, se pueden establecer 3 tipos de usuarios:

• Administradores: Que podrían tener acceso a recursos ilimitados dentro del sistema.

• Desarrolladores: Que podrían disponer de un número ilimitado de sesiones pero restringida la utilización de la CPU.

• Otros.

En síntesis, los perfiles se utilizan para suavizar las tareas de administración de la seguridad, manteniendo siempre bajo control los accesos a los recursos de todos los usuarios, por muchos que éstos puedan llegar ser.

Page 12: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

Los perfiles se crean y modifican con los comandos CREATE PROFILE y ALTER PROFILE. La sintaxis de estos comandos no necesitan ser repetidas aquí porque vienen extensamente explicados en la ayuda del software; sólo vale la pena destacar que algunas de las cláusulas hacen referencia a cuánto ciclo de CPU se le asignará a cada usuario, cuántas sesiones concurrentes podrán tener, etc.

Script de la Base de Datos

/*==============================================================*/ /* Database name: Oracle */ /* DBMS name: ORACLE Version 9i */ /* Created on: 21/04/2010 22:25:29 */ /*==============================================================*/ drop index RELATIONSHIP_17_FK / drop index RELATIONSHIP_16_FK / drop index RELATIONSHIP_1_FK / drop index RELATIONSHIP_4_FK / drop index RELATIONSHIP_11_FK / drop index RELATIONSHIP_15_FK / drop index RELATIONSHIP_19_FK / drop index RELATIONSHIP_18_FK / drop index RELATIONSHIP_14_FK / drop index RELATIONSHIP_20_FK / drop index RELATIONSHIP_13_FK / drop index RELATIONSHIP_3_FK / drop index RELATIONSHIP_5_FK / drop index RELATIONSHIP_6_FK /

Page 13: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

drop index RELATIONSHIP_7_FK / drop index RELATIONSHIP_8_FK / drop index RELATIONSHIP_10_FK / drop index RELATIONSHIP_2_FK / drop index RELATIONSHIP_9_FK / drop table DETALLE_DEV_VENTAS cascade constraints / drop table DETALLE_DEV_COMPRAS cascade constraints / drop table DEVOLUCIONES_VENTAS cascade constraints / drop table DEVOLUCIONES_COMPRAS cascade constraints / drop table DETALLES_VENTAS cascade constraints / drop table DETALLES_COMPRA cascade constraints / drop table CARACTERISTICAS cascade constraints / drop table ARTICULO cascade constraints / drop table FACTURA_VENTAS cascade constraints / drop table FACTURA_COMPRAS cascade constraints / drop table DISTRIBUIDORES cascade constraints / drop table CLIENTES cascade constraints / drop table PROVINCIA cascade constraints / drop table CIUDAD cascade constraints / drop table CATEGORIAS cascade constraints / /*==============================================================*/ /* Table: CATEGORIAS */ /*==============================================================*/ create table CATEGORIAS ( ID_CATEGORIA INTEGER not null, CAT_TIPO VARCHAR2(100), constraint PK_CATEGORIAS primary key (ID_CATEGORIA) )

Page 14: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

/ /*==============================================================*/ /* Table: CIUDAD */ /*==============================================================*/ create table CIUDAD ( ID_CIUDAD INTEGER not null, CIU_NOMBRE VARCHAR2(50), constraint PK_CIUDAD primary key (ID_CIUDAD) ) / /*==============================================================*/ /* Table: PROVINCIA */ /*==============================================================*/ create table PROVINCIA ( ID_PROVINCIA INTEGER not null, PRO_NOMBRE VARCHAR2(50), constraint PK_PROVINCIA primary key (ID_PROVINCIA) ) / /*==============================================================*/ /* Table: CLIENTES */ /*==============================================================*/ create table CLIENTES ( ID_CLIENTE INTEGER not null, ID_PROVINCIA INTEGER, ID_CIUDAD INTEGER, CEDULA CHAR(10), NOMBRE VARCHAR2(50), APELLIDO VARCHAR2(50), constraint PK_CLIENTES primary key (ID_CLIENTE), constraint FK_CLIENTES_RELATIONS_CIUDAD foreign key (ID_CIUDAD) references CIUDAD (ID_CIUDAD), constraint FK_CLIENTES_RELATIONS_PROVINCI foreign key (ID_PROVINCIA) references PROVINCIA (ID_PROVINCIA) ) / /*==============================================================*/ /* Index: RELATIONSHIP_1_FK */

Page 15: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

/*==============================================================*/ create index RELATIONSHIP_1_FK on CLIENTES ( ID_CIUDAD ASC ) / /*==============================================================*/ /* Index: RELATIONSHIP_4_FK */ /*==============================================================*/ create index RELATIONSHIP_4_FK on CLIENTES ( ID_PROVINCIA ASC ) / /*==============================================================*/ /* Table: DISTRIBUIDORES */ /*==============================================================*/ create table DISTRIBUIDORES ( ID_DISTRIBUIDOR INTEGER not null, ID_PROVINCIA INTEGER, ID_CIUDAD INTEGER, RUC CHAR(20), RAZON_SOCIAL VARCHAR2(100), TELEFONO VARCHAR2(10), constraint PK_DISTRIBUIDORES primary key (ID_DISTRIBUIDOR), constraint FK_DISTRIBU_RELATIONS_PROVINCI foreign key (ID_PROVINCIA) references PROVINCIA (ID_PROVINCIA), constraint FK_DISTRIBU_RELATIONS_CIUDAD foreign key (ID_CIUDAD) references CIUDAD (ID_CIUDAD) ) / /*==============================================================*/ /* Index: RELATIONSHIP_3_FK */ /*==============================================================*/ create index RELATIONSHIP_3_FK on DISTRIBUIDORES ( ID_PROVINCIA ASC ) / /*==============================================================*/ /* Index: RELATIONSHIP_5_FK */ /*==============================================================*/ create index RELATIONSHIP_5_FK on DISTRIBUIDORES ( ID_CIUDAD ASC )

Page 16: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

/ /*==============================================================*/ /* Table: FACTURA_COMPRAS */ /*==============================================================*/ create table FACTURA_COMPRAS ( ID_FACT_COMPRAS INTEGER not null, ID_DISTRIBUIDOR INTEGER, ID_PROVINCIA INTEGER, ID_CIUDAD INTEGER, COM_FECHA DATE, COM_SUBTOTAL NUMBER(8,2), COM_IVA NUMBER, COM_TOTAL NUMBER(8,2), constraint PK_FACTURA_COMPRAS primary key (ID_FACT_COMPRAS), constraint FK_FACTURA__FACTURA_C_PROVINCI foreign key (ID_PROVINCIA) references PROVINCIA (ID_PROVINCIA), constraint FK_FACTURA__FFACTURA__CIUDAD foreign key (ID_CIUDAD) references CIUDAD (ID_CIUDAD), constraint FK_FACTURA__RELATIONS_DISTRIBU foreign key (ID_DISTRIBUIDOR) references DISTRIBUIDORES (ID_DISTRIBUIDOR) ) / /*==============================================================*/ /* Index: RELATIONSHIP_6_FK */ /*==============================================================*/ create index RELATIONSHIP_6_FK on FACTURA_COMPRAS ( ID_PROVINCIA ASC ) / /*==============================================================*/ /* Index: RELATIONSHIP_7_FK */ /*==============================================================*/ create index RELATIONSHIP_7_FK on FACTURA_COMPRAS ( ID_CIUDAD ASC ) / /*==============================================================*/ /* Index: RELATIONSHIP_8_FK */ /*==============================================================*/ create index RELATIONSHIP_8_FK on FACTURA_COMPRAS ( ID_DISTRIBUIDOR ASC )

Page 17: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

/ /*==============================================================*/ /* Table: FACTURA_VENTAS */ /*==============================================================*/ create table FACTURA_VENTAS ( ID_FACT_VENTAS INTEGER not null, ID_PROVINCIA INTEGER, ID_CIUDAD INTEGER, ID_CLIENTE INTEGER, VEN_FECHA DATE, VEN_SUBTOTAL NUMBER(8,2), VEN_IVA NUMBER, VEN_TOTAL NUMBER(8,2), constraint PK_FACTURA_VENTAS primary key (ID_FACT_VENTAS), constraint FK_FACTURA__RELATIONS_CLIENTES foreign key (ID_CLIENTE) references CLIENTES (ID_CLIENTE), constraint FK_FACTURA__RELATIONS_PROVINCI foreign key (ID_PROVINCIA) references PROVINCIA (ID_PROVINCIA), constraint FK_FACTURA__RELATIONS_CIUDAD foreign key (ID_CIUDAD) references CIUDAD (ID_CIUDAD) ) / /*==============================================================*/ /* Index: RELATIONSHIP_2_FK */ /*==============================================================*/ create index RELATIONSHIP_2_FK on FACTURA_VENTAS ( ID_CLIENTE ASC ) / /*==============================================================*/ /* Index: RELATIONSHIP_9_FK */ /*==============================================================*/ create index RELATIONSHIP_9_FK on FACTURA_VENTAS ( ID_PROVINCIA ASC ) / /*==============================================================*/ /* Index: RELATIONSHIP_10_FK */ /*==============================================================*/ create index RELATIONSHIP_10_FK on FACTURA_VENTAS ( ID_CIUDAD ASC )

Page 18: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

/ /*==============================================================*/ /* Table: ARTICULO */ /*==============================================================*/ create table ARTICULO ( ID_ARTICULO INTEGER not null, ID_CATEGORIA INTEGER, ART_PRECIO_COMPRA NUMBER(8,2), ART_PRECIO_VENTA NUMBER(8,2), constraint PK_ARTICULO primary key (ID_ARTICULO), constraint FK_ARTICULO_RELATIONS_CATEGORI foreign key (ID_CATEGORIA) references CATEGORIAS (ID_CATEGORIA) ) / /*==============================================================*/ /* Index: RELATIONSHIP_17_FK */ /*==============================================================*/ create index RELATIONSHIP_17_FK on ARTICULO ( ID_CATEGORIA ASC ) / /*==============================================================*/ /* Table: CARACTERISTICAS */ /*==============================================================*/ create table CARACTERISTICAS ( ID_CARA INTEGER not null, ID_ARTICULO INTEGER, CARA_GENERO VARCHAR2(50), CARA_MODELO VARCHAR2(50), CARA_TALLA VARCHAR2(50), CARA_COLOR VARCHAR2(50), CARA_MARCA VARCHAR2(50), constraint PK_CARACTERISTICAS primary key (ID_CARA), constraint FK_CARACTER_RELATIONS_ARTICULO foreign key (ID_ARTICULO) references ARTICULO (ID_ARTICULO) ) / /*==============================================================*/ /* Index: RELATIONSHIP_16_FK */ /*==============================================================*/

Page 19: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

create index RELATIONSHIP_16_FK on CARACTERISTICAS ( ID_ARTICULO ASC ) / /*==============================================================*/ /* Table: DETALLES_COMPRA */ /*==============================================================*/ create table DETALLES_COMPRA ( ID_DETALLE_COMPRA INTEGER not null, ID_FACT_COMPRAS INTEGER, DCOM_CANTIDAD NUMBER, DCOM_DETALLE VARCHAR2(100), DCOM_PRECIO_COMPRA NUMBER, COM_TOTAL NUMBER(8,2), constraint PK_DETALLES_COMPRA primary key (ID_DETALLE_COMPRA), constraint FK_DETALLES_DETCOMPRA_FACTURA_ foreign key (ID_FACT_COMPRAS) references FACTURA_COMPRAS (ID_FACT_COMPRAS) ) / /*==============================================================*/ /* Index: RELATIONSHIP_11_FK */ /*==============================================================*/ create index RELATIONSHIP_11_FK on DETALLES_COMPRA ( ID_FACT_COMPRAS ASC ) / /*==============================================================*/ /* Table: DETALLES_VENTAS */ /*==============================================================*/ create table DETALLES_VENTAS ( ID_DETALLE_VENTAS INTEGER not null, ID_FACT_VENTAS INTEGER, ID_CARA INTEGER, DVEN_CANTIDAD NUMBER, DVEN_DETALLE VARCHAR2(100), DVEN_PRECIO_VENTA NUMBER, DVEN_TOTAL NUMBER(8,2), constraint PK_DETALLES_VENTAS primary key (ID_DETALLE_VENTAS), constraint FK_DETALLES_RELATIONS_CARACTER foreign key (ID_CARA) references CARACTERISTICAS (ID_CARA), constraint FK_DETALLES_RELATIONS_FACTURA_ foreign key (ID_FACT_VENTAS) references FACTURA_VENTAS (ID_FACT_VENTAS)

Page 20: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

) / /*==============================================================*/ /* Index: RELATIONSHIP_15_FK */ /*==============================================================*/ create index RELATIONSHIP_15_FK on DETALLES_VENTAS ( ID_CARA ASC ) / /*==============================================================*/ /* Index: RELATIONSHIP_19_FK */ /*==============================================================*/ create index RELATIONSHIP_19_FK on DETALLES_VENTAS ( ID_FACT_VENTAS ASC ) / /*==============================================================*/ /* Table: DEVOLUCIONES_COMPRAS */ /*==============================================================*/ create table DEVOLUCIONES_COMPRAS ( ID_DEV_COMPRA INTEGER not null, ID_DETALLE_COMPRA INTEGER, DEVC_ID_DETALLE_COMPRA VARCHAR2(100), DEVC_FECHA DATE, DEVC_TOTAL NUMBER(8,2), constraint PK_DEVOLUCIONES_COMPRAS primary key (ID_DEV_COMPRA), constraint FK_DEVOLUCI_DEVCOMPRA_DETALLES foreign key (ID_DETALLE_COMPRA) references DETALLES_COMPRA (ID_DETALLE_COMPRA) ) / /*==============================================================*/ /* Index: RELATIONSHIP_20_FK */ /*==============================================================*/ create index RELATIONSHIP_20_FK on DEVOLUCIONES_COMPRAS ( ID_DETALLE_COMPRA ASC ) / /*==============================================================*/ /* Table: DEVOLUCIONES_VENTAS */ /*==============================================================*/

Page 21: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

create table DEVOLUCIONES_VENTAS ( ID_DEV_VENTAS INTEGER not null, ID_DETALLE_VENTAS INTEGER, DEVV_ID_DETALLE_VENTA VARCHAR2(10), DEVV_FECHA DATE, DEVV_TOTAL NUMBER(8,2), constraint PK_DEVOLUCIONES_VENTAS primary key (ID_DEV_VENTAS), constraint FK_DEVOLUCI_DEVVENTAS_DETALLES foreign key (ID_DETALLE_VENTAS) references DETALLES_VENTAS (ID_DETALLE_VENTAS) ) / /*==============================================================*/ /* Index: RELATIONSHIP_13_FK */ /*==============================================================*/ create index RELATIONSHIP_13_FK on DEVOLUCIONES_VENTAS ( ID_DETALLE_VENTAS ASC ) / /*==============================================================*/ /* Table: DETALLE_DEV_COMPRAS */ /*==============================================================*/ create table DETALLE_DEV_COMPRAS ( ID_DET_DEV_COMPRA INTEGER not null, ID_DEV_COMPRA INTEGER, DDC_CANTIDAD NUMBER, DDC_DETALLE VARCHAR2(100), DDC_PRECIO_COMPRA NUMBER(8,2), DDC_TOTAL NUMBER(8,2), constraint PK_DETALLE_DEV_COMPRAS primary key (ID_DET_DEV_COMPRA), constraint FK_DETALLE__DETALLE_D_DEVOLUCI foreign key (ID_DEV_COMPRA) references DEVOLUCIONES_COMPRAS (ID_DEV_COMPRA) ) / /*==============================================================*/ /* Index: RELATIONSHIP_18_FK */ /*==============================================================*/ create index RELATIONSHIP_18_FK on DETALLE_DEV_COMPRAS ( ID_DEV_COMPRA ASC ) /

Page 22: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

/*==============================================================*/ /* Table: DETALLE_DEV_VENTAS */ /*==============================================================*/ create table DETALLE_DEV_VENTAS ( ID_DET_DEV_VENTAS INTEGER not null, ID_DEV_VENTAS INTEGER, DDV_CANTIDAD NUMBER, DDV_DETALLE VARCHAR2(100), DDV_PRECIO_VENTA NUMBER(8,2), DDV_TOTAL NUMBER(8,2), constraint PK_DETALLE_DEV_VENTAS primary key (ID_DET_DEV_VENTAS), constraint FK_DETALLE__RELATIONS_DEVOLUCI foreign key (ID_DEV_VENTAS) references DEVOLUCIONES_VENTAS (ID_DEV_VENTAS) ) / /*==============================================================*/ /* Index: RELATIONSHIP_14_FK */ /*==============================================================*/ create index RELATIONSHIP_14_FK on DETALLE_DEV_VENTAS ( ID_DEV_VENTAS ASC ) /

Page 23: UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS … · Por cada instancia de ORACLE existirá una Request Queue y varias Response Queues. Cuando un proceso usuario desea establecer conexión

Lincografía / Bibliografía

Arquitectura de Oracle, Claudia Jiménez

AjpdSoft, http://www.ajpdsoft.com/ http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=168

Manual de Oracle 9i, Jessica Vilca - [email protected]

Administración de Oracle 9.i. Ing. Eduardo Palena - Napolifirewall.com©

CI-5313 Prof. Nunzio Savino Tema Nro. 1 Arquitectura y Administración de DBMSs I Septiembre-Diciembre 2001 Introducción a la Arquitectura del RDBMS ORACLE