Admin is Trac Ion de Oracle

59

Click here to load reader

Transcript of Admin is Trac Ion de Oracle

Page 1: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

1

¿Qué es Oracle?• Oracle es un Sistema de Gestión de

Bases de Datos Relacional (SGBDR).• Es la base de datos más utilizada

actualmente.• Características:

– Mecanismos de seguridad: acceso a los datos según privilegios concedidos por el administrador.

– Copia de seguridad y recuperación: Sofisticados procedimientos para hacer copias de seguridad y recuperar datos.

– Gestión del espacio: Podemos asignar espacio en disco para almacenar datos y controlar ese espacio.

– Conectividad abierta: Es posible acceder a datos de Oracle usando SW de otros fabricantes.

– Herramientas de desarrollo: el motor de la base de datos, Oracle Server, admite una amplia gama de herramientas de desarrollo de aplicaciones: de consulta para el usuario y de gestión de la información.

Page 2: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

2

Herramientas Oracle• Oracle Server: es el motor de la BD. Permite

almacenar grandes cantidades de datos, proporcionando a los usuarios un rápido acceso. Los datos almacenados se pueden compartir entre varias aplicaciones.

• Personal Oracle: es la BD Oracle para ordenadores personales en entornos DOS y Windows, una implementación del Oracle Server.

• Oracle Office: Conjunto de productos para gestión administrativa (mensajería, ortografía, ..)

• Oracle Loader: Permite introducir datos en una BD Oracle de forma rápida.

• Designer 2000: Permite diseñar, programar, implementar y mantener sistemas.

• Developer 2000: Formada por un conjunto de productos:– SQL*Plus: El SQL de Oracle. Lenguaje de

consultas de BD.– Oracle Forms: Diseña las pantallas de

introducción de datos y consultas.– Oracle Reports: Generador de informes.– Oracle Book: Visualizar y crear documentos– Oracle Graphics: Crear gráficos en Oracle.

Page 3: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

3

Arquitectura Oracle• Una BD es un conjunto de archivos

de datos y el software que los maneja.

–Componentes de la BD–Estructura de la memoria–Procesos de soporte de

la BD–¿Qué es una instancia

Oracle?–Gestión de seguridad–Gestión de tablespaces–Otros objetos

Page 4: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

4

Componentes BD Oracle

Son: • Archivos de datos (database files)• Archivos de diario o registro de

transacciones (log files)• Archivos de control (control files)

Page 5: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

5

Componentes BD OracleArchivos de datos

• Archivos de datos: contienen toda la información de la BD: datos de usuario y datos de sistema. Antes de poder introducir datos en la BD hay que:– Crear Tablespaces: espacio reservado para

almacenar las tablas. – Las “Tablespaces” nos ayudan a organizar la

información de la BD. Podemos tener un tablespace para almacenar los datos de la aplicación de almacén, otro para la aplicación de nóminas,…

– Cada tablespace consta de uno o más archivos en disco.

– Un archivo de datos sólo puede pertenecer a un único tablespace

– Al instalar Oracle se crean 4 tablespaces:• SYSTEM: tablespace donde Oracle almacena

toda la información que necesita para gestionarse a sí misma.

• USER_DATA o USERS: contiene información personal de los usuarios y también podemos almacenar las tablas para realizar pruebas.

• TEMPORARY_DATA o TEMP: Aquí Oracle almacena las tablas temporales (para gestionar sus transacciones).

Page 6: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

6

Componentes BD OracleArchivos de datos

• ROLLBACK_DATA o RBS: donde Oracle guarda la información de deshacer, se utiliza para almacenar la imagen anterior de los datos antes de permitir actualizaciones. Esto permite recuperar los datos cuando no se completa una transacción.

• Correspondencia entre los tablespaces y los archivos de datos:

RBS1ORCL.ORA,RBS2ORCL.ORA,…ROLLBACK_DATA

TMP1ORCL.ORATEMPORARY_DATA

USR1ORCL.ORAUSER_DATA

SYS1ORCL.ORA, SYS2ORCL.ORA…..

SYSTEM

ARCHIVOS DE DATOSTABLESPACE

• Podemos ver a través de la vista DBA_DATA_FILES(conectándonos como administrador), los ficheros de datos y sus tablespaces correspondientes:

•SQL> SELECT FILE_NAME, TABLESPACE_NAME FROM DBA_DATA_FILES;

Page 7: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

7

Componentes BD OracleArchivos de diario

• Archivos de diario o registro de transacciones o de rehacer: son los archivos de datos donde Oracle registra todas las transacciones o modificaciones (INSERT, UPDATE Y DELETE) que se producen en la BD.– Esto permite recuperar los datos, si hay

problemas.– Normalmente hay dos registros rehacer

almacenados físicamente:• LOG1ORCL.ORA y LOG2ORCL.ORA

– Un registro rehacer o Redo_log contiene:• Identificación de la transacción• Dirección del bloque• Número de dila• Número de columna• Valor anterior• Nuevo valor modificado

Page 8: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

8

Componentes BD OracleArchivos de control

• Archivos de control: contiene información sobre los archivos asociados con una BD Oracle. – Todas las modificaciones importantes sobre la

estructura de la BD se registran en el archivo de control.

– Mantienen la integridad de la BD.– Es recomendable tener dos archivos de control

por si uno se estropea.– Los archivos de control se llaman

CTL1ORCL.ORA y CTL2ORCL.ORA– Un archivo de control contiene:

• Información de arranque y parada• Nombre de los archivos de la BD y del

Redo_Log.• Información sobre checkpoints (puntos de

control)• Fecha de creación y nombre de la BD.• Estado on-line y off-line de los archivos

Page 9: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

9

Estructura de la memoria• Los procesos de usuario (cliente) y del

servidor se comunican consigo mismos y entre ellos por medio de estructuras de memoria.

• Oracle dispone de dos tipos de estructuras de memoria:– Área global del sistema SGA: permite la

comunicación entre los diversos procesos del cliente y del servidor.

– También mantiene la información más consultada sobre la BD.

– Tiene 3 zonas:• Buffers del bloque de datos (los bloques de

datos más utilizados)• Buffers del registro de rehacer(se registran

las transacciones o cambios antes de escribirse en los registros de rehacer.

• Fondo común SQL compartido: contiene las sentencias SQL ya ejecutadas sobre la BD.

– Área global del programa PGA: es la zona de memoria utilizada por un único proceso de usuario de Oracle y contiene datos e información de ese proceso.

Page 10: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

10

Procesos de soporte • Procesos de usuario: solicitan

información a los procesos de servidor.– Ejemplos: SQL*Plus, Oracle Forms,

Oracle Reports.• Procesos de servidor: reciben

petidiciones de los procesos de usuario y se comunican con la BD para satisfacerlas.– Ejemplos de procesos de servidor o

de soporte:• Escritor de BD DBWR• Punto de comprobación o control CKPT

(ChekPoint)• Escritor de registros LGWR• Supervisor del sistema SMON• Supervisor de proceso PMON• Archivador ARCH• Recuperador RECO

Page 11: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

11

RESUMEN • La BD de Oracle más elemental consta

de:– Uno o más archivos de datos.– Uno o más archivos de control– Dos o más archivos de Redo_log

• Internamente, esta base de datos contiene:– Varios usuarios/esquemas.– Uno o más segmentos de rollback– Uno o más espacios de tablas– Tablas del diccionario de datos

• El diccionario de datos es una BD donde se almacena toda la descripción de la BD.

– Objetos de usuarios (tablas, vistas,..)• El servidor que accede a esta BD

consta, como mínimo de:– Un SGA, memoria global del sistema– El proceso SMON, supervisor del sistema– El proceso PMON, supervisor del proceso– El proceso DBWR, el archivador– El proceso RECO, el recuperador– Procesos de usuario con PGA (memoria para

el proceso) asociado.

Page 12: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

12

¿Qué es una instancia Oracle?

• Una instancia Oracle es un conjunto de procesos background o de fondo y una zona de memoria denominanda SGA.

• Tiene dos tipos de procesos: procesos de usuario y procesos Oracle.

• No incluye archivos de la BD, archivos de Redo_log ni archivos de control.

Page 13: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

13

Gestión de seguridad • Gestión de usuarios y concesión de

privilegios a los usuarios.• Es el administrador de la BD el

responsable de permitir o denegar el acceso a los usuarios a determinados objetos o recursos de la BD.

• Podemos clasificar la seguridad de la BD en dos categorías:– Seguridad del sistema: Control del acceso

y uso de la BD a nivel del sistema.• Conexión de un usuario a la BD.

– Seguridad de los datos: Control del acceso y uso de la BD a nivel de objetos.

• Acceso de un usuario a un objeto (tabla, vista,..)

• Tipo de operaciones que se pueden realizar sobre el objeto: INSERT, SELECT,..

Page 14: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

14

Gestión de seguridad Usuarios

• Un usuario es un nombre definido en la BD que se puede conectar a ella y acceder a determinados objetos según ciertas condiciones que define el administrador.

• Para acceder a la BD, los usuarios deben ejecutar una aplicación de BD, como SQL*Plus, Oracle Forms y Oracle Rerport, y conectarse usando el nombre definido en la BD.

• Asociado a cada usuario de la BD hay un esquema con el mismo nombre– Un esquema es una colección lógica

de objetos (tablas, vistas, secuencias, sinónimos, índices, clusters, procedures…)

– Por defecto, cada usuario tiene acceso a todos los objetos de su esquema correspondiente.

Page 15: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

15

Gestión de seguridad Usuarios

• Creación de usuarios: – Al instalar la BD Oracle se crean automáticamente dos

usuarios con el privilegio de DBA (Administrador de BD): SYS y SYSTEM.

– Sus contraseñas son:• SYS � change_on_install• SYSTEM � MANAGER

– El usuario SYSTEM es creado por Oracle para realizar las tareas de administración de la BD.

– Para crear usuarios se necesita el privilegio CREATE USER.

– Sintaxis:CREATE USER nombre_usuarioIDENTIFIED 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 que será identificado por el sistema.

Page 16: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

16

Gestión de seguridad Usuarios

– 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 ninguna, el tablespace por defecto será SYSTEM.

– TEMPORARY TABLESPACE: especifica el nombre de tablespace para trabajos temporales. Si no especificamos ninguno el tablespace por defecto es SYSTEM. Es muy recomendable utilizar otro tablespace distinto a SYSTEM.

– QUOTA: asigna un espacio en megabytes o kilobytes en el tablespace asignado. Si no especificamos nada, el usuario no tiene cuota asignada y no podrá crear objetos en el tablespace. Si un usuario dispone de acceso y recursos ilimitados a cualquier tablespace, se le debe de dar el correspondiente privilegio.

– PROFILE: asigna un perfil al usuario. Si se omite esta cláusula se asigna el perfil por defecto. Un perfil limita el número de sesiones concurrentes de un usuario, limita el tiempo de uso de la CPU, el tiempo de una sesión,…

Page 17: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

17

Gestión de seguridad Usuarios

• Modificación de usuarios: Las opciones dadas a un usuario con CREATE USER, se pueden modificar con la orden ALTER USER.

• Sintaxis:ALTER USER nombre_usuarioIDENTIFIED BY clave_acceso[DEFAULT TABLESPACE espacio_tabla][TEMPORARY TABLESPACE

espacio_tabla][QUOTA {entero {K|M} | UNLIMITED} ON

espacio_tabla][PROFILE perfil];• Los parámetros significan los mismo que

en la orden CREATE USER.• Un usuario no puede cambiar ni su

tablespace, ni su quota, pero sí su PASSWORD.

Page 18: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

18

Gestión de seguridad Usuarios

• Borrado de usuarios: Para borrar a un usuario de la BD, incluidos los objetos que contiene, se emplea la orden DROP USER.

• Sintaxis:

DROP USER usuario [CASCADE];

• La opción CASCADE suprime todos los objetos antes de borrar el usuario.

• Cuando se intenta eliminar un usuario y éste tiene tablas que le pertenecen, el sistema no nos dejará borrarlo sin borrar en cascada sus objetos.

Page 19: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

19

Gestión de seguridad Usuarios

• Vistas ALL_USERS y DBA_USERS: estas vistas contienen información sobre todos los usuarios creados en la BD.

• DESC: de DESCribe, muestra la descripción o resumen de la tabla y sus columnas.– Nombre de columna: Name– Si admite nulos o no: Null?– Tipo de datos: Type

• DESC SYS.ALL_USERS;

DATENOT NULLCREATED

NUMBERNOT NULLUSER_ID

VARCHAR2(30)NOT NULLUSERNAME

TypeNull?Name

� SELECT * FROM ALL_USERS;

16/07/970SYS

23/07/9921MAJESUS

16/07/975SYSTEM

CREATEDUSER_IDUSERNAME

Page 20: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

20

Gestión de seguridad Usuarios

• DESC SYS.DBA_USERS;

VARCHAR2(4000)EXTERNAL_NAME

VARCHAR2(30)NOT NULLPROFILE

DATENOT NULLCREATED

VARCHAR2(30)NOT NULLTEMPORARY_TABLESPACE

VARCHAR2(30)NOT NULLDEFAULT_TABLESPACE

DATEEXPIRY_DATE

DATELOCK_DATE

VARCHAR2832)NOT NULLACCOUNT_STATUS

VARCHAR2(30)PASSWORD

NUMBERNOT NULLUSER_ID

VARCHAR2(30)NOT NULLUSERNAME

TypeNull?Name

� SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS;

USER_DATAMAJESUS

USER_DATASYSTEM

SYSTEMSYS

DEFAULT_TABLESPACEUSERNAME

Page 21: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

21

Gestión de seguridad Privilegios

• Un privilegio es la capacidad de un usuario dentro de la BD de realizar determinadas operaciones o acceder a determinados objetos de otros usuarios.

• Ningún usuario puede llevar a cabo una operación si antes no se le ha concedido el permiso.

• Cuando se crea un usuario es preciso darle privilegios para que pueda hacer algo.

• Oracle dispone de varios roles o funciones. Un rol es un conjunto de privilegios.

BECOME USER. El rol anterior y éste, ofrecen derechos de exportar o importar la base de datos completa.

IMP_FULL_DATABASE

SELECT ANY TABLE, BACKUP ANY TABLE, INSERT, UPDATE, DELETE sobre las tablas SYS.INCVID, SYS.INCFIL y SYS.INCEXP.

EXP_FULL_DATABASE

Posee todos los privilegios del sistema.DBA

CREATE CLUSTER, CREATE PROCEDURE, CREATE TABLE, CREATE SEQUENCE y CREATE TRIGGER.

RESOURCE

ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE y CREATE VIEW.

CONNECT

PrivilegiosRoles

Page 22: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

22

Gestión de seguridad Privilegios

• Hay dos tipos de privilegios que se pueden definir en una BD: privilegios sobre los objetos y privilegios del sistema

• Privilegios sobre los objetos: nos permiten acceder y realizar cambios en los datos de otros usuarios.

X

X

Secuencia

X

X

X

X

X

X

X

Tabla

X

X

X

X

Vista

SELECT

INDEX

INSERT

REFERENCES

UPDATE

XEXECUTE

DELETE

ALTER

ProcedurePrivilegio sobre objetos

Page 23: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

23

Gestión de seguridad Privilegios

• Las sentencias SQL permitidas con cada privilegio son:

UPDATE objeto (tabla o vista)

SELECT …. FROM objeto (tablas, vista)Sentencia SQL utilizando un generador de secuencias.

CREATE o ALTER TABLE definiendo una restricción de integridad de clave ajena sobre el objeto (sólo tablas)

INSERT INTO objeto (tabla o vista)

CREATE INDEX ON objeto (sólo tablas)

DELETE FROM objeto (tabla o vista)

ALTER objeto (tabla o secuencia)

Sentencias SQL permitidas con cada privilegio

SELECT

INDEX

INSERT

REFERENCES

UPDATE

EXECUTE objeto (procedimiento)EXECUTE

DELETE

ALTER

Privilegios sobre los objetos

Page 24: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

24

Gestión de seguridad Privilegios

• La orden para dar privilegios sobre los objetoses GRANT, con el siguiente formato:

GRANT {priv_objeto [,priv_objeto] …|ALL [PRIVILEGES]}

ON [usuario.] objetoTO {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC}…][WITH GRANT OPTION];• Donde,• ON, especifica el objeto sobre el que se dan 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.• La cláusula WITH GRANT OPTION permite que el

receptor del privilegio o rol se lo asigne a otros usuarios o roles.

• PUBLIC, asigna los privilegios a todos los usuarios actuales y futuros. El propósito general del grupo PUBLIC, es garantizar el acceso a determinados objetos a todos los usuarios de la BD.

Page 25: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

25

Gestión de seguridad Privilegios

• Ejemplos:SQL>CONNECT MILAGROS/MILAGROS00Nos conectamos como el usuario Milagros

SQL>GRANT INSERT ON TABLA1 TO JUAN;Milagros da privilegios a Juan para insertar datos en Tabla1.

SQL>GRANT SELECT, INSERT ON TABLA1 TO FRANCISCO;Milagros da privilegios a Francisco para consultar e insertar datos

en Tabla1.Juan tendría que referenciar a la tabla Tabla1 como:Milagros.Tabla1.

SQL>GRANT ALL ON TABLA1 TO ROSA;Milagros concede todos los privilegios sobre Tabla1 a Rosa.

SQL>GRANTALL ON TABLA1 TO PUBLIC;Milagros concede todos los privilegios sobre Tabla1 a todos los

usuarios existentes y los que se creen en adelante.

SQL>GRANT UPDATE(TEMPERATURA) ON TABLA1 TO JUAN;Milagros concede el privilegio a Juan de modificar unicamente el

campo Temperatura de la tabla Tabla1.

SQL>GRANT INSERT ON TABLA1 TO FRANCISCO WITH GRANT OPTION;

Milagros concede el privilegio de insertar datos en Tabla1 a Francisco y éste podrá conceder este mismo permiso a otros usuarios.

Page 26: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

26

Gestión de seguridad Privilegios

• Los privilegios de sistema son los que dan derecho a ejecutar un tipo de comando SQL o a realizar alguna acción sobre objetos de un tipo especificado.

• Por ejemplo el privilegio para crear tablespaces es un privilegio de sistema.

• Existen unos 80 tipos de privilegios distintos. Algunos de ellos son los del anexo entregado.

Page 27: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

27

Gestión de seguridad Privilegios

• La orden para dar privilegios del sistema es:GRANT {privilegio|rol} [,{privilegio|rol},…]TO {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC}…][WITH ADMIN OPTION];• Donde,• TO, identifica a los usuarios o roles a los que se

conceden los privilegios.• La cláusula WITH ADMIN OPTION permite que el

receptor del privilegio o rol pueda conceder esos mismos privilegios a otros usuarios o roles.

• Ejemplo:SQL>GRANT CONNECT TO PEDRO;• Se concede a Pedro el rol de connect, con todos los

privilegios asociados.SQL>GRANT DBA TO PEDRO, JUAN;• Se concede a Pedro y Juan los privilegios de

Administrador del sistema.SQL> GRANT DROP USER TO MILAGROS WITH

ADMIN OPTION;• Se concede el privilegio a Milagros de borrar usuarios y

que esta pueda conceder este mismo privilegio a otros usuarios.

SQL>GRANT SELECT ANY TABLE TO PUBLIC;Hacemos que todos los usuarios puedan hacer Select sobre

cualquier tabla.

Page 28: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

28

Gestión de seguridad Privilegios

• La orden para retirar privilegios es:• Para retirar privilegios de objetos a los usuarios:REVOKE {priv_objeto

[,priv_objeto]…|ALL|[PRIVILEGES]}ON [usuario.]objetoFROM {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC]…;• Para retirar privilegios de sistema o roles a

usuarios:REVOKE [priv_sistema|rol} [,{priv_sistema|rol}]…;FROM [usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC}]…;• Ejemplos:SQL>REVOKE SELECT,UPDATE ON TABLA1

FROM FRANCISCO;SQL>REVOKE ALL ON TABLA1 FROM

FRANCISCO,JUAN;REVOKE DROP USER FROM MILAGROS;REVOKE DBA FROM JUAN, PEDRO;• NOTA: la opción WITH GRANT OPTION,

desaparece con el privilegio con el que fue asignada.

Page 29: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

29

Gestión de seguridad Privilegios

• Vistas con información de privilegios:• SESSION_PRIVS: privilegios del usuario

activo• USER_SYS_PRIVS:privilegios de sistema

asignados al usuario.• DBA_SYS_PRIVS:privilegios de sistema

asignados a los usuarios o roles.• USER_TAB_PRIVS:concesiones sobre

objetos que son propiedad del usuario, concedidos o recibidos por éste.

• USER_TAB_PRIVS_MADE: concesiones sobre objetos que son propiedad del usuario (asignadas).

• USER_TAB_PRIVS_RECD: concesiones sobre objetos que recibe el usuario.

• USER_TAB_GRANTS: concesiones en objetos para los que el usuario es el propietario,el que concedió el privilegio o al que se concedió el privilegio.

• USER_TABS_GRANTS_MADE: todas las concesiones hechas en objetos que son propiedad del usuario.

Page 30: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

30

Gestión de seguridad Privilegios

• USER_TAB_GRANTS_RECD: concesiones en objetos en las que el usuario es aquél al que se ha concedido el privilegio (concesiones recibidas)

• ALL_TAB_GRANTS,ALL_TAB_GRANTS_MADE, ALL_TAB_GRANTS_RECD: son iguales que la anteriores vistas, sólo que aparecen las concesiones de todos los usuarios.

• USER_COL_GRANTS: concesiones en columnas para las que el usuario es el propietario,el que concedió el privilegio o al que se le concedió el privilegio.

• USER_COL_GRANTS_MADE,USER_COL_GRANTS_RECD: igual que las anterioers pero para columnas.

• ALL_COL_GRANTS,ALL_COL_GRANTS_MADE,ALL_COL_GRANTS_REC: iguales que las anteriores pero aparecen las concesiones de todos los usuarios de la BD.

• USER_COL_PRIVS: concesiones sobre columnas en las que el usuario es el propietario, asigna el privilegio o lo recibe.

• USER_COL_PRIVS_MADE: todas las concesiones sobre columnas de objetos que son propiedad del usuario.

• USER_COL_PRIVS_RECD: concesiones de columna recibidas por el usuario.

Page 31: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

31

Gestión de seguridad Roles

• Un rol o función es un conjunto de privilegios que recibe un nombre común para facilitar la tarea de asignación de éstos a los usuarios o a otros roles.

• Los privilegios de un rol pueden ser de sistema y a nivel de objeto.

• Creación de un rol:CREATE ROLE nombrerol [IDENTIFIED BY

contraseña]• , donde IDENTIFIED BY contraseña,

indica que el usuario que desee usar los privilegios del rol tiene que introducir la clave de acceso en la orden SET ROLE para activar el rol.

• Concesión de privilegios a los roles, los vistos anteriormente, y pueden ser a nivel de objeto o de sistema.

GRANT privilegio TO rol

Page 32: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

32

Gestión de seguridad Roles

• Límites en privilegios sobre roles:• Un rol puede decidir el acceso de un

usuario a un objeto, pero no puede permitir la creación de objetos.

• Supresión de un rol:DROP ROLE nombrerol;• Oracle, retira el rol concedido a todos los

usuarios y roles a los que se le concedió.• Para poder eliminar un rol es necesario

ser administrador o tener el privilegio DROP ANY ROLE.

• Establecer un rol por defecto:ALTER USER nombreusuarioDEFAULT {[ROLE nombre rol] |NONE};• Donde NONE hace que el usuario no

tenga rol por defecto.

Page 33: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

33

Gestión de seguridad Roles

• Vistas con información de roles:– USER_TAB_PRIVS:concesiones sobre objetos

que son propiedad del usuario, concedidos o recibidos por éste.

– ROLE_SYS_PRIVS: privilegios del sistema asignados a roles.

– ROLE_TAB_PRIVS: privilegios sobre tablas aplicados a roles.

– ROLE_ROLE_PRIVS: roles asignados a otros roles.

– SESSION_ROLES: roles activos para el usuario.

– USER_ROLE_PRIVS: roles asignados al usuario.

– DBA_SYS_PRIVS: privilegios del sistema asignados a los usuarios o roles.

– DBA_ROLE_PRIVS:privilegios asignados a todos los usuarios y roles.

– DBA_ROLES:todos los roles.

Page 34: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

34

Gestión de seguridad Perfiles

• Un perfil es un conjunto de límites a los recursos de la base de datos. – Se puede crear un perfil que limite el tiempo de

conexión a la BD; si se asigna ese perfil a un usuario y este rebasa el tiempo límite, no podrá utilizar la BD a menos que se realice de nuevo la conexión.

• Por defecto, a los usuarios se les asigna el perfil DEFAULT, este perfil define recursos ilimitados.

• Para crear un nuevo perfil:CREATE PROFILE nombreperfil LIMIT{SESSION_PER_USER

|CPU_PER_SESSION|CPU_PER_CALL |CONNECTTIME|IDLE_TIME|LOGICAL_READS_PER_SESSION|LOGICAL_READS_PER_CALL|PRIVATE_SGA|COMPOSITE_LIMIT}

{Entero [K|M] | UNLIMITED|DEFAULT}[{SESSION_PER_USER

|CPU_PER_SESSION|CPU_PER_CALL |CONNECTTIME|IDLE_TIME|LOGICAL_READS_PER_SESSION|LOGICAL_READS_PER_CALL|PRIVATE_SGA|COMPOSITE_LIMIT}

{Entero [K|M] | UNLIMITED|DEFAULT}]…

Page 35: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

35

Gestión de seguridad Perfiles

• Los recursos a limitar son los siguientes:

Limita el número de bloque de datos leídos en una sesión

LOGICAL_READS_PER_SESSION

Limita el tiempo máximo por CPU por llamada (de análisis, ejecución o búsqueda). En centésimas de segundo.

CPU_PER_CALL

Limita el tiempo máximo de CPU por sesión. Este valor se expresa en centésimas de segundo.

CPU_PER_SESSION

Limita el tiempo de inactividad permitido antes de que el usuario sea desconectado (minutos)

IDLE_TIME

Limita el tiempo de conexión permitida por sesión antes de que el usuario sea desconectado (minutos)

CONNECT_TIME

Número de sesiones múltiples concurrentes permitidas por nombre de usuario

SESSIONS_PER_USER

FunciónRecurso

Page 36: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

36

Gestión de seguridad Perfiles

• Los recursos a limitar son los siguientes:

Limita el coste total de recursos para una sesión en unidades de servicio basadas en una suma de los siguientes recursos: CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION y PRIVATE_SGA

COMPOSITE_LIMIT

Limita el número de bytesenteros de espacio privado en la SGA (útil para sistemas que utilicen multi-threaded)

PRIVATE_SGA

Limita el número de bloques de datos leídos por llamada (de análisis, ejecución o búsqueda)

LOGICAL_READS_PER_CALL

FunciónRecurso

• UNLIMITED, significa que no hay límite sobre un recurso particular.

• DEFAULT coge el límite del perfil DEFAULT.

Page 37: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

37

Gestión de seguridad Perfiles

• Ejemplos:SQL> CREATE PROFILE PERFIL1 LIMIT

SESSION_PER_USER 1 CONNECT_TIME 2;• Creamos un perfil donde limitamos el número de

conexiones concurrentes por usuario a una y dos minutos de tiempo de conexión permitido por sesión.

SQL> CREATE USER PRUEBA IDENTIFIED BY PRUEBA DEFAULT TABLESPACE USERS QUOTA 100K ON USERS PROFILE PERFIL1;

• Se le concede al usuario el perfil PERFIL1.

SQL>CONNECT SYSTEM/MANAGER (o cualquier cuenta de administrador)

SQL> ALTER SYSTEM SET RESOURCE_LIMIT=TRUE• Con esta orden el administrador activa la utilización de

perfiles. Para desactivarlos sería poner la misma variable RESOURCE_LIMIT=FALSE.

• Borrado de perfiles: se utiliza la orden DROP PROFILE:DROP PROFILE nombreperfil [CASCADE];• ,donde CASCADE es necesario ponerlo, si en el

sistema hay algún usuario con ese perfil asociado.

Page 38: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

38

Gestión de Tablespaces• Una BD está formada por un conjunto de archivos

de datos, Oracle utiliza un objeto denominado TABLESPACE o espacio de tablas, para agrupar esos archivos.

• Un TABLESPACE es una unidad lógica de almacenamiento de datos representado físicamente por uno o más archivos de datos. Es recomendable no mezclar datos de diferentes aplicaciones en el mismo tablespace.

• Al instalar Oracle se crean una serie de tablespaces por defecto:SYSTEM, USERS, TEMP,…

• Creación de TABLESPACES:CREATE TABLESPACE nombretablespaceDATAFILE ‘nombrearchivo’ [SIZE entero [K|M]

[REUSE] [,’nombrearchivo’ [SIZE entero [K|M] [REUSE]]…

[DEFAULT STORAGE (INITIAL tamañoNEXT tamañoMINEXTENS tamañoMAXEXTENS tamañoPCTINCREASE valor)]

[ONLINE|OFFLINE];

Page 39: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

39

Gestión de Tablespaces• Donde,

– DATAFILE, especifica el archivo o archivos de datos de que constará el tablespace.

– SIZE entero, especifica el tamaño del tablespace, que puede venir dado en Kb o Mb. Si ponemos K se multiplica el entero por 1024 y si ponemos M, se multiplica por 1.048.576

– REUSE, reutiliza el archivo si ya existe o lo crea si no existe.

– DEFAULT STORAGE, define el almacenamiento por omisión para todos los objetos que se creen en este espacio de tabla. Fija la cantidad de espacio si no se especifica en la sentencia CREATE TABLE.

• INITIAL, extensión inicial. Especifica el tamaño en bytes de la primera extensión del objeto. El tamaño se puede especificar en Kb o Mb. El valor mínimo es el tamaño de 2 bloques de datos. El valor por defecto es 5 bloques de datos, es decir, 10 K (1 bloque son 2 K).

• NEXT, extensión siguiente. Especifica el tamaño de la siguiente extensión que se va a asignar al objeto. También se puede especificar en Kb o Mb. El valor por defecto es 5 bloques de datos (10 K).

• MINIEXTENTS, reserva extensiones adicionales más allá de la extensión inicial que se le da a la tabla por omisión.

Page 40: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

40

Gestión de Tablespaces• Donde,

– MAXIEXTENTS, es el número total de extensiones, incluida la primera, que Oracle puede asignar al objeto. El valor depende del tamaño del bloque de datos. Si el tamaño del bloque es de 2 K, el valor es 121; si el tamaño del bloque es de 4 K, el valor es 249,etc.

– PICTINCREASE, es un factor de crecimiento para la extensión. El valor por omisión es 50, lo que significa que cada extensión subsiguiente será un 50% más grande que la extensión anterior. El valor de la siguiente extensión es:

• NEXT=NEXT + (PCTINCREASE*NEXT)/100

– ONLINE u OFFLINE. Con ONLINE, el tablespace está disponible después de crearlo, es el valor por defecto, con OFFLINE impide su acceso.

Page 41: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

41

Gestión de Tablespaces• Ejemplo:SQL> CREATE TABLESPACE TRABAJO

DATAFILE ‘TABAJ1.ORA’ SIZE 10M, ‘TABJ2.ORA’ SIZE 5M

DEFAULT STORAGE (INITIAL 10K NEXT 10K PCTINCREASE 25);

• Se crea una tablespace llamado TRABAJO. • El tamaño inicial para el objeto que se cree en

este tablespace (por ejemplo, una tabla) es de 10K, el tamaño de la siguiente extensión del objeto será de 10 k también; y cada extensión subsiguiente será un 25 % más grande que el anterior. Y por último, asignamos dos archivos (físicos) a este tablespace, llamados ‘TRABJ1.ORA’ y ‘TRABJ2.ORA’ de 10 y 5 Megas respectivamente.

Page 42: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

42

Gestión de Tablespaces• Vistas que tienen que ver con los tablespaces:

– DBA_DATA_FILES: se utiliza para ver los archivos utilizados en los tablespaces. Para consultar esta vista es necesario conectarse como administrador.

– USER_FREE_SPACE: Muestra las extensiones libres en tablespaces a las que puede acceder el usuario. No tienen porqué estar en bloques consecutivos. Esta vista tiene los siguientes campos:

• TABLESPACE_NAME• FILE_ID: nº identificativo del archivo• BLOCK_ID: identificación del primer bloque libre.• BYTES: nº de bytes libres.• BLOCKS: nº de bloques libres• RELATIVE_FNO: nº relativo del fichero en la primera

extensión del bloque.

– DBA_FREE_SPACE: se trata de extensiones libres en todos los tablespaces. Sólo pueden consultar esta vista los administradores.

– DBA_TABLESPACES: Es la descripción de todos los tablespaces. Sólo administradores.

– DBA_TS_QUOTAS: Describe los bytes utilizados por los usuarios en cada tablespace. Sólo administradores.

• MAX_BYTES: nº máximo de bytes que tiene el usuario asignados.

• BLOCKS: nº de bloques usados• BYTES: nº de bytes usados por el usuario• MAX_BLOCKS: máximo número de bloques.

Page 43: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

43

Gestión de Tablespaces• Modificación de TABLESPACES:• Es posible modificar los tablespaces después de

crearlos, pudiendo:– Añadir nuevos archivos a un tablespace existente– Modificar las cláusulas de almacenamiento para los

objetos que se almacenen en el tablespace– Activarlo o Desactivarlo

• La modificación se lleva a cabo mediante ALTER TABLESPACE:

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 clausulasalmacenamiento][ONLINE|OFFLINE]};• Donde, • Nombretablespace, es el nombre del tablespace

que se quiere modificar.

Page 44: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

44

Gestión de Tablespaces• ADD_DATAFILE, añade al tablespace uno o varios

archivos.• AUTOEXTEND activa o desactiva el crecimiento

automático de los archivos de datos del tablespace. AUTOEXTEND OFF, desactiva el crecimiento automático. El formato AUTOEXTEND ON es:

– AUTOEXTEND ON NEXT entero {K|M} MAXSIZE {UNLIMITED|entero {K|M}}

– NEXT entero, es el incremento de espacio en disco expresado en Kb o Mb que se reservará automáticamente para el archivo.

– MAXSIZE es el máximo espacio en disco reservado para la extensión automática del archivo.

– UNLIMITED, significa que no hay límite del espacio en disco reservado.

• RENAME DATAFILE, cambia el nombre de un archivo existente del tablespace. Este cambio se tiene que hacer desde el sistema operativo, y después, ejecutar la orden SQL. El tablespace debe estar desactivado (OFFLINE) mientras se produce el cambio.

• DEFAULT STORAGE especifica los nuevos parámetros de almacenamiento para todos los objetos que se creen a partir de ahora en este tablespace.

• ONLINE pone el espacio de tablas en línea (activado)• OFFLINE pone el espacio de tablas fuera de líinea

(desactivado).

Page 45: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

45

Gestión de Tablespaces• Ejemplo:SQL> ALTER TABLESPACE TRABAJO OFFLINE;• Desactivamos el tablespace TRABAJO

SQL> ALTER TABLESAPCE TRABAJO ADD DATAFILE ‘TRABAJ3.ORA’ SIZE 6 M;

• Se agrega el archivo llamado TRABAJ3.ORA de 6 Megas al tablespace TRABAJO.

SQL>CREATE TABLESPACE PEQUE DATAFILE ‘PEQUEÑO.ORA’ SIZE 100K;

SQL>CREATE TABLE LETRAS (N VARCHAR2(50)) TABLESPACE PEQUE;

SQL>ALTER TABLESPACE PEQUE DATAFILE ‘MAYOR.ORA’ SIZE 100 K AUTOEXTEND ON NEXT 200 K MAXSIZE 1M;

• Creamos un tablespace muy pequeño de 100 Kbllamado PEQUE

• Creamos una tabla en ese tablespace.• Añadimos al tablespace PEQUE, un archivo de 100 K

llamado Mayor que se va extendiendo de forma automática hasta 200K cuando se llena. Como máximo el espacio utilizado en disco para esta archivo es de 1 Mega.

Page 46: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

46

Gestión de Tablespaces• Borrado de tablespaces• Para borrar un tablespace que ya no utilizamos se

emplea la orden DROP TABLESPACE:DROP TABLESPACE nombretablespace[INCLUDING CONTENTS]• Donde,• Nombretablespace,es el nombre del tablespace

que se va suprimir.• La opción INCLUDING CONTENTS, permite

borrar un tablespace que tenga datos. Sin esta opción únicamente podremos borrar un tablespace vacío.

• Se recomienda poner el tablespace OFFLINE antes de borrarlo para asegurarnos que no haya sentencias SQL que estén accediendo a datos del tablespace , en cuyo caso no nos dejaría borrarlo.

• Cuando se borra un tablespace, los archivos asociados no se borran del sistema operativo, por lo que tendremos que borrarlos de forma manual.

Page 47: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

47

Gestión de Tablespaces• Parámetros de almacenamiento:• La orden CREATE TABLE toma los parámetros de

almacenamiento indicados en la cláusula DEFAULT STORAGE del tablespace.

• No obstante, en la orden CREATE TABLE permite especificar parámetros de almacenamiento para la tabla cuando queramos asignar parámetros distintos a los que asigna el tablespace.

• La sintaxis completa sería:CREATE TABLE nombretabla( col1 tipo [restricciones de columna],col2 tipo [NOT NULL]…,[restricciones de tabla])STORAGE(INITIAL tamañoNEXT tamañoMINEXTENTS tamañoMAXEXTENTS tamañoPCTINCREASE valor)[TABLESPACE noombretablespace];

Page 48: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

48

Otros objetos• Secuencias

– Objeto de base de datos que sirve para generar enteros únicos; es muy útil para generar automáticamente valores para claves primarias.

• Enlaces a bases de datos– Objeto que permite acceder a objetos de una

base de datos remota. Se usa parar realizar consultas en tablas de la base de datos remota.

• Índices– Es un objeto de base de datos que se asocia a

una tabla y al que se asocia una o varias columnas de una tabla. Permite acelerar el tiempo de respuesta en las consultas.

• Clusters– Es un objeto de base de datos que almacena

varias tablas que tienen una o más columnas en común en una misma área del disco; con esto se consigue que las operaciones de combinaciones de tablas sean más rápidas.

Page 49: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

49

Secuencias– Para crear una secuencia en el propio

esquema, hay que tener el privilegio CREATE SEQUENCE.

– Para crear una secuencia en cualquier esquema es necesario tener el privilegio CREATE ANY SEQUENCE.

– Sintaxis:CREATE SEQUENCE nombresecuencia[INCREMENT BY entero][START WITH entero][MAXVALUE entero | NOMAXVALUE][MINVALUE entero |NOMINVALUE][CYCLE|NOCYCLE][ORDER |NOORDER][CACHE entero |NOCACHE];

Page 50: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

50

Secuencias,donde• INCREMENT BY entero, especifica el intervalo de

crecimiento de la secuencia, se asume el valor 1. Si es negativo, produce un decremento en la secuencia.

• START WITH entero, es el número con el que comienza la secuencia.

• MAXVALUE entero, es el número más alto que generará la secuencia. Deberá ser mayor o igual al número de comienzo (START WITH) y mayor que el especificado en MINVALUE.

• NOMAXVALUE, indica que el valor máximo de la secuencia será 10 27 y en una secuencia descendente -1.

• MINVALUE entero, el número más bajo que generará la secuencia. Deberá ser menor o igual al indicado por START WITH y menor que el indicado por MAXVALUE.

• NOMINVALUE, indica que el valor mínimo para una secuencia ascendente será 1 y -10 26 para una secuencia descendente.

• CYCLE|NOCYCLE, CYCLE, reanuda la secuencia cuando esta llega al máximo o al mínimo valor; NONCYCLE no la reanuda.

• ORDER|NOORDER, ORDER garantiza que los números de secuencia se generan en el orden requerido y NOORDER no lo garantiza. Si se omiten ambas, se asume NOORDER.

• CACHE entero |NOCACHE, CACHE permite guardar en memoria un conjunto previamente asignado de números de secuencia.

Page 51: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

51

Secuencias• Pseudocolumnas CURRVAL y

NEXTVAL– Una vez creada la secuencia,

accedemos a ella mediante la pseudocolumna CURRVAL, que devuelve el valor actual de la secuencia y NEXTVAL, que devuelve el siguiente valor e incrementa la secuencia.

– Para utilizar estas pseudocolumnastenemos que poner:

• Nombresecuencia. Pseudocolumna.• Ej: nombresecuencia.currval

• Para eliminar una secuencia:– DROP SEQUENCE nombresecuencia;

Page 52: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

52

Secuencias• Ejemplo:SQL>CREATE TABLE FRUTAS (CODIGO NUMBER(2) NOT NULL PRIMARY KEY, NOMBRE VARCHAR2(15) );SQL>CREATE SEQUENCE codigosSTART WITH 1 INCREMENT BY 1 MAXVALUE 99;SQL>INSERT INTO FRUTAS VALUE

(CODIGOS.NEXTVAL, ‘MANZANAS’);SQL>INSERT INTO FRUTAS VALUE

(CODIGOS.NEXTVAL, ‘NARANJAS’);SQL>INSERT INTO FRUTAS VALUE

(CODIGOS.NEXTVAL, ‘PERAS’);SQL>SELECT * FROM FRUTAS;

PERAS3NARANJAS2MANZANAS1NOMBRECODIGO

Page 53: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

53

ÍNDICES• La estructura de un índice es:

• La utilidad de los índices es acelerar las búsquedas. Si una columna está indexada la búsqueda de un datos, será una búsqueda binaria muyo mas eficiente que una búsqueda secuencial.

• Se debe indexar cuando se disponga de una gran cantidad de filas en una tabla, y además, cada fila se identifique por una o varias columnas.

– NO se deben indexar tablas pequeñas– No se deben indexar columnas que son

modificadas a menudo y que poseen pocos valores diferentes.

– Tampoco es recomendable indexar tablas muy cambiantes, es decir, en las que se aplique con mucha frecuencia las sentencias UPDATE, DELETE o INSERT.

……….….ROWIDColumna/s

índice

Page 54: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

54

ÍNDICES• Sintaxis:CREATE INDEX nombreindiceON nombretabla (col1[ASC|DESC]

[,col2[ASC1DESC]…)[STORAGE clausulas_almacenamiento][TABLESPACE nombretablespace][otras cláusulas]• Donde,

– Nombrerabla, es el nombre de la tabla que se va a indexar.

– Colum, es la columna o columnas por las que se indexa.

– ASC|DESC, no tienen efecto, se definen por compatibilidad con DB2.

• NOTA: cuando creamos una clave primaria (PRIMARY KEY) o una restricción de unicidad (UNIQUE), se crea un índice con el nombre de la restricción.

• Para borrar un índice:DROP INDEX nombreindice;

Page 55: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

55

ÍNDICES• Ejemplo:• Para crear un índice:SQL>CREATE INDEX indicemple ON

EMPLE (EMP_NO);• Para ver los índices creados contamos

con las siguientes vistas:– USER_INDEXES– DBA_INDEXES

SQL> SELECT INDEX_NAME,TABLE_NAME FROM USER_INDEXES WHERE TABLE_NAME=‘EMPLE’;

• Para eliminar un índice:SQL>DROP INDEX indicemple;

Page 56: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

56

CLUSTERS• Un clúster es un objeto que almacena

varias tablas que tienen una o más columnas en común en una misma área del disco. Las filas de las tablas con los mismos valores en las columnas de combinación se almacenan físicamente juntas, así las consultas serán más rápidas.

• La tablas se añaden a un clúster con la orden CREATE TABLE y la cláusula CLUSTER.

• Sintaxis:CREATE TABLE nombretabla(definición de columnas)CLUSTER nombrecluster (columna

[,columna]);

Page 57: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

57

CLUSTERS• Para crear un cluster:CREATE CLUSTER nombrecluster(columna tipo_dato [,columna tipo_dato])[SIZE entero][STORAGE (cláusulas de almacenamiento)][TABLESPACE nombretablespace];• Donde,

– SIZE entero, especifica el tamaño en bytes para un bloque lógico.

– El nombre de columna no tiene porqué ser igual al de las tablas.

• Para eliminar un cluster:DROP CLUSTER nombrecluster[INCLUDING TABLES [CASCADE CONSTRAINTS]];• Si el cluster contiene tablas, es necesario

borrarlo con INCLUDING TABLES.• La opción CASCADE CONSTRAINTS, permite

borrar las reglas de integridad referencial de tablas que no están en el clúster, pero hacen referencia a claves de las tablas agrupadas.

Page 58: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

58

CLUSTERS• Ejemplo:• Creamos un cluster:SQL>CREATE CLUSTER EMPLEYDEPART

(numero_dpto NUMBER(2));• Agregamos las tablas EMPLE y DEPART al

cluster. La columna que tienen en común es DEPT_NO:

SQL> CREATE TABLE DEPART( DEPT_NONUMBER(2) NOT NULL,

DNOMBRE VARCHAR2(14),LOC VARCHAR2(14) )CLUSTER EMPLEYDEPART (DEPT_NO);SQL>CREATE TABLE EMPLE(EMP_NO NUMBER(4) NOT NULL,APELLIDO VARCHAR2(10),COMISION NUMBER(10),DEPT_NO NUMBER(2) NOT NULL)CLUSTER EMPLEYDEPART (DEPT_NO);

Page 59: Admin is Trac Ion de Oracle

Tema 9_ Administración de Oracle

59

CLUSTERS• Cuando se agregan las tablas a un

cluster, las cláusulas de almacenamiento TABLESAPCE y STORAGE no se pueden emplear.

• Para poder utilizar las tablas agrupadas, es necesario crear un índice para el cluster antes.

SQL> CREATE INDEXind_empleydepart ON CLUSTER EMPLEYDEPART;

• Y ahora ya se puede operar con las tablas.