Вы находитесь на странице: 1из 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

TEMA 14 GESTIN DE SEGURIDAD


1. 2. 3. 4. 5. 6. 7. 8. Usuarios. Privilegios. Roles. Perfiles. Gestin de Tablespaces. Secuencias. Indices. Clusters.

Prcticas de Diseo y Gestin de Bases de Datos

Page 1 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

La gestin de seguridad tiene mucho que ver con la gestin de usuarios y con la asignacin de permisos. Podemos clasificar la seguridad de la base de datos en dos categoras: o Seguridad del sistema: Mecanismos que controlan el acceso a la base de datos a nivel del sistema. Por ejemplo, cada vez que un usuario se conecta a la base de datos, los mecanismos de seguridad comprobarn si tienen acceso a la base de datos. o Seguridad de los datos: Mecanismos que controlan el acceso y uso de la base de datos a nivel de objetos. Por ejemplo, cada vez que un usario acceda a un obejto de la base de datos (tablas, vistas..), los mecanismos de seguridad comprobarn si el usuario puede acceder a ese objeto, y qu tipo de operacin puede realizar con l. (INSERT, SELECT).

1. USUARIOS Un usuario es un nombre definido en la base de datos que se puede conectar a ella y acceder a determinados objetos segn ciertas condiciones que define el administrador. Para acceder a la base de datos, los usuarios ejecutan una aplicacin como puede ser SQL*PLUS, y se conectan usando el nombre definido en la base de datos. Asociado a cada usuario de la base de datos existe un esquema con el mismo nombre. Un esquema es una coleccin lgica de objetos (tablas, vistas....). Por defecto un usuario tiene acceso a todos los objetos de su esquema correspondiente, y puede acceder a los objetos de otro usuario siempre y cuando este otro haya concedido el privilegio de hacerlo.

1.1 Creacin de Usuarios.


Prcticas de Diseo y Gestin de Bases de Datos Page 2 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Al instalar la base de datos Oracle se crean automticamente dos usuarios con el privilegio de adminsitrador de la base de datos (DBA). Son: o SYS, cuya password inicial es CHANGE_ON_INSTALL. o SYSTEM, cuya password inicial es MANAGER.

El usuario SYS es el propietario de las tables del diccionario de datos. En el diccionario de datos se almacena informacin sobre la base de datos. Ningn usuario, aunque sea administrador, puede modificar las tablas de SYS. Slo nos conectaremos con SYS cuando las instrucciones de Oracle lo exijan. El diccionario de datos est formado por un conjunto de tablas y vistas en el tablespace SYSTEM. Los usuarios tienen acceso de solo lectura a las vistas de este diccionario. Contiene objetos de la base de datos, nombres de usarios, derechos y autorizaciones, restricciones, informacin sobre espacio libre y ocupado... Los objetos del diccionario se encuentran en la vista DICTIONARY, que es propiedad del usuario SYS.

SQL> DESC DICTIONARY; Name Null? Type ----------------------------------------------------- -------- -----------------------------------TABLE_NAME VARCHAR2(30) COMMENTS VARCHAR2(4000)

Escribir lo siguiente:
SQL> SELECT TABLE_NAME FROM DICTIONARY;

Prefijos: Vistas USER Y ALL: Accesible a todos los usarios. Vistas DBA: Slo el administrador puede utilizar esas vistas.

El usario SYSTEM es creado por Oracle para realizar las tareas de administracin de la base de datos. No se suelen crear tablas de usuario en el esquema de SYSTEM. Para crear otros usuarios es preciso conectarse como usuario SYSTEM, ya que ste posee los suficientes privilegios. Al instalar Oracle, el administrador de la base ha de crearse un usuario para s mismo con los derechos de administrador y realizar todas las tareas de administracin con este nombre de usuario. Para crear usuarios se necesita el privilegio CREATE USER
Prcticas de Diseo y Gestin de Bases de Datos Page 3 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Sintxis: CREATE USER nombre_usuario IDENTIFIED BY clave_acceso [DEFAULT TABLESPACE espacio_tabla] [TEMPORARY TABLESPACE espacio_tabla] [QUOTA {entero {K|M} | UNLIMITED} ON espacio_tabla] [PROFILE perfil] CREATE USER crea un nombre de usuario para identificarlo por el sistema. IDENTIFIED BY, permite dar una clave de acceso al usuario creado. DEFAULT TABLESPACE asigna a un usuario el tablespace por defecto para almacenar los objetos que cree. Si no se asigna ninguno el tablspace ser SYSTEM. TEMPORARY TABLESPACE especifica el nombre del tablespace oara trabajos temporales. Si no se especifica ninguno, el tablespace por defecto es SYSTEM. Es recomendable usar otro tablespace para evitar almacenar en SYSTEM QUOTA: Asigna un spacio en megabytes o kilobytes en el tablespace asignado. Si no se especifica, el usuario no tiene cuota asignada y no podr crear objetos en el tablespace. PROFILE: Asigna un perfil al usuario. Un perfil limita el nmero de sesiones concurrentes de usuario, limita el tiempo de uso de CPU, tiempo de una sesin, desconecta al usuario si se sobrepasa del tiempo.

Conectar con SQL*PLUS con SYSTEM/MANAGER


SQL> SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS; USERNAME DEFAULT_TABLESPACE -----------------------------------------------------------------------------------SYS SYSTEM SYSTEM USERS OUTLN SYSTEM DBSNMP SYSTEM MTSSYS SYSTEM AURORA$ORB$UNAUTHENTICATED SYSTEM SCOTT USERS DEMO SYSTEM ORDSYS SYSTEM ORDPLUGINS SYSTEM MDSYS SYSTEM CTXSYS SYSTEM FORM FORMDATA 13 rows selected.

Prcticas de Diseo y Gestin de Bases de Datos

Page 4 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Podemos observer los diferentes usuarios que existen. Nuestra tablespace es FORMDATA Para crear un usuario procederemos escribiendo lo siguiente: (fichero usuario.sql)
SQL> CREATE USER F01 IDENTIFIED BY F01 DEFAULT TABLESPACE FORMDATA QUOTA 500K ON FORMDATA TEMPORARY TABLESPACE FORMDATA; User created. SQL> DESC SYS.ALL_USERS; Name Null? Type ----------------------------------------------------- -------- -----------------------------------USERNAME NOT NULL VARCHAR2(30) USER_ID NOT NULL NUMBER CREATED NOT NULL DATE

La tabla ALL_USERS nos muesta informacin sobre todos los usuarios. Se encuentra en la tablespace SYS.

SQL> SELECT * FROM ALL_USERS; USERNAME USER_ID CREATED ----------------------------------------------------------- --------- ------------------SYS 0 01-MAR-99 SYSTEM 5 01-MAR-99 OUTLN 11 01-MAR-99 DBSNMP 20 01-MAR-99 MTSSYS 28 01-MAR-99 AURORA$ORB$UNAUTHENTICATED 25 01-MAR-99 SCOTT 26 01-MAR-99 DEMO 27 01-MAR-99 ORDSYS 30 01-MAR-99 ORDPLUGINS 31 01-MAR-99 MDSYS 32 01-MAR-99 CTXSYS 35 01-MAR-99 FORM 37 14-JUN-01 F01 40 30-JUN-01 14 rows selected.

1.2 Modificacin de Usuarios. Sintxis:


Prcticas de Diseo y Gestin de Bases de Datos Page 5 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

ALTER USER nombre_usuario IDENTIFIED BY clave_acceso [DEFAULT TABLESPACE espacio_tabla] [TEMPORARY TABLESPACE espacio_tabla] [QUOTA {entero {K|M} | UNLIMITED} ON espacio_tabla] [PROFILE perfil]; Modifiquemos la tablespace por defecto creada en el ejercicio anterior. Para modificar un usuario no basta con ejecutar el comando ALTER, sino tambin hay que tener ciertos permisos. Por ejemplo, cuando creamos un usario tenemos que darle privilegios, para que como minimo, pueda iniciar sesin en la base de datos.

(fichero usuario2.sql)
CREATE USER F02 IDENTIFIED BY F02 DEFAULT TABLESPACE FORMDATA QUOTA 500K ON FORMDATA TEMPORARY TABLESPACE FORMDATA; GRANT CREATE SESSION TO F02;

Si intentamos conectarnos a la base de datos con el usuario F01 no podremos, mientras que con el usuario F02 si podremos.
SQL> CONNECT F01/F01 ERROR: ORA-01045: user F01 lacks CREATE SESSION privilege; logon denied Warning: You are no longer connected to ORACLE. SQL> CONNECT F02/F02 Connected.

Por tanto para modificar un usario hay que tener ciertos permisos. No basta slo con el comando ALTER. 1.3 Borrado de Usuarios. Sintxis: DROP USER usurio [CASCADE];
Prcticas de Diseo y Gestin de Bases de Datos Page 6 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

La opcin CASCADE eleimina todos los objetos del usuario antes de borrar al usuario. Para ver las tablas de un usuario hacemos lo siguiente: o Conectarnos con los permisos de administrador. o Usar la tabla DBA_TABLES.

(fichero tablas.sql)
CONNECT SYSTEM/MANAGER; SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE OWNER='FORM'; OWNER TABLE_NAME ------------------------------ -----------------------------FORM ARTICULOS FORM CLIENTES FORM PROVEEDORES FORM TIENDAS FORM VENTAS

Supongamos que al usuario F02 le damos permisos para crear tablas con la siguiente instrucccin:

SQL > CONNECT SYSTEM/MANAGER SQL> GRANT DBA TO F02;

Supongamos que creamos una tabla llamada PRUEBA en el usuario F02.


SQL> CONNECT F02/F02; SQL> CREATE TABLE PRUEBAS ( prb_num INTEGER NOT NULL, prb_apell CHAR(10), prb_nom CHAR(10), prb_pais CHAR(1), prb_pob CHAR(10) );

Para borrar a un usuario no podemos estar conectado con ese usuario.

SQL>CONNECT SYSTEM/MANAGER SQL> DROP USER F02; DROP USER F02 * ERROR at line 1:

Prcticas de Diseo y Gestin de Bases de Datos

Page 7 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

ORA-01922: CASCADE must be specified to drop 'F02'

Y para borrar al usuario tenemos que borrar todas sus tables antes.

SQL> DROP USER F02 CASCADE; User dropped.

2. PRIVILEGIOS Un privilegio es la capacidad de un usuario dentro de la base de datos de realizar determinadas operaciones o acceder a determinados objetos de otros usuarios. Ningn usuario puede llevar a cabo una operacin si antes no se le ha concedido permiso. Mediante la asignacin de privilegios se permite o restringe el acceso a los datos o la realizacin de cambios en los datos... Cuando se crea un usuario, es necesario darles privilegios para que pueda hacer algo. Oracle ofrece varios ROLES o FUNCIONES: o CONNECT o RESOURCE o DBA o EXP_FULL_DATABASE o IMP_FULL_DATABASE Un rol est formado por un conjunto de privilegios.

Prcticas de Diseo y Gestin de Bases de Datos

Page 8 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

ROLES (FUNCIONES) CONNECT RESOURCE DBA EXP_FULL_DATABASE IMP_FULL_DATABASE

PRIVILEGIOS
ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW. CREATE CLUSTER, CREATE PROCEDURE, CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER. Posee todos los privilegios del sistema. SELECT ANY TABLE, BACKUP ANY TABLE, INSERT, UPDATE, DELETE sobre las tablas SYS.INCVID, SYS.INCFIL, SYS.INCEXP. BECOME USER

Los dos ltimos permiten exportaciones e importaciones de la base de datos completa. Hat dos tipos de privilegios en una base de datos: o Privilegios sobre los objetos. o Privilegios del sistema.

2.1 Privilegios sobre los objetos. Estos privilegios nos permiten acceder y realizar cambios en los datos de otros usuarios. Tabla X X X X X X X Vista X X X X X X Secuencia X Procedure

PRIVILEGIOS ALTER DELETE EXECUTE INDEX INSERT REFERENCES SELECT UPDATE Sintxis:

GRANT {[priv_objeto [,priv_objeto]...ALL [PRIVILEGES]} [(columna [,columna]...)] ON [usuario.]objeto TO {usuario|rol|PUBLIC} [, {usuario|rol|PUBLIC}...] [WITH GRANT OPTION];

Prcticas de Diseo y Gestin de Bases de Datos

Page 9 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

ON especifica el objeto sobre el que se quieren dar los privilegios. TO identifica a los usuarios o roles a los que se conceden los privilegios. ALL concede todos los privilegios sobre el objeto especificado. WITH GRANT OPTION permite que el receptor del privilegio o rol se los asigne a otros usuarios o roles. PUBLIC asigna los privilegios a todos los usuarios actuales y futuros. El objetivo de PUBLIC es garantizar el acceso a determinados objetos a todos los usuarios de la base de datos. Ejemplos: Supongamos que tenemos el usuario FORM/F2002, y el usuario F02/F02. Supongamos que estamos conectado como SYSTEM/MANAGER. Vamos a permitir que el usuario F02 pueda leer las tablas del usuario FORM. Para que el usuario F02 pueda leer tablas de FORM, es el usuario FORM el que asigna permisos. Por tanto:
CONNECT FORM/F2002 GRANT SELECT ON CLIENTES TO F02; GRANT SELECT ON ARTICULOS TO F02; GRANT SELECT ON TIENDAS TO F02; GRANT SELECT ON PROVEEDORES TO F02; GRANT SELECT ON VENTAS TO F02;

Ahora si nos conectamos como F02, podremos leer las tablas del usuario FORM.
SQL> CONNECT F02/F02; Connected. SQL> SELECT * FROM FORM.CLIENTES;
CLT_NUM CLT_APELL CLT_NOM C CLT_POB

----------------------------------------------------------------1 BORRAS Margarita E MADRID 2 PEREZ Miguel E MADRID 3 DUPONT Jean F PARIS 4 DUPRET Michel F LYON 5 LLOPIS Antoni E BARCELONA 6 SOURIS Marcel F PARIS 7 GOI Pablo E PAMPLONA 8 COURBON Gerard F LYON 9 ROMAN Consuelo E JAEN 10 ROCA Pau E GERONA 11 MANCHA Jorge E VALENCIA 12 CURRO Pablo E BARCELONA 13 CORTES Diego E MADRID 14 FERNANDEZ Joaquin E MADRID 15 DURAN Jacinto E PAMPLONA 16 MINGUIN Pedro E PAMPLONA 16 rows selected.

Prcticas de Diseo y Gestin de Bases de Datos

Page 10 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Si ahora escribimos:

SQL> INSERT INTO FORM.CLIENTES VALUES (17,'CESAR','Jose','E','SEVILLA'); INSERT INTO FORM.CLIENTES VALUES (20,'CESAR','Jose','E','SEVILLA') * ERROR at line 1: ORA-01031: insufficient privileges

Vemos que no tenemos los suficientes privilegios, porque antes hemos dado slo permisos de lectura.

GRANT ALL ON nombre_tabla TO PUBLIC; Con esto el usuario con el que estemos conectado concede todos los privilegios sobre la tabla nombre_tabla a todos los usuarios, incluso a los que se creen despues de ejecutar la orden.
SQL> CONNECT FORM/F2002; SQL> GRANT ALL ON CLIENTES TO PUBLIC; Grant succeeded. SQL> GRANT UPDATE (vnt_tda) ON VENTAS TO F02; Grant succeeded.

Ahora con la primera sentencia damos todos los permisos a todos los usuarios para que en la tabla CLIENTES. Con la segunda sentencia estamos permitiendo que el usuario F02 pueda actualizar los datos de la columna vnt_tda de la tabla ventas. Con la opcin WITH GRANT OPTION el usuario al que se le concede los permisos, puede darle permisos a otro usuario.

2.2. Privilegios del sistema Los privilegios del sistema son los que dan derecho a ejecutar un tipo de comando SQL o a realizar alguna accin sobre objetos de un tipo especificado. Existen unos 80. Veremos algunos de ellos en la siguiente tabla.

PRIVILEGIOS DEL SISTEMA


Prcticas de Diseo y Gestin de Bases de Datos

OPERACIONES AUTORIZADAS
Page 11 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

AUDIT AUDIT ANY CREATE CLUSTER CREATE ANY CLUSTER ALTER ANY CLUSTER. DROP ANY CLUSTER ALTER DATABASE CREATE DATABASE LINK CREATE PUBLIC DATABASE LINK CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX GRANT ANY PRIVILEGE CREATE ANY PROCEDURE CREATE PROCEDURE ALTER ANY PROCEDURE DROP ANY PROCEDURE EXECUTE ANY PROCEDURE CREATE PROFILE ALTER PROFILE DROP PROFILE CREATE ROLE ALTER ANY ROLE DROP ANY ROLE GRANT ANY ROLE
Auditar un objeto de la base de datos.

CLUSTER
Crear un cluster en el propio esquema. Crear un cluster en cualquier esquema. Modificar cualquier cluster en la base de datos. Borrar cualquier cluster en la base de datos.

DATABASE
Modificar la base de datos, aadindole ficheros. Crear enlaces privados para acceder a otra base. Crear links pblicos para acceder a otra base de datos.

INDEX
Crear un ndice en cualquier esquema en cualquier tabla Modificar cualquier ndice de la base de datos. Borrar cualquier ndice de la base de datos.

PRIVILEGE
Conceder cualquier privilegio en el sistema.

PROCEDURE
Crear procedimientos almacenados, funciones y paquetes en cualquier esquema Crear procedimientos almacenados, funciones y paquetes en nuestro esquema. Modificar procedimientos almacenados, funciones y paquetes en cualquier esquema. Borrar procedimientos almacenados, funciones y paquetes en cualquier esquema Ejecutar procedimientos almacenados, funciones o referencias a paquetes pblicos en cualquier esquema

PROFILE
Crear un perfil de usuario. Modificar un perfil de usuario. Borrar cualquier perfil.

ROLE
Crear roles. Modificar roles. Borrar cualquier rol. Dar permisos para cualquier rol de la base.

ROLLBACK_SEGMENT Crear segmentos rollback. CREATE ROLLBACK SEGMENT Modificar segmentos de rollback. ALTER ROLLBACK SEGMENT Eliminar segmentos de rollback. DROP ROLLBACK SEGMENT SEQUENCE
Prcticas de Diseo y Gestin de Bases de Datos Page 12 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

CREATE SEQUENCE ALTER ANY SEQUENCE DROP ANY SEQUENCE SELECT ANY SEQUENCE CREATE SESSION ALTER SESSION RESTRICTED SESSION CREATE SYNONYM CREATE PUBLIC SYNONYM DROP PUBLIC SYNONYM CREATE ANY SYNONYM DROP ANY SYNONYM CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE LOCK ANY TABLE SELECT ANY TABLE INSERT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE CREATE TABLESPACES ALTER TABLESPACES MANAGE TABLESPACES DROP TABLESPACES UNLIMITED TABLESPACES CREATE ANY TRIGGER ALTER ANY TRIGGER DROP ANY TRIGGER CREATE TRIGGER CREATE USER

Crear secuencias en nuestro esquema. Modificar cualquier secuencia de la base. Borrar secuencias de cualquier esquema. Referenciar secuencias de cualquier esquema.

SESSION
Conectarnos a la base de datos. Manejar la orden ALTER SESSION Conectarnos a la base de datos cuando se ha levantado con STARTUP RESTRICT.

SYNONYM
Crear sinnimos en nuestro esquema. Crear sinnimos pblicos. Borrar sinnimos pblicos. Crear sinnimos en cualquier esquema. Borrar sinnimos en cualquier esquema.

TABLE
Crear tablas en nuestro esquema y generar ndices sobre las tablas del esquema. Crear una tabla en cualquier esquema. Modificar una tabla en cualquier esquema. Borrar una tabla en cualquier esquema. Bloquear una tabla en cualquier esquema. Hacer SELECT en cualquier tabla. Insertar filas en cualquier tabla. Modificar filas en cualquier tabla. Borrar filas en cualquier tabla.

TABLESPACES
Crear espacios de tablas. Modificar tablespaces. Poner on/off line a cualquier tablespace. Eliminar tablespaces. Utilizar cualquier espacio de cualquier tablespace.

TRIGGERS
Crear triggers en cualquier esquema de la base. Activar o desactivar cualquier trigguer. Eliminar triggers de cualquier esquema. Crear triggers en nuestro esquema.

USER
Crear usuarios y crear cuotas sobre cualquier espacio de tablas, establecer espacios de tablas por omisin y temporales.

Prcticas de Diseo y Gestin de Bases de Datos

Page 13 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

ALTER USER DROP USER CREATE VIEW CREATE ANY VIEW DROP ANY VIEW

Modificar cualquier usuario.Este privilegio autoriza a quien lo reci be a cambiar la contrasea de otro usuario, a cambiar cuotas sobre cualquier espacio de tablas, a establecer espacios de tablas por omisin, etc. Eliminar usuarios.

VIEW
Crear vistas en el esquema propio. Crear vistas en cualquier esquema. Borrar vistas en cualquier esquema.

Sintxis: GRANT {privilegio|rol} [, {privilegio|rol}...] TO {usuario|rol|PUBLIC} [, {usuario|rol|PUBLIC}] . [WITH ADMIN OPTION]; TO identifica los usuarios o roles a los que se les conceden privilegios. La clusula WITH ADMIN OPTION permite que el receptor del privilegio o rol pueda conceder esos mismos privilegios a otros usuarios o roles..

Ejemplo: Cuando creamos un usuario, no slo basta con crear el usuario, sino tb tenemos que asiganr permisos de conexin. Sabemos que la conexin es un rol (CONNECT). Podemos dar el rol CONNECT de la siguiente forma: o o
GRANT CONNECT TO usuario; GRANT CREATE SESSION TO usuario;

La diferencia entre CREATE SESSION Y CONNECT es que CREATE SESSION nos permite conectarnos, pero CONNECT adems de conectarnos permite: ALTER SESSION CREATE CLUSTER CREATE DATABASE LINK CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE
Page 14 of 31

Prcticas de Diseo y Gestin de Bases de Datos

Formacin 2002.

Tema 14. Gestin de Seguridad.

CREATE VIEW.

Supongamos que deseamos dar el permiso de administrador a un usuario:


GRANT dba TO usuario;

Para entender estos ejemplos basta con seguir la tabla de Roles que vimos varias pginas atrs. Estos ejemplos que hemos visto es referente a roles, pero veamos alguno referente a privilegios del sistema: Por ejemplo, para hacer que el usuario F02, pueda borrar usuarios y adems conceder ese privilegio a otros usuarios:
SQL> CONNECT SYSTEM/MANAGER Connected. SQL> GRANT DROP USER TO F02 WITH ADMIN OPTION; Grant succeeded.

Nos conectaremos como adminstardor y daremos privilegios.

2.2 Retirada de Permisos Al igual que se conceden privilegios, se pueden retirar. La orden REVOKE retira privilegios o roles a los usuarios y privilegios concedidos a los roles. Sintxis para retirar privilegios de objetos a los usuarios o roles: REVOKE {priv_objeto [, priv_objeto]....|ALL [PRIVILEGES]} ON [usuario.]objeto FROM {usuario|rol|PUBLIC} [, {usuario|rol|PUBLIC]...; Sintxis para retirar privilegios del sistema o roles a los usuarios o para retirar privilegios a roles: REVOKE {priv_sistema|rol} [,{priv_sistema|rol}]... FROM {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC}]...; Ejemplos: Retirar los privilegios SELECT (privilegio de objetos) sobre la tabla CLIETES a F02:
Prcticas de Diseo y Gestin de Bases de Datos Page 15 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

SQL> CONNECT Enter user-name: FORM Enter password: ***** Connected. SQL> REVOKE SELECT ON CLIENTES FROM F02; Revoke succeeded.

Ahora quitamos todos los privilegios que tuviera F02 sobre la tabla clientes del usuario FORM.

SQL> REVOKE ALL ON CLIENTES FROM F02; Revoke succeeded.

Veamos un ejemplo de retirada de privilegios del sistema:

Rerirar el privilegio a F02 de consultar cualquier tabla:


SQL> CONNECT SYSTEM/MANAGER Connected. SQL> GRANT SELECT ANY TABLE TO F02; Grant succeeded. SQL> REVOKE SELECT ANY TABLE FROM F02; Revoke succeeded.

Primero le hemos asignado privilegios porque no los posea y despus se los hemos quitado.

Prcticas de Diseo y Gestin de Bases de Datos

Page 16 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

2.3 Vistas con informacin de los privilegios. Para conocer los privilegios que han concedido o recibido los usuarios sobre los objetos o a nivel de sistema, podemos consultar las siguientes vistas del diccionario de datos: VISTA
SESSION_PRIVS USER_SYS_PRIVS DBA_SYS_PRIVS USER_TAB_PRIVS USER_TAB_PRIVS_MADE USER_TAB_PRIVS_RECD USER_TAB_GRANTS USER_TAB_GRANTS_MADE USER_TAB_GRANTS_RECD

DESCRIPCIN
Privilegios del usuario activo. Privilegios de sistema asignado al usuario. Privilegios de sistema asignado a los usuarios o roles. Concesiones sobre objetos que son propiedad del usuario, concedidos o recibidos por ste. Concesiones sobre objetos que son propiedad del usuario. Concesiones sobre objetos que recibe el usuario. Concesiones en objetos para los que el usuario es propietario, el que concedi el privilegio o al que se concedi el privilegio. Todas las concesiones hechas en objetos que son propiedad del usuario. Concesiones en objetos en las que el usuario es aquel al que se ha concedido el privilegio (concesiones recibidas) Igual que las anteriores, pero aparecen las concesiones de todos los usuarios. Concesiones en columnas para las que el usuario es propietario, el que concedi el privilegio o al que se le concedi el privilegio. Son iguales que las anteriores vistas pero para columnas. Son iguales que las anteriores vistas, pero aparecen concesiones de todos los usuarios de la base de datos. Concesiones sobre columnas en las que el usuario es propietario. Todas las concesiones sobre columnas de objetos que son propiedad del usuario. Concesiones de columnas recibidas por el usuario.

ALL_TAB_GRANTS, ALL_TABS_GRANTS_MADE, ALL_TAB_GRANTS_RECD USER_COL_GRANTS USER_COL_GRANTS_MADE, USER_COL_GRANTS_RECD ALL_COL_GRANTS, ALL_COL_GRANTS_MADE, ALL_COL_GRANTS_RECD USER_COL_PRIVS USER_COL_PRIVS_MADE USER_COL_PRIVS_RECD

Prcticas de Diseo y Gestin de Bases de Datos

Page 17 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

SQL> CONNECT F02/F02 Connected. SQL> SELECT * FROM SESSION_PRIVS; PRIVILEGE ---------------------------------------CREATE SESSION DROP USER

3. ROLES Supongamos que un conjunto de usuarios requieren el mismo conjunto de privilegios para trabajar con ciertos datos. Este conjunto de privilegios se puede agrupar en un rol, de tal manera que es posible asignar el mismo rol a cada uno de los usuarios. Un rol o funcin es un conjunto de privilegios que recibe un nombre comn para facilitar la tarea de asignacin de stos a los usuarios o a otros roles. Los privilegios de un rol pueden ser de sistema y a nivel de objeto. Pasos a la hora de crear un role: o o o o Crear el role. Asignar los privilegios a ese rol. Crear la sesion de conexin. Conceder el rol al usuario.

Sintxis: o CREATE ROLE nombre_role [IDENTIFIED BY contrasea]; o GRANT .. TO nombre_roleM Vamos a crear el role ACCESO, que asignar permisos de consulta y de insercin en la tabla clientes para el usuario F02:

SQL> CONNECT FORM/F2002 Connected. SQL> CREATE ROLE ACCESO; Role created. SQL> GRANT SELECT, INSERT ON CLIENTES TO ACCESO; Grant succeeded.

Prcticas de Diseo y Gestin de Bases de Datos

Page 18 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

SQL> GRANT CREATE SESSION TO ACCESO; Grant succeeded. SQL> GRANT ACCESO TO F02; Grant succeeded.

Si ahora nos conectamos con el usuario F02:

SQL> CONNECT F02 Enter password: *** Connected. SQL> SELECT * FROM FORM.CLIENTES;
CLT_NUM CLT_APELL CLT_NOM C CLT_POB

----------------------------------------------------------------1 BORRAS Margarita E MADRID 2 PEREZ Miguel E MADRID 3 DUPONT Jean F PARIS 4 DUPRET Michel F LYON 5 LLOPIS Antoni E BARCELONA 6 SOURIS Marcel F PARIS 7 GOI Pablo E PAMPLONA 8 COURBON Gerard F LYON 9 ROMAN Consuelo E JAEN 10 ROCA Pau E GERONA 11 MANCHA Jorge E VALENCIA 12 CURRO Pablo E BARCELONA 13 CORTES Diego E MADRID 14 FERNANDEZ Joaquin E MADRID 15 DURAN Jacinto E PAMPLONA 16 MINGUIN Pedro E PAMPLONA 16 rows selected.

3.1. Supresin de privilegios de un Rol. Sintxis: REVOKE privilegio1 [, privelgio2...] ON nombre_tabla FROM nombre_role;

3.2. Supresin de un Rol. Sintxis: DROP ROLE nombre_role;

3.3. Establecer un rol por defecto.


Prcticas de Diseo y Gestin de Bases de Datos Page 19 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Sintxis: ALTER USER nombre_usuario DEFAULT {[ROLE nombre_rol] | [NONE]}; NONE: Hace que el usuario no tenga rol por defecto.

Vamos a asignar por defecto el rol ACCESO a F02;

SQL> ALTER USER F02 DEFAULT ROLE ACCESO; User altered.

3.4. Roles en el diccionario de datos. VISTA USER_TAB_PRIVS ROLE_SYS_PRIVS ROLE_TAB_PRIVS ROLE_ROLE_PRIVS SESSION_ROLES USER_ROLE_PRIVS DBA_SYS_PRIVS DBA_ROLE_PRIVS DBA_ROLES 4. PERFILES. Un perfil es un conjunto de lmites a los recursos de la base de datos. Podemos limitar el tiempo de conexin a la base de datos. Si se asigna un perfil a un usuario y ste sobrepasa el tiempo de conexin, no podr usar la base de datos, a no ser que vuelva a realizar de nuevo la conexin. Por defecto a los usuairos se les asigna el prefil DAFAULT cuando se les da de alta por primera vez. En principio, este perfil define recursos limitados (UNLIMITED) DESCRIPCIN
Concesiones sobre objetos que son propiedad del usuario, concedidos o recibidos por ste. Privilegios del sistema asignado a roles. Privilegios sobre tablas aplicados a roles. Roles asignados a otros roles. Roles activos para el usuario. Roles asignados al usuario. Privilegios del sistema asignados a los usuarios o roles. Privilegios asignados a todos los usuarios y roles. Todos los roles.

4.1. Creacin de perfiles.

Prcticas de Diseo y Gestin de Bases de Datos

Page 20 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Sintxis: CREATE PROFILE nombre_perfil LIMIT { SESSIONS_PER_USER | CPU_PER_SESSION | CPU_PER_CALL | CONNECT_TIME | IDLE_TIME | LOGICAL_READS_PER_SESSION | LOGICAL_READS_PER_CALL | PRIVATE_SGA | COMPOSITE_LIMIT } {Entero {K|M} | UNLIMITED | DEFAULT} [{ SESSIONS_PER_USER | CPU_PER_SESSION | CPU_PER_CALL | CONNECT_TIME | IDLE_TIME | LOGICAL_READS_PER_SESSION | LOGICAL_READS_PER_CALL | PRIVATE_SGA | COMPOSITE_LIMIT } {Entero {K|M} | UNLIMITED | DEFAULT} ]..

RECURSO SESSION_PER_USER CONNECT_TIME IDLE_TIME CPU_PER_SESSION CPU_PER_CALL LOGICAL_READS_PER_SESSION LOGICAL_READS_PER_CALL PRIVATE_SGA COMPOSITE_LIMIT

FUNCIN
Nmero de sesiones multiples concurrentes permitidas por nombre de usuario. Limita el tiempo de conexin permitido por sesin antes de que el usuario sea desconectado(minutos). Limita el tiempo de inactividad permitido antes de que el usuario sea desconectado(minutos). Limita el tiempo mximo de CPU por sesin. Este valor se expresa en centsimas de segundos. Limita el tiempo mximo de CPU por llamada (de anlisis, ejecucin o bsqueda). Este valor se expresa en centsimas de segundos. Limita el nmero de bloques de datos leidos en una sesin. Limita el nmero de bloques de datos leidos por llamada (de anlisis, ejecucin o bsqueda). Limita el nmero de bytes enteros de espacio privado en la SGA. Limita el coste total de recursos para una sesin en unidades de servicio basadas en una suma de los siguientes recursos: CPU_PER_SESSION, CONENCT TIME, LOGICAL_READS_PER_SESSION Y PRIVATE_SGA

Ejemplos

Prcticas de Diseo y Gestin de Bases de Datos

Page 21 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Crear el PERFIL1 en el que limitamos el acceso a uno el nmero de sesiones concurrentes por usuarios y a dos minutos el tiempo de conexin permitido por sesin.

SQL> EDIT PERFIL1 El fichero perfil1 contiene la siguiente informacin: CREATE PROFILE PERFIL1 LIMIT SESSIONS_PER_USER 1 CONNECT_TIME 2; SQL> @PERFIL1 Profile created. A continuacin asignamos este perfil al usuario F02. SQL> ALTER USER F02 2 PROFILE PERFIL1; User altered. Para activar el uso de perfiles en el sistema, el administrador ha de ejecutar esta orden: SQL> CONNECT FORM Enter password: ***** Connected. SQL> ALTER SYSTEM SET RESOURCE_LIMIT=TRUE; System altered. Ahora nos conectamos con el usuario F02/F02

4.2. Borrado de perfiles. Sintxis: DROP PROFILE nombreperfil [CASCADE];


Por ejemplo: SQL> CONNECT FORM Enter password: ***** Connected. SQL> DROP PROFILE PERFIL1; DROP PROFILE PERFIL1 * ERROR at line 1: ORA-02382: profile PERFIL1 has users assigned, cannot drop without CASCADE No podemos borrar el perfil porque existe algn usuario que tiene asignado ese perfil. Si deseamos borrar ese perfil aunque haya usuarios que lo tengan asignados usaremos CASCADE. Prcticas de Diseo y Gestin de Bases de Datos Page 22 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Para ello: SQL> DROP PROFILE PERFIL1 CASCADE; Profile dropped.

5. GESTIN DE TABLESPACES. Una base de datos est constituida por un conjunto de archivos de datos, pero Cmo se ocupa Oracle de estos archivos? Oracle gestiona estos archivos usando TABLESPACES. Se llama as porque tiene tablas de datos. Antes de introducir los datos en la base de datos, es necesario: a) Crear el Tablespace. b) Crear las tablas en las que se van a introducir los datos. Las tablas se suelen almacenar en un tablespace. Un tablespace es una unidad lgica de almacenamiento de datos representados fsicamente por uno o ms archivos de datos. Se recomienda no mezclar los datos de diferentes aplicaciones en el mismo tablespace, es decir, se debe crear un tablespace para almacenar los datos de la aplicacin para una aplicacin de gestin de almacn, otro para la de empleados... Existen varios tablespaces que se crean al instalar Oracle: a) SYSTEM: Lugar en el que Oracle almacena toda la informacin que necesita para su propia gestin. b) USER_DATA: Este espacio de tablas, contiene informacin personal de los usuarios. c) ROLL_BACK_DATA: Es el lugar donde Oracle guarda la informacin de deshacer. d) TEMPORARY_DATA: Es el espacio de tablas donde Oracle almacena todas sus tablas temporales.

5.1. Creacin de tablespaces.


Prcticas de Diseo y Gestin de Bases de Datos Page 23 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Se usa la orden CREATE TABLESPACE que permite asignar uno o ms archivos al espacio de tablas y especificar un espacio por omisin para cualquiera de las tablas creadas sin un espacio de tabla explcitamente mencionado. Sintxis: CREATE TABLESPACE nombretablespace DATAFILE nombrearchivo [SIZE entero [K|M][REUSE] [, nombrearchivo [SIZE entero [K|M][REUSE]]... [DEFAULT STORAGE ( INITIAL tamao NEXT tamao MINEXTENTS tamao MAXEXTENTS tamao PCTINCREASE valor )] [ONLINE|OFFLINE]; OPCIN DESCRIPCIN Especifica el arhivo, o archivo de datos. DATAFILE Tamao en Kbytes o MegaBytes. SIZE Reutiliza el archivo si ya exixta o lo crea si no REUSE DEFAULT STORAGE

INITIAL NEXT MINEXTENTS

MAXEXTENTS PCTINCREASE

ONLINE,OFFLINE Ejemplo:
Prcticas de Diseo y Gestin de Bases de Datos

existe. Define el almacenamiento por omisin para todos los bojetos que se creen en este espacio de tabla. Fija la cantidad de espacio si no se especifica en la sentencia CREATE TABLE. Extensin inicial. Especifica el tamao en bytes de la primera extensin que se va a asignar al objeto. Extensin siguiente. Si el valor es 1, slo asigna la extensin inicial. Si es mayor que 1, se clalcula el tamao de las extensiones subsiguientes basndose en INITIAL, NEXT, PCTINCREASE. Nmero total de extensions, incluida la primera. Factor de crecimiento para la extensin. Valor por defecto es 50, que significa que cada extensin subsiguiente ser un 50% ms grande que la anterior. NEXT = NEXT + (PCTINCREASE*NEXT)/100 ONLINE permite el acceso. OFFLINE impide el acceso

Page 24 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Vamos a crear un TABLESPACE de 15 Megas llamado TRABAJO. El tamao inicial para un objeto que se cree en ese tablespace ser 15K. Cada extensin subsiguiente ser un 24% ms grande que la anterior. Asignaremos 2 archivos a ese TABLESPACE, TRABAJ1,ORA de 10 M, TRABAJ2,ORA de 5M.

Fichero creartablespace.sql.
CREATE TABLESPACE TRABAJO DATAFILE 'TRABAJ1.ORA' SIZE 10M, 'TRABAJ2.ORA' SIZE 5M DEFAULT STORAGE ( INITIAL 15K NEXT 15K PCTINCREASE 24 ); Por defecto los archivos de datos los va a crear en C:\ORACLE\ORA81\DATABASE SQL> SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME, BYTES FROM DBA_DATA_FILES; Con esta sentencia podemos ver los tablespaces de la base de datos.

Existen una serie de vistas que contienen informacin sobre los tablespaces. DESCRIPCIN
Son extensiones libres en tablespaces a las que puede acceder el usuario. Son extensiones libres en todos los tablespaces. Slo pueden acceder los administradores. Es la descripcin de todos los tablespaces. Describe los bytes usados por los usuarios en cada tablespace. Se puede acceder con administrador.

VISTA USER_FREE_SPACE DBA_FREE_SPACE DBA_TABLESPACES DBA_TS_QUOTAS

Ejemplo:
SQL> CONNECT F02/F02; SQL> SELECT * FROM USER_FREE_SPACE; TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO ------------------------------------------ ------------ ------------------ ----------- ------------- --------------------FORMDATA 7 27 52375552 25574 7

FILE_ID: Nmero de identificacin del archivo.

Prcticas de Diseo y Gestin de Bases de Datos

Page 25 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

BLOCK_ID: Identificacin del primer bloque libre. BYTES: Es el nmero de bytes libres. BLOCKS: N de bloques libres. RELATIVE_FNO: Nmero relativo del fichero en la primera extensin del bloque.

Ejemplo:
SQL> CONNECT FORM/F2002; Connected. Nos conectamos como administrador. SQL> SELECT * FROM DBA_TS_QUOTAS; MAX_BYTES: N mximo de bytes que tiene el usuario asignado. Si es -1 el nmero de bytes es ilimitado. BLOCKS: Nmero de bloques usados. MAX_ BLOCKS: Mximo nmero de bloques. BYTES: Nmero de bytes usados por el usario.

5.2. Modificacin de usuarios. Los tablespaces una vez creados se pueden modificar, es decir, se pueden aadir nuevos archivos, modificar las clusulas existentes. Sintxis: ALTER TABLESPACE nombretablespace { [ADD DATAFILE nombrearchivo [SIZE entero [K|M][REUSE] [AUTOEXTEND ON..|OFF] [,nombrearchivo [SIZE entero [K|M][REUSE] [AUTOEXTEND ON..|OFF]... ] [RENAME DATAFILE archivo [, archivo]... TO archivo [,archivo]] [DEFAULT STORAGE clausulaalmacenamiento] [ONLINE|OFFLINE] };

OPCIN nombretablespace
Prcticas de Diseo y Gestin de Bases de Datos

DESCRIPCIN
Nombre del tablespace que se quiere modificar. Page 26 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

ADD_DATAFILE AUTOEXTEND

RENAME DATAFILE DEFAULT STORAGE ONLINE OFFLINE 5.3. Borrado de tablespaces.

Aade al tablespace uno o varios archivos. Activa o desactiva el crecimiento automtico de los archivos de datos en el tablespace. AUTOEXTEND OFF: Desactiva el crecimiento automtico. AUTOEXTEND ON: NEXT Entero es el incrementode espacio de disco. MAXSIZE: Mximo espacio de disco reservado para la extensin automtica del archivo. UNLIMITED: Significa que no hay lmite de espacioen el disco reservado. El tablespace debe estar desactivado (offline) mientras se produce el cambio. Especifica los nuevos parmetros de almacenamiento para todos los objetos que se creen a partir de ahora en el tablespace. Pone el espacio de tablas activado. Pone el espacio de tablas desactivado.

Sintxis: DROP TABLESPACE nombretablespace [INCLUDING CONTENTS]; INCLUDING CONTENS permite borrar un tablespace que tenga datos. Se recomienda poner el tablespace en OFFLINE para asegurarnos de que no hay sentencia SQL que estn accediendo a los datos, en cuyo caso no sera posible borrarlos. Cuando se borra un tablespace, los archivos asociados no se borran del sistema operativo, por lo que tendremos que borrarlos de forma manual.

6. SECUENCIAS. Una secuencia es un objeto de la base de datos que genera enteros nicos.
Page 27 of 31

Prcticas de Diseo y Gestin de Bases de Datos

Formacin 2002.

Tema 14. Gestin de Seguridad.

Es muy til para generar automticamente valores para claves primarias. Para crear una secuencia en el esquema propio es necesario tener el privilegio CREATE SECUENCE. Sintxis: CREATE SEQUENCE nombresecuencia [INCREMENT BY entero] [START WITH entero] [MAXVALUE entero | NOMAXVALUE] [MINVALUE entero | NOMINVALUE] [CYCLE | NOCLYCLE] [ORDER | NOORDER] [CACHE entero | NOCACHE]

OPCIN INCREMENT BY START WITH MAXVALUE NOMMAXVALUE MINVALUE NOMMINVALUE CYCLE | NOCYCLE ORDER | NOORDER

DESCRIPCIN
Intervalo de crecimiento. Si se omite es 1. Nmero de comienzo de la secuencia. Nmero ms alto que generar la secuencia. No hay lmite, para una secuencia descendente es -1. Nmero ms bajo que generar la secuencia. Indica que el valor mnimo para una secuencia ascendente es 1 y sin lmite para una secunecia descendente. CYCLE reanuda la secuencia cuando llega al mximo. NOCYCLE no la reanuda. Garantiza que los nmeros de secuencias se generan en el orden requerido. Si se omiten ambas se asume NOORDER. ORDER slo es necesario para servidores en PARALELO. Guarda en memoria un conjunto previamente asignado de nmero de secuencias.

CACHE | NOCACHE

Cuando se crea la secuencia accedemos a ella mediante CURRVAL que devuelve el valor de la secuencia. NEXTVAL devuelve el siguiente valor e incrementa la secuencia. Para acceder a estos valores usamos las columnas: a) nombresecuencia.CURRVAL. b) nombresecuancia.NEXTVAL.

Prcticas de Diseo y Gestin de Bases de Datos

Page 28 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Ejemplo: Sabemos que la tabla articulos tiene 15 filas. Vamos a crear una secuencia para que inserte automaticamente el valor de la columna art_num.
SQL>CREATE SEQUENCE CODIGOS START WITH 16 INCREMENT BY 1 MAXVALUE 99; SQL>INSERT INTO articulos VALUES (CODIGOS.NEXTVAL, 'IMPRESORA', 150, 'ROJO', 400,580,4); Borramos de la tabla articulos: SQL>DELETE FROM ARICULOS WHERE ART_NUM=16; SQL>COMMIT; Para borrar la secuencia: SQL> DROP SEQUENCE CODIGOS; Sequence dropped.

7. INDICES. Con los indices se acelera el tiempo de respuesta de consultas. Un ndice es un objeto de la base de datos que se asocia a una tabla y al que se asocia una o varias columnas de una tabla. Se puede almacenar los ndices en tablespaces diferentes al de las tablas que indexan. Se debe indexar cuando tengamos una gran cantidad de filas en una tabla. El ndice ser aquel campo normalmente por el que deseemos buscar ms rpidamente. No se deben indexar columnas que no son modificadas a menudo y que posean pocos valores diferentes. Por este motivo, lo que se indexa normalmente es el campo de la clave primaria.

Sintxis: CREATE INDEX nombreindice ON nombretabla (columna1 [ASC|DESC] [,columna2 [ASC|DESC]]...) [STORAGE clausulas_almacenamiento] [TABLESPACE nombretablaspace] [otras clusulas]; Ejemplo:
SQL> CREATE INDEX NUMART ON ARTICULOS (ART_NUM); Index created.

Prcticas de Diseo y Gestin de Bases de Datos

Page 29 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Borramos el ndice:
SQL> DROP INDEX NUMART; Index dropped.

Para ver los ndices existentes, podemos usar las vistas: a) USER_INDEXES. b) DBA_INDEXES.

SQL> SELECT INDEX_NAME, TABLE_NAME FROM USER_INDEXES WHERE TABLE_NAME='ARTICULOS'; no rows selected

8. CLUSTERS. Las operaciones de combinaciones de tablas se pueden mejorar usando clusters. Un cluster es un objeto de base de datos que almacena varias tablas que tienen una o ms columnas en comn en una misma rea de disco. Con esto se consigue que las operaciones de combinacin de tablas ganen rapidez. Las filas de las tablas con los mismos valores en las columnas de combinacin se almacenan fsicamente juntas; de esta forma, las consultas sern ms rpidas. Sintxis: CREATE TABLE nombretabla [definicin de columnas] CLUSTER nombrecluster (columna1 [,columna2]); CREATE CLUSTER nombrecluster (columna tipo_dato [, columna tipo_dato]) [SIZE entero] [STORAGE (clusulas_almacenamiento)] [TABLESPACE nombretablespace]; Por tanto si varias tablas comparten columnas es conveniente crear clusters. Una vez creado el cluster, es necesario crear el ndice, porque si no lo creamos no podremos insertar valores en las tablas.

Ejemplo:
Prcticas de Diseo y Gestin de Bases de Datos Page 30 of 31

Formacin 2002.

Tema 14. Gestin de Seguridad.

Vamos a crear el cluster EMPLEYDEPART.

Fichero crearcluster.sql.
SQL> CREATE CLUSTER EMPLEYDEPART (numero_departamento NUMBER(2)); Cluster created.

A continuacin creamos las tablas DEPART y EMPLE Fichero creartablas.sql.

CREATE TABLE DEPART ( DEPT_NO NUMBER(2) NOT_NULL DNOMBRE VARCHAR(14), LOC VARCHAR(14) ) CLUSTER EMPLEYDEPART (DEPT_NO); CREATE TABLE EMPLE ( EMP_NO NUMBER(4) NOT_NULL, APELLIDO VARCHAR(10), OFICIO VARCHAR(10), DIR NUMBER(4), FECHA_ALTA DATE, SALARIO NUMBER(10), COMISION NUMBER(10), DEPT_NO NUMBER(2) NOT_NULL) ) CLUSTER EMPLEYDEPART (DEPT_NO); CREATE INDEX IND_EMPYDEP ON CLUSTER EMPLEYDEPART;

Prcticas de Diseo y Gestin de Bases de Datos

Page 31 of 31

Вам также может понравиться