Vous êtes sur la page 1sur 158

Introduccin

La tarea de administracin de una base de datos

para varios usuarios es bastante compleja, por lo que se suele encomendar a una o varias personas.
El administrador de la base de datos (DBA: Data

Base Administrator) suele ser un usuario muy experimentado capaz de enfrentarse a los problemas de los dems usuarios y a los fallos que el sistema va planteando.

Introduccin
Las tareas del administrador de Oracle son: Instalar Oracle Disear y crear una base de datos Arrancar y detener la base de datos Crear y controlar usuarios Conceder privilegios Gestionar el espacio Hacer copias de seguridad Recuperar la base de datos

Qu es Oracle 11g?
Oracle 11g es la nueva suite de productos software

de la compaa Oracle, basados en la tecnologa Grid (o computacin Grid)


El Grid es una nueva arquitectura que agrupa

mltiples servidores y recursos de almacenamiento y procesamiento en una estructura ms econmica y flexible que atiende a todas las necesidades de la organizacin.

Qu es Oracle 11g?
Los tres elementos sobre los que se articula Oracle

Grid Computing son:


Oracle Database. Es el motor de la base de datos.

Dispone de las herramientas capaces de gestionar

eficazmente el almacenamiento de la informacin, utilizar de forma ptima los recursos, Gestiona de forma eficaz toda la informacin relacional, correo electrnico, documentos, multimedia, XML y espacial.

Qu es Oracle 11g?
Oracle Application Server. Es el servidor de

aplicaciones Oracle. Como nivel intermedio de una arquitectura de tres niveles consiste en un conjunto de servicios que permite a las aplicaciones basadas en exploradores web interactuar con las bases de datos de Oracle. Oracle Enterprise Manager. Proporciona un marco adecuado para llevar a cabo las tareas de administracin de la base de datos. Se accede a travs del navegador web mediante la URL http://nombre_del_host:550/em.

Arquitectura Oracle
Cuando hablamos de una base de datos no slo

nos estamos refiriendo a los datos fsicos, sino tambin a la combinacin de objetos de memoria y de proceso que se describen a continuacin. Componentes de la base de datos Los componentes de la base de datos Oracle son: archivos de datos (database files), archivos de diario o de transacciones (log files) y archivos de control (control files).

Arquitectura Oracle
Archivos de datos (database files) Contienen toda la informacin de la base de datos:

datos de usuario y datos de sistema. Antes de introducir informacin en la base de datos, es necesario crear un espacio donde ubicaremos las tablas (tablespaces) que contendrn los datos. Los tablespaces nos ayudan a organizar la informacin contenida en la base de datos; as podemos tener un tablespace para almacenar los datos de la aplicacin de almacn, otro para los datos de la aplicacin de nminas, etc.

Arquitectura Oracle
Archivos de datos (database files) Cada tablespace consta de uno o ms archivos de

disco. Un archivo de datos slo puede pertenecer a un nico tablespace. Al instalar Oracle se crean varios tablespaces. Algunos son:

SYSTEM. En l se almacena toda la informacin que Oracle necesita para gestionarse a s misma, p.e. el diccionario de datos. Se almacena en el archivo SYSTEM01.DBF

Arquitectura Oracle
Archivos de datos (database files) USERS. Contiene informacin personal de los usuarios. Normalmente, es el lugar en el que el DBA nos deja almacenar las tablas parra realizar pruebas. Se almacena en el archivo USERS01.DBF TEMP. Aqu Oracle almacena las tablas temporales (para gestionar sus transacciones). Se almacena en el archivo TEMP01.DBF UNDOTBS1. Es el tablespace donde Oracle guarda la informacin 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 transaccin. Se almacena en el archivo UNDOTBS01. DBF

Arquitectura Oracle
Registro de transacciones (log files) Se trata de archivos de datos en los que Oracle

registra todas las transacciones o modificaciones (INSERT, UPDATE y DELETE) que se producen. Esto permite recuperar la base de datos si hay problemas. Suele haber varios registros de rehacer almacenados fsicamente en los archivos REDO01.LOG, REDO02.LOG y REDO03.LOG Un registro Redo_Log contiene: identifiacin de la transaccin, direccin de bloque, nmero de fila, nmero de columna y valor anterior y nuevo del dato modificado.

Arquitectura Oracle
Archivos de control (control files) Contienen informacin sobre los archivos asociados

con una base de datos. Todas las modificaciones importantes que se hagan en la estructura de la base de datos se registran en el archivo de control, manteniendo as la integridad. Oracle recomienda que la base de datos tenga un mnimo de dos archivos de control en discos diferentes. Si se daa un disco de control, se podra restaurar utilizando la copia intacta.

Arquitectura Oracle
Archivos de control (control files) Los archivos de control que se crean en la instalacin

son: CONTROL01.CTL, CONTROL02.CTL y CONTROL03.CTL y contienen la siguiente informacin:


Informacin de arranque y parada. Nombre de los archivos de la base de datos y Redo_Log. Informacin sobre chekpoints (puntos de control que se dan cuando se llena el Redo_Log, cuando se detiene la bases de datos, etc). Fecha de creacin y nombre de la base de datos. Estado on-line y off-line de los archivos.

Arquitectura Oracle
Estructura de la memoria Los procesos del usuario (cliente) y del servidor se

comunican consigo mismos y entre ellos por medio de estructuras de memoria. Oracle utiliza dos tipos de estructuras de memoria: el SGA (System Global Area) y el PGA (Program Global Area)

Arquitectura Oracle
Estructura de la memoria rea global del sistema (SGA) Es un grupo de estructuras de memoria que sirven para almacenar los datos de la base de datos que se han consultado ms recientemente. Se descompone en las siguientes zonas:

Conjunto compartido: Formado por la cach de diccionario de datos, la cach de biblioteca y el rea SQL compartida. La cach de diccionario de datos contiene informacin acerca de los datos y su estructura. (p.e. si un usuario puede acceder o no a una tabla)

Arquitectura Oracle
Estructura de la memoria
La cach de diccionario de biblioteca contiene informacin sobre las instrucciones SQL ejecutadas sobre la base de datos. El rea SQL compartida contiene el plan de ejecucin y el rbol de anlisis de las sentencias SQL que se ejecutan. La segunda vez que un usuario ejecuta una sentencia idntica SQL ya ejecutada puede aprovecharse del anlisis disponible en esta rea para acelerar su ejecucin. Cach de buffers: contiene copias de los bloques de datos ledos de los archivos de datos. Los usuarios acceden a los datos en esta zona de la memoria. Tambin se le conoce como buffer del boque de datos.

Arquitectura Oracle
Estructura de la memoria

Conjunto grande: es un rea de memoria opcional. Se define cuando se utiliza la opcin del servidor compartido o cuando se realizan con frecuencia operaciones de copias de seguridad o restauracin. Conjunto Java: especifica el tamao para satisfacer los requisitos de anlisis de los comandos Java. Buffer del registro de rehacer (Redo_Log buffer): en esta rea se registran las transacciones (INSERT, UPDATE, DELETE) o cambios en la base de datos antes de escribirse en los archivos de registro rehacer.

Arquitectura Oracle
Estructura de la memoria rea global del programa(PGA) Es la zona de memoria utilizada por un nico proceso de usuario de Oracle. Contiene datos e informacin del proceso. La memoria PGA no se comparte.

Arquitectura Oracle
Procesos de soporte de la base de datos Las relaciones entre las estructuras fsicas y de

memoria de la base de datos se mantienen y aplican mediante una serie de procesos de soporte (de segundo plano, background o de fondo) Dependiendo de la configuracin de la base de datos, el nmero de procesos vara. La gestin de estos procesos la realiza la base de datos con poco trabajo administrativo.

Arquitectura Oracle
Procesos de soporte de la base de datos Hay un conjunto de procesos del servidor que

ayudan a la base de datos a funcionar: son los procesos soporte o de fondo (background):
Escritor de bases de datos DBWR (DataBase WriteR) Este proceso es el responsable de gestionar el contenido del

buffer de datos de la SGA. Lee los bloques de los archivos de datos, los almacena en la SGA y realiza escrituras de los bloques modificados en los archivos de datos. Cuando un usuario solicita una peticin cuyos datos no estn en el buffer de datos, el DBWR se encargar de llevar al buffer un nuevo bloque de informacin del archivo de datos.

Arquitectura Oracle
Procesos de soporte de la base de datos
Punto de comprobacin o control CKPT (ChecKPoinT) Estos puntos provocan que el DBWR escriba en los archivos de

datos todos los bloques que se hayan modificado desde el ltimo punto de control y que actualice las cabeceras de los archivos de datos y los archivos de control para registrar el punto de control. Se producen de forma automtica cuando se llena un archivo de registro de rehacer Redo_Log.

Arquitectura Oracle
Procesos de soporte de la base de datos
Escritor de registros LGWR (LoG WRiter) Gestiona la escritura del contenido del buffer del registro de

rehacer de la SGA a los archivos de Redo_Log. Es el nico proceso que escribe en los archivos de registro de rehacer y el nico que lee los buffers de este registro. Esta operacin permite que Oracle pueda recuperarse en cualquier momento si hay fallos. El proceso DBWR debe esperar al escritor de registros antes de escribir los bloques modificados desde los buffers del bloque de datos a los archivos de datos; es decir, en primer lugar se escribe la transaccin en los registros de rehacer y luego se escribe en la base de datos.

Arquitectura Oracle
Procesos de soporte de la base de datos
Supervisor del sistema SMON (System MONitor) Es un proceso obligatorio que se ocupa de todas las

recuperaciones que sean precisas durante el arranque de la base de datos. La limpia eliminando datos de las transacciones que el sistema ya no necesita y compacta los huecos libres en los ficheros de datos. Se activa de forma peridica para comprobar si su intervencin es precisa.

Arquitectura Oracle
Procesos de soporte de la base de datos
Supervisor del proceso PMON (Process MONitor) Realiza una limpieza al terminar la ejecucin de los procesos. Restaura las transacciones no validadas de los procesos de

usuario que abortan, liberando los bloques y los recursos de la SGA. Al igual que SMON, se activa de forma peridica para comprobar si es necesaria su intervencin.

Arquitectura Oracle
Procesos de soporte de la base de datos
Archivador ARCH (ARCHiver) Es opcional y archiva en disco o cinta una copia de los Redo_Log

cuando estn llenos para una posible recuperacin por fallo de disco. Se ejecuta en modo ARCHIVELOG.

Arquitectura Oracle
Procesos de soporte de la base de datos
Recuperador RECO (RECOverer) Es opcional y recupera transacciones distribuidas dudosas; se

usa en bases de datos Oracle distribuidas.

Arquitectura Oracle

Arquitectura Oracle
Qu es una instancia Oracle? Una instancia Oracle es un conjunto de

estructuras de memoria (SGA) y procesos en segundo plano que acceden a un conjunto de bases de datos.
INSTANCIA 1 (SGA + Procesos) INSTANCIA 2 (SGA + Procesos)

ARCHIVOS DE LA BASE DE DATOS

Arquitectura Oracle
Resumen
La base de datos Oracle ms elemental consta de: Uno o ms archivos de datos Uno o ms archivos de control Dos o ms archivos de Redo_Log Internamente, esta base de datos contiene Varios usuarios/esquemas Uno o ms segmentos de rollback Uno o ms espacios de tablas Tablas del diccionario de datos Objetos de usuario (tablas, vistas, etc.)

Arquitectura Oracle
Resumen
El servidor que accede a esta base de datos consta al

menos de:

Un SGA (que contiene cach del buffer del bloque de datos, cach del buffer del registro de rehacer, el fondo comn SQL) El proceso SMON El proceso PMON El proceso DBWR El proceso LGWR Procesos de usuario con PGA asociada

Arquitectura Oracle
Caso prctico Veamos que hace Oracle cuando hacemos una

consulta a la base de datos y cuando hacemos una actualizacin de un registro. Queremos consultar la nota de la alumna Luisa Martnez en la asignatura Informtica .
SELECT NOTA FROM NOTAS_ALUMNOS WHERE ASIGNATURA=Informtica AND NOMBRE_ALUMNO=Luisa Martnez;

Arquitectura Oracle
Caso prctico La sentencia SQL es un proceso de usuario que

sigue estos pasos:


El proceso de usuario pasa la sentencia SQL al proceso del servidor por medio del SGA 2. Los procesos del servidor buscan en el fondo comn SQL una versin ejecutable de la sentencia. Si la encuentran, se ejecuta la sentencia SQL; sino se encuentra, se procesa y se lleva su versin ejecutable al fondo comn.
1.

Arquitectura Oracle
Caso prctico 3. Si los datos requeridos no estn en el buffer del bloque de datos, por medio del proceso DBWR se leen los datos de los archivos de datos y se colocan en los buffers del bloque de datos del SGA. 4. Una vez que los datos se encuentran en los buffers del bloque de datos, el proceso de usuario puede leer la nota y mandrsela al usuario.

Este es el ejemplo ms sencillo ya que no se ha hecho ninguna modificacin de los datos.

Arquitectura Oracle
Caso prctico Supongamos que cambiamos la nota de

Informtica de Luisa Martnez. Se modifica el campo NOTA de la tabla NOTAS_ALUMNOS con el valor 7.
UPDATE NOTAS_ALUMNOS SET NOTA = 7 WHERE ASIGNATURA=Informtica AND NOMBRE_ALUMNO=Luisa Martnez;

Arquitectura Oracle
Caso prctico Los pasos que da Oracle con la sentencia UPDATE

son los siguientes:


El proceso de usuario pasa la sentencia SQL al proceso del servidor. 2. Los procesos del servidor buscan en el fondo comn SQL una versin ejecutable de la sentencia. Si la encuentran, se ejecuta la sentencia SQL; sino se encuentra, se procesa y se lleva su versin ejecutable al fondo comn.
1.

Arquitectura Oracle
Caso prctico 3. Si los datos requeridos no estn en el buffer del bloque de datos, por medio del proceso DBWR se leen los datos de los archivos de datos y se colocan en los buffers del bloque de datos del SGA. 4. Se registra el valor antiguo de los datos en un segmento de ROLLBACK (la nota antigua era 5). 5. Se crea una transaccin en el buffer de Redo_Log.

Arquitectura Oracle
Caso prctico 6. Se modifican los datos en los buffers del bloque de datos para reflejar la nueva nota (7). 7. Cuando hacemos un COMMIT, el LGWR escribe los buffers de Redo_Log a los archivos Redo_Log y se libera la informacin de deshacer en el segmento de rollback. 8. En algn momento se producir un punto de comprobacin o control CKPT, y el DBWR escribir en los archivos de datos todos los bloques que se hayan modificado desde el ltimo punto de control.

Gestin de seguridad
La gestin de seguridad tiene mucho que ver con la

gestin de usuarios y con la concesin y supresin de privilegios a los usuarios. El administrador de la base de datos es el responsable de permitir o denegar el acceso a los usuarios a determinados objetos o recursos de la base de datos. Podemos clasificar la seguridad de la base de datos en dos categoras: seguridad del sistema y seguridad de los datos.

Gestin de seguridad
La seguridad del sistema incluye los mecanismos

que controlan el acceso y uso de la base de datos a nivel del sistema. Por ejemplo: cada vez que se conecta un usuario a la base de datos, los mecanismos de seguridad comprobarn si ste est autorizado.

Gestin de seguridad
La seguridad de los datos incluye los mecanismos

que controlan el acceso y uso de la base de datos a nivel de objetos. Por ejemplo: cada vez que se conecta un usuario a un objeto (una tabla, una vista, etc.), los mecanismos de seguridad comprobarn si el usuario puede acceder a ese objeto y qu tipo de operacin puede hacer con l (SELECT, INSERT, etc.).

Gestin de seguridad
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 deben ejecutar la aplicacin de base de datos, como SQL*Plus, Oracle Forms y conectarse usando el nombre definido en la base de datos. Tambin pueden acceder a travs de un navegador web.

Gestin de seguridad
USUARIOS Asociado con cada usuario de la base de datos hay

un esquema con el mismo nombre. Un esquema es una coleccin lgica de objetos (tablas, vistas, secuencias, sinnimos, ndices, clusters, procedures, funciones, paquetes, etc.) Por defecto, cada usuario tiene acceso a todos los objetos de su esquema correspondiente, y puede acceder a los objetos de otro usuario siempre y cuando ste otro le haya concedido el privilegio de hacerlo.

Gestin de seguridad
USUARIOS Creacin de usuarios Al instalar Oracle se crean automticamente dos usuarios con privilegio de administrador (DBA): El usuario SYS y SYSTEM. El usuario SYS es el propietario de las tablas del diccionario de datos En ellas se almacena informacin sobre el resto de las estructuras de la base de datos. Oracle maneja las tablas del usuario SYS y ningn usuario, ni el administrador, puede modificarlas.

Gestin de seguridad
USUARIOS Creacin de usuarios Slo nos conectamos como usuario 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 slo lectura a las vistas de este diccionario, el cual se crea a la vez que la base de datos y es propiedad del usuario SYS. Contiene objetos de la base de datos, nombres de usuario, derechos y autorizaciones, restricciones, informacin sobre el espacio libre, exportacin y otros objetos.

Gestin de seguridad
USUARIOS Creacin de usuarios Los objetos del diccionario de datos a los que un usuario puede acceder se encuentran en la vista DICTIONARY, que es propiedad del usuario SYS. Con la siguiente orden se visualizan los objetos del diccionario de datos a los que se puede acceder.
SQL> SELECT TABLE_NAME FROM DICTIONARY

El prefijo de una vista del diccionario indica el nivel

de acceso a l:
Vistas USER y ALL Vistas DBA Accesibles para todos los usuarios Slo el administrador puede usarlas.

Gestin de seguridad
USUARIOS Creacin de usuarios El usuario 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 SYSTEM. Para crear otros usuarios es preciso conectarse como usuario SYSTEM, ya que ste posee el correspondiente privilegio.

Gestin de seguridad
USUARIOS Creacin de usuarios El administrador de la base de datos 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.

Gestin de seguridad
USUARIOS Creacin de usuarios El formato de la orden CREATE USER es:
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];

Gestin de seguridad
USUARIOS Creacin de usuarios La primera opcin, CREATE USER, crea un nombre de usuario que ser identificado por el sistema. La segunda opcin, 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, por defecto es USERS. TEMPORARY TABLESPACE especifica el nombre de tablespace para trabajos temporales, por defecto TEMP.

Gestin de seguridad
USUARIOS Creacin de usuarios QUOTA asigna un espacio en megabytes o en kilobytes en el tablespace asignado. Si no se establece esta clusula, el usuario no tiene cuota asignada y no podr crear objetos en el tablespace. Si un usuario dispone de acceso y de recursos ilimitados a cualquier tablespace, se le debe dar el privilegio UNLIMITED TABLESPACE con la orden GRANT.

Gestin de seguridad
USUARIOS Creacin de usuarios PROFILE asigna un perfil al usuario. Si se omite, Oracle asigna el perfil por omisin (DEFAULT). Un perfil limita el nmero de sesiones concurrentes de usuario, el tiempo de uso de CPU, el tiempo de una sesin, desconecta al usuario si sobrepasa el tiempo, etc.

Gestin de seguridad
USUARIOS Creacin de usuarios Vistas con informacin de usuarios: USER_USERS obtiene del usuario actual: la fecha de creacin, los tablespaces asignados, el identificador, etc. ALL_USERS obtiene informacin de todos los usuarios creados en la base de datos: el nombre, la fecha de creacin y su identificador.

Gestin de seguridad
USUARIOS Modificacin de usuarios Las opciones dadas a un usuario en la orden CREATE USER se pueden modificar con la orden ALTER USER. El formato es el siguiente:
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];

Gestin de seguridad
USUARIOS Modificacin de usuarios Los parmetros de ALTER USER significan lo mismo que en la orden CREATE. Cada usuario puede cambiar nicamente su clave de acceso, no puede cambiar nada ms a no ser que tenga el privilegio ALTER USER. Por ejemplo el USUARIO1 cambia su clave.
ALTER USER USUARIO1 IDENTIFIED BY NUEVACLAVE;

Gestin de seguridad
USUARIOS Borrado de usuarios Podemos borrar un usuario de la base de datos, incluidos los objetos que contiene. Para borrar usuarios se usa la orden DROP USER:
DROP USER usuario [CASCADE];
La opcin CASCADE suprime todos los objetos del

usuario antes de borrar el usuario. Para poder borrar usuarios es necesario tener el privilegio DROP USER.

Gestin de seguridad
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 ninguna 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, la creacin de funciones, etc.

Gestin de seguridad
PRIVILEGIOS Cuando se crea un usuario es necesario darle privilegios para que pueda hacer algo. Oracle ofrece varios roles o funciones. Tres de ellos se aplican al entorno de desarrollo:

CONNECT RESOURCE DBA

El resto estn relacionados con la administracin de la

base de datos.

Gestin de seguridad
PRIVILEGIOS Un rol o funcin est formado por un conjunto de privilegios:
Roles (funciones) CONNECT Privilegios ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYN, CREATE TABLE y CREATE VIEW. CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER y CREATE TYPE.

RESOURCE

DBA

Posee todos los privilegios del sistema.

Gestin de seguridad
PRIVILEGIOS Hay dos tipos de privilegios que podemos definir en la base de datos: privilegios sobre los objetos y privilegios del sistema. Privilegios sobre los objetos Estos privilegios nos permiten acceder y realizar cambios en los datos de los objetos de otros usuarios. Por ejemplo, el privilegio de consultar la tabla de otro usuario es un privilegio sobre objetos.

Gestin de seguridad
PRIVILEGIOS Privilegios sobre los objetos Se dispone de los siguientes privilegios sobre los objetos tablas, vistas, secuencias y procedures:
Privilegio ALTER DELETE Tabla X X X X X X X Vista Secuencia X Procedure

EXECUTE
INDEX INSERT REFERENCES

SELECT
UPDATE

X
X

X
X

Gestin de seguridad
PRIVILEGIOS Privilegios sobre los objetos
La orden para dar privilegios sobre los objetos es GRANT, con el

siguiente formato:

GRANT

{priv_objeto [,priv_objeto]...|ALL [PRIVILEGES]} *(columna *,columna+)+ ON [usuario.]objeto} TO {usuario|rol|PUBLIC [,{usuario|rol|PUBLIC-+ [WITH GRANT OPTION];
Mediante GRANT se pueden conceder privilegios INSERT,

UPDATE o REFERENCES sobre determinados campos de la tabla.

Gestin de seguridad
PRIVILEGIOS Privilegios sobre los objetos

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. 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, de este modo se garantiza el acceso a determinados objetos a todos los usuarios de la base de datos.

Gestin de seguridad
PRIVILEGIOS Privilegios sobre los objetos. Ejemplos
Se concede al usuario FRANCISCO los privilegios de SELECT e INSERT en la TABLA1: GRANT SELECT, INSERT ON TABLA1 TO FRANCISCO;

Se concede todos los privilegios sobre TABLA1 a todos los usuarios, incluyendo a los que se creen despus: GRANT ALL ON TABLA1 TO PUBLIC;

Se concede privilegios al usuario JUAN sobre TABLA1 para que pueda modificar slo el campo TEMPERATURA:

GRANT UPDATE (TEMPERATURA) ON TABLA1 TO JUAN;

Gestin de seguridad
PRIVILEGIOS 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. Por ejemplo, el privilegio para crear tablespaces es un privilegio del sistema. Existen ms de 80 tipos de privilegios distintos disponibles.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE ANY INDEX Operaciones autorizadas INDEX Crear un ndice en cualquier esquema, en cualquier tabla.

ALTER ANY INDEX


DROP ANY INDEX GRANT ANY PRIVILEGE

Modificar cualquier ndice de la base de datos.


Borrar cualquier ndice de la base de datos. PRIVILEGE Conceder cualquier privilegio de sistema.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE ANY PROCEDURE CREATE PROCEDURE ALTER ANY PROCEDURE DROP PROCEDURE EXECUTE ANY PROCEDURE Operaciones autorizadas 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, funciones o referencias a paquetes pblicos en cualquier esquema.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE PROFILE ALTER PROFILE DROP PROFILE Operaciones autorizadas PROFILE Crear un perfil de usuario. Modificar cualquier perfil. Borrar cualquier perfil.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE ROLE ALTER ANY ROLE DROP ANY ROLE Crear roles. Modificar roles. Borrar cualquier rol. Operaciones autorizadas ROLE

GRANT ANY ROLE

Dar permisos para cualquier rol de la base de datos.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE SEQUENCE ALTER ANY SEQUENCE DROP ANY SEQUENCE Operaciones autorizadas SEQUENCE Crear secuencias en nuestro esquema. Modificar cualquier secuencia de la base de datos. Borrar secuencias de cualquier esquema.

SELECT ANY SEQUENCE

Referenciar secuencias de cualquier esquema.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE SESSION ALTER SESSION RESTRICTED SESSION Operaciones autorizadas SESSION Conectarnos a la base de datos. Manejar la orden ALTER SESSION. Conectarnos a la base de datos cuando se ha levantado con STARUP RESTRICT.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE SYNONYM CREATE PUBLIC SYNONYM DROP PUBLIC SYNONYM Operaciones autorizadas SYNONYM Crear sinnimos en nuestro esquema. Crear sinnimos pblicos. Borrar sinnimos pblicos.

CREATE ANY SYNONYM DROP ANY SYNONYM

Crear sinnimos en cualquier esquema. Borrar sinnimos en cualquier esquema.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE TABLE CREATE ANY TABLE Operaciones autorizadas TABLE Crear tablas en nuestro esquema. Crear una tabla en cualquier esquema.

ALTER ANY TABLE


DROP ANY TABLE LOCK ANY TABLE SELECT ANY TABLE

Modificar una tabla en cualquier esquema.


Borrar una tabla en cualquier esquema. Bloquear una tabla en cualquier esquema. Hacer SELECT en cualquier tabla.

INSERT ANY TABLE


UPDATE ANY TABLE DELETE ANY TABLE

Insertar registros en cualquier tabla.


Modificar registros en cualquier tabla. Borrar registros de cualquier tabla.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE TABLESPACE ALTER TABLESPACE Operaciones autorizadas TABLESPACES Crear espacios de tablas. Modificar tablespaces.

MANAGE TABLESPACE
DROP TABLESPACE UNLIMITED TABLESPACE

Poner on-line u off-line cualquier tablespace.


Eliminar tablespaces. Utilizar cualquier espacio de cualquier tablespace.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE TYPE CREATE ANY TYPE ALTER ANY TYPE DROP ANY TYPE EXECUTE ANY TYPE UNDER ANY TYPE Operaciones autorizadas TYPE Crea tipos de objeto y cuerpos de tipos de objeto en el propio esquema. Crea tipos de objeto y cuerpos de tipos de objeto en cualquier esquema. Modifica tipos de objeto en cualquier esquema. Elimina tipos de objeto y cuerpos de tipos de objeto en cualquier esquema. Utiliza y hace referencia a tipos de objeto y tipos de coleccin en cualquier esquema. Crea subtipos a partir de cualquier tipo de objeto.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE USER Operaciones autorizadas USER Crear usuarios y crear cuotas sobre cualquier espacio de tablas, establecer espacios de tablas por omisin y temporales Modificar cualquier usuario. Este privilegio autoriza al que lo recibe a cambiar la contrasea de otro usuario, a cambiar cuotas sobre cualquier espacio de tablas, a establecer espacios de tablas por omisin, etc

ALTER USER

DROP USER

Eliminar usuarios.

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema
Privilegio CREATE VIEW CREATE ANY VIEW Operaciones autorizadas VIEW Crear vistas en el esquema propio. Crear vistas en cualquier esquema.

DROP ANY VIEW


SYSDBA

Borrar vistas en cualquier esquema.


OTROS Ejecutar operaciones STARTUP y SHUTDOWN, ALTER DATABASE, CREATE DATABASE, ARCHIVELOG y RECOVERY, etc. Ejecutar operaciones STARTUP y SHUTDOWN, ALTER DATABASE, CREATE DATABASE, ARCHIVELOG y RECOVERY, etc.

SYSOPER

Gestin de seguridad
PRIVILEGIOS Privilegios del sistema El formato de la orden GRANT para asignar privilegios del sistema es:
GRANT {privilegio|rol} [, {privilegio|rol- , + TO {usuario|rol|PUBLIC [,{usuario|rol|PUBLIC-+ [WITH ADMIN OPTION];

TO identifica a los usuario o roles a los que se conceden los privilegios WITH ADMIN OPTION permite que se puedan conceder esos mismos privilegios a otros usuarios o roles.

Gestin de seguridad
PRIVILEGIOS Retirada de privilegios Al igual que se conceden privilegios, se pueden retirar. Para retirar privilegios se usa la orden REVOKE. El formato para retirar privilegios de objetos a los usuarios o roles es:
REVOKE ON FROM {priv_objeto [, {priv_objeto+ |ALL *PRIVILEGES+[usuario.]objeto {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC-+;

Gestin de seguridad
PRIVILEGIOS Retirada de privilegios El formato para retirar privilegios de sistema o roles a usuarios o para retirar privilegios de roles es:
REVOKE FROM {priv_sistema|rol} [, {priv_sistema|rol- + {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC-+;

Gestin de seguridad
PRIVILEGIOS Retirada de privilegios. Ejemplos Retirar los privilegios SELECT y UPDATE sobre TABLA1 a FRANCISCO
REVOKE SELECT, UPDATE ON TABLA1 FROM FRANCISCO; Retirar todos los privilegios concedidos a FRANCISCO y a JUAN REVOKE ALL ON TABLA1 FROM FRANCISCO, JUAN;

Gestin de seguridad
PRIVILEGIOS 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:

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 a los roles. USER_TAB_PRIVS: concesiones sobre objetos que son propiedad del usuario, concedidos o recibidos por ste.

Gestin de seguridad
PRIVILEGIOS Vistas con informacin de los privilegios

USER_TAB_PRIVS_MADE: concesiones sobre objetos que recibe el usuario. USER_COL_PRIVS: concesiones sobre campos (columnas) en las que el usuario es el propietario, asigna el privilegio o lo recibe. USER_COL_PRIVS_MADE: todas las concesiones sobre campos (columnas) de objetos que son propiedad del usuario. USER_COL_PRIVS_RECD: concesiones sobre campos (columnas) recibidas por el usuario.

Gestin de seguridad
ROLES Cuando necesitemos que un conjunto de usuarios tengan los mismos privilegios para trabajar con ciertos datos, podemos agrupar dicho conjunto de privilegios en un rol. 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.

Gestin de seguridad
ROLES En primer lugar creamos el rol con la orden SQL CREATE ROLE y, a continuacin, asignamos privilegios con la orden GRANT. El formato es:
CREATE ROLE NombreRol;
Para crear un rol se requiere el privilegio CREATE

ROLE. Por ejemplo, creamos un rol llamado ACCESO.


CREATE ROLE ACCESO;

Gestin de seguridad
ROLES Conceder privilegios a los roles Una vez creado un rol tenemos que concederle privilegios usando la orden GRANT. Por ejemplo, asignamos los privilegios al rol ACCESO:
GRANT SELECT, INSERT ON EMPLE TO ACCESO;

GRANT INSERT ON DEPART TO ACCESO;


GRANT CREATE SESSION TO ACCESO;

Gestin de seguridad
ROLES Conceder privilegios a los roles Para conceder el rol a un usuario escribimos:
GRANT ACCESO TO USUARIO;
El usuario podr conectarse a la base de datos y hacer

SELECT e INSERT en la tabla EMPLE, e INSERT en la tabla DEPART. Se pueden aadir privilegios al rol ejecutando otra orden GRANT. GRANT SELECT ON DEPART TO ACCESO;

Gestin de seguridad
ROLES Lmites en privilegios sobre roles Un rol puede decidir el acceso de un usuario a un objeto, pero no puede permitir la creacin de objetos. Supresin de privilegios en los roles La orden REVOKE permite suprimir los privilegios dados a los roles. Por ejemplo retiramos el privilegio INSERT del rol ACCESO en la tabla EMPLE:
REVOKE INSERT ON EMPLE FROM ACCESO;

Gestin de seguridad
ROLES Supresin de un rol La orden DROP ROLE permite eliminar un rol de la base de datos. Oracle retira el rol concedido a todos los usuarios y roles a los que se concedi. Para poder eliminar un rol es necesario ser administrador o tener el privilegio DROP ANY ROLE. El formato es:
DROP ROLE NombreRol;

Gestin de seguridad
ROLES Establecer un rol por defecto Es posible establecer un rol por defecto a un usuario mediante la orden ALTER USER. El formato es:
ALTER USER NombreUsuario DEFAULT ROLE NombreRol;
Por ejemplo establecemos el rol ACCESO por defecto

para el USUARIO creado anteriormente: ALTER USER USUARIO DEFAULT ROLE ACCESO;

Gestin de seguridad
ROLES Informacin sobre roles en el diccionario de datos Para saber a qu usuarios se ha concedido acceso a un rol, o los privilegios que se han concedido a un rol, se pueden consultar las vistas del diccionario de datos:

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.

Gestin de seguridad
PERFILES Un perfil es un conjunto de lmites a los recursos de la base de datos. Se pueden utilizar perfiles para poner lmites a la cantidad de recursos del sistema y de la base de datos disponibles para un usuario y para gestionar las restricciones de contrasea. Por ejemplo, se puede crear un perfil que limite el tiempo de conexin a la BD; si se asigna ese perfil a un usuario y este rebasa el tiempo lmite, no podr utilizar la BD a menos que se realice de nuevo la conexin.

Gestin de seguridad
PERFILES Si no se crean perfiles en una base de datos, entonces se utiliza el perfil por defecto (DEFAULT) que especifica recursos ilimitados para todos los usuarios. La sentencia SQL para crear un perfil es CREATE PROFILE, cuyo formato es:
CREATE PROFILE NombrePerfil LIMIT {parmetros_recursos|parmetros_contrasea} {entero [K|M] | UNLIMITED | DEFAULT};

UNLIMITED, significa que no hay lmite sobre un recurso particular. DEFAULT coge el lmite del perfil DEFAULT.

Gestin de seguridad
PERFILES parmetros_recursos: 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 parmetros_contrasea: FAILED_LOGING_ATTEMPTS, PASSWORD_LIFE_TIME, PASSWORD_REUSE_TIME, PASSWORD_REUSE_MAX, PASSWORD_LOCK_TIME, PASSWORD_GRACE_TIME, PASSWORD_VERIFY_FUNCTION

Gestin de seguridad
PERFILES
Recursos a limitar
RECURSO SESSIONS_PER_USER FUNCIN Nmero de sesiones mltiples concurrentes permitidas por nombre de usuario Limita el tiempo de conexin permitida por sesin antes de que el usuario sea desconectado (minutos) Limita el tiempo de inactividad permitido antes de que el usuario sea desconectado (minutos)

CONNECT_TIME

IDLE_TIME

Gestin de seguridad
PERFILES
Recursos a limitar
RECURSO CPU_PER_SESSION FUNCIN Limita el tiempo mximo de CPU por sesin. Este valor se expresa en centsimas de segundo. Limita el tiempo mximo por CPU por llamada (de anlisis, ejecucin o bsqueda). En centsimas de segundo.

CPU_PER_CALL

LOGICAL_READS_PER_SESSION

Limita el nmero de bloque de datos ledos en una sesin

Gestin de seguridad
PERFILES
Recursos a limitar
RECURSO LOGICAL_READS_PER_CALL FUNCIN Limita el nmero de bloques de datos ledos por llamada (de anlisis, ejecucin o bsqueda) Limita el nmero de bytes enteros de espacio privado en la SGA (til para sistemas que utilicen multi-threaded) Limita el coste total de recursos para una sesin en unidades de servicio basadas en una suma de los siguientes recursos: CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION y PRIVATE_SGA

PRIVATE_SGA

COMPOSITE_LIMIT

Gestin de seguridad
PERFILES
Recursos a limitar
RECURSO FAILED_LOGIN_ATTEMPS FUNCIN Nmero de intentos de acceso sin xito consecutivos que producir el bloqueo de la cuenta. Nmero de das que puede utilizarse una contrasea antes de que caduque. Nmero de das que deben pasar antes de que se pueda reutilizar una contrasea. Nmero de veces que debe cambiarse una contrasea antes de poder reutilizarla.

PASSWORD_LIFE_TIME PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX

Gestin de seguridad
PERFILES
Recursos a limitar
RECURSO PASSWORD_LOCK_TIME FUNCIN Nmero de das que quedar bloqueada una cuenta si se sobrepasa el valor del parmetro FAILED_LOGIN_ATTEMPTS. Nmero de das del periodo de gracia durante el cual una contrasea puede cambiarse cuando ha alcanzado su valor PASSWORD_LIFE_TIME.

PASSWORD_GRACE_TIME

Gestin de seguridad
PERFILES Para activar el uso de perfiles en el sistema, el administrador ha de ejecutar esta orden:
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
FALSE desactiva la utilizacin de perfiles. Para asignar un perfil a un usuario se puede utilizar la

orden ALTER USER:


ALTER USER USUARIO PROFILE nombreperfil;
O bien al crear el usuario se le puede asignar un perfil.

Gestin de seguridad
PERFILES. Ejemplos Creamos el perfil PERFIL1, en el que limitamos a uno el nmero de sesiones concurrentes por usuario ya dos minutos el tiempo de conexin permitido por sesin:
CREATE PROFILE PERFIL1 LIMIT SESSIONS_PER_USER 1 CONNECT_TIME 2;
A continuacin se crea el usuario PRUEBA, se le asigna el

PERFIL1 y se le concede el rol CONNECT: SQL>CREATE USER PRUEBA IDENTIFIED BY PRUEBA QUOTA 100K ON USERS PROFILE PERFIL1; SQL>GRANT CONNECT TO PRUEBA;

Gestin de seguridad
PERFILES. Ejemplos Creamos el perfil PERFIL2, en el se permiten tres intentos de acceso fallidos para la cuenta, el cuarto producir el bloqueo de la cuenta:
CREATE PROFILE PERFIL2 LIMIT FAILED_LOGIN_ATTEMPTS 3;
Se asigna al usuario prueba

ALTER USER PRUEBA PROFILE PERFIL2;


Si hay 3 conexiones fallidas consecutivas en la cuenta

PRUEBA quedar bloqueada por Oracle. Para desbloquear una cuenta, el administrador tiene que ejecutar:

ALTER USER PRUEBA ACCOUNT UNLOCK;

Gestin de seguridad
PERFILES La vista DBA_PROFILES contiene informacin sobre los lmites. La orden ALTER PROFILE permite modificar una determinada configuracin de perfil. El formato es el mismo que el de la orden CREATE PROFILE. Borrado de un perfil Para borrar un perfil se usa la orden DROP PROFILE:
DROP PROFILE nombreperfil [CASCADE];
Si algn usuario lo tiene asignado es necesario incluir la

opcin CASCADE

Gestin de tablespaces
Una base de datos est formada por un conjunto de

archivos de datos. Oracle agrupa estos archivos usando un objeto denominado tablespace o espacio de tablas. Se llama as porque contiene tablas de datos. Para introducir datos en la base de datos es necesario crear un tablespace y, seguidamente, las tablas en las que se van a introducir los datos. Estas tablas se deben almacenar en un tablespace.

Gestin de tablespaces
Un tablespace es una unidad lgica de

almacenamiento de datos representada fsicamente por uno o ms archivos de datos. Se recomienda no mezclar datos de diferentes aplicaciones en el mismo tablespace, es decir, se debe crear un tablespace para almacenar los datos de la aplicacin de gestin de almacn, otro para almacenar los datos de la nmina de los empleados, etc. Al instalar Oracle se crean varios tablespace: SYSTEM, USERS, TEMP o UNDOTBS1

Gestin de tablespaces
Creacin de un tablespace Para crear un tablespace se usa la orden CREATE

TABLESPACE. Nos 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 en una sentencia CREATE TABLE.

Gestin de tablespaces
Creacin de un tablespace
CREATE TABLESPACE nombretablespace DATAFILE nombrearchivo *SIZE entero *K|M+ *REUSE+ [AUTOEXTEND {OFF|ON clusulas}] *,nombrearchivo *SIZE entero *K|M+ *REUSE+ *AUTOEXTEND ,OFF|ON clusulas-+ + [DEFAULT STORAGE ( INITIAL tamao NEXT tamao MINEXTENTS tamao MAXEXTENTS tamao PCINCREASE valor )] [ONLINE|OFFLINE];

Gestin de tablespaces
Creacin de un tablespace Donde, DATAFILE, especifica el archivo o archivos de datos de que constar el tablespace. SIZE entero, especifica el tamao 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.

Gestin de tablespaces
Creacin de un tablespace Donde, DEFAULT STORAGE, define el almacenamiento por omisin 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, extensin inicial. Especifica el tamao en bytes de la primera extensin del objeto. El tamao se puede especificar en Kb o Mb. El valor mnimo es el tamao de 2 bloques de datos. El valor por defecto es 5 bloques de datos, es decir, 10 K (1 bloque son 2 K).

Gestin de tablespaces
Creacin de un tablespace Donde, NEXT, extensin siguiente. Especifica el tamao de la siguiente extensin que se va a asignar al objeto. Tambin se puede especificar en Kb o Mb. El valor por defecto es 5 bloques de datos (10 K). MINEXTENTS, reserva extensiones adicionales ms all de la extensin inicial que se le da a la tabla por omisin.

Gestin de tablespaces
Creacin de un tablespace Donde, MAXEXTENTS, es el nmero total de extensiones, incluida la primera, que Oracle puede asignar al objeto. El valor depende del tamao del bloque de datos. Si el tamao del bloque es de 2 K, el valor es 121; si el tamao del bloque es de 4 K, el valor es 249,etc.

Gestin de tablespaces
Creacin de un tablespace Donde, PCTINCREASE, es un factor de crecimiento para la extensin. El valor por omisin es 50, lo que significa que cada extensin subsiguiente ser un 50% ms grande que la extensin anterior. El valor de la siguiente extensin es:

NEXT=NEXT + (PCTINCREASE*NEXT)/100

Gestin de tablespaces
Creacin de un tablespace Donde, ONLINE u OFFLINE. Con ONLINE, el tablespace est disponible despus de crearlo, es el valor por defecto, con OFFLINE impide su acceso. AUTOEXTEND clusulas: activa o desactiva el crecimiento automtico de los archivos de datos del tablespace. Cuando un tablespace se llena podemos usar esta opcin para que el tamao del archivo o archivos de datos asociados crezca automticamente. AUTOEXTEND OFF desactiva el crecimiento automtico.

Gestin de tablespaces
Creacin de un tablespace Donde,
AUTOEXTEND ON NEXT entero {K|M} MAXSIZE {UNLIMITED|entero {K|M}}
NEXT entero es el incremento de espacio en disco expresado

en Kilobytes o en Megabytes que se reservar automticamente para el archivo. MAXSIZE es el mximo espacio en disco reservado para la extensin automtica del archivo. UNLIMITED significa que no hay lmite de espacio en disco reservado.

Gestin de tablespaces
Creacin de un tablespace. 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 tamao inicial para el objeto que se cree en este tablespace

(por ejemplo, una tabla) es de 10K, el tamao de la siguiente extensin del objeto ser de 10 k tambin; y cada extensin subsiguiente ser un 25 % ms grande que el anterior. Y por ltimo, asignamos dos archivos (fsicos) a este tablespace, llamados TRABJ1.ORA y TRABJ2.ORA de 10 y 5 Megas respectivamente.

Gestin de tablespaces
Vistas con informacin sobre tablespaces Existen varias vistas para obtener informacin sobre

tablespaces. Algunas de ellas son:


DBA_DATA_FILES: se utiliza para ver los archivos

utilizados en los tablespaces. Para consultar esta vista es necesario conectarse como administrador.

Gestin de tablespaces
Vistas con informacin sobre tablespaces 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:

FILE_ID: n identificativo del archivo BLOCK_ID: identificacin del primer bloque libre. BYTES: n de bytes libres. BLOCKS: n de bloques libres RELATIVE_FNO: n relativo del fichero en la primera extensin del bloque.

Gestin de tablespaces
Vistas con informacin sobre tablespaces DBA_FREE_SPACE: se trata de extensiones libres en todos los tablespaces. Slo pueden consultar esta vista los administradores. DBA_TABLESPACES: Es la descripcin de todos los tablespaces. Slo administradores.

Gestin de tablespaces
Vistas con informacin sobre tablespaces DBA_TS_QUOTAS: Describe los bytes utilizados por los usuarios en cada tablespace. Slo administradores.

MAX_BYTES: n mximo de bytes que tiene el usuario asignados. BLOCKS: n de bloques usados BYTES: n de bytes usados por el usuario MAX_BLOCKS: mximo nmero de bloques.

Gestin de tablespaces
Modificacin de tablespaces Es posible modificar los tablespaces despus de

crearlos, pudiendo:
Aadir nuevos archivos a un tablespace existente
Modificar las clusulas de almacenamiento para los

objetos que se almacenen en el tablespace Activarlo o Desactivarlo

Gestin de tablespaces
Modificacin de tablespaces La modificacin 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]};

Gestin de tablespaces
Modificacin de tablespaces Donde, nombretablespace, es el nombre del tablespace que se quiere modificar. ADD_DATAFILE, aade al tablespace uno o varios archivos. RENAME DATAFILE, cambia el nombre de un archivo existente del tablespace. Este cambio se tiene que hacer desde el sistema operativo, y despus, ejecutar la orden SQL. El tablespace debe estar desactivado (OFFLINE) mientras se produce el cambio.

Gestin de tablespaces
Modificacin de tablespaces Donde, AUTOEXTEND activa o desactiva el crecimiento automtico de los archivos de datos del tablespace. AUTOEXTEND OFF, desactiva el crecimiento automtico.
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 automticamente para el archivo. MAXSIZE es el mximo espacio en disco reservado para la extensin automtica del archivo. UNLIMITED, significa que no hay lmite del espacio en disco reservado.

Gestin de tablespaces
Modificacin de tablespaces Donde, DEFAULT STORAGE especifica los nuevos parmetros de almacenamiento para todos los objetos que se creen a partir de ahora en este tablespace. ONLINE pone el espacio de tablas en lnea (activado) OFFLINE pone el espacio de tablas fuera de lnea (desactivado).

Gestin de tablespaces
Modificacin de tablespaces. Ejemplos Desactivamos el tablespace TRABAJO

SQL> ALTER TABLESPACE TRABAJO OFFLINE;


Se agrega el archivo llamado TRABAJ3.ORA de 6

Megas al tablespace TRABAJO. SQL> ALTER TABLESPACE TRABAJO ADD DATAFILE TRABAJ3.ORA SIZE 6 M;

Gestin de tablespaces
Modificacin de tablespaces. Ejemplos Creamos un tablespace muy pequeo de 100Kb

llamado PEQUE y creamos una tabla en ese tablespace. SQL>CREATE TABLESPACE PEQUE DATAFILE PEQUEO.ORA SIZE 100K;

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

Gestin de tablespaces
Modificacin de tablespaces. Ejemplos Aadimos al tablespace PEQUE, un archivo de 100K

llamado MAYOR que se va extendiendo de forma automtica hasta 200K cuando se llena. Como mximo el espacio utilizado en disco para esta archivo es de 1 Mega.

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

Gestin 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 opcin INCLUDING CONTENTS, permite borrar un tablespace que tenga datos. Sin esta opcin nicamente podremos borrar un tablespace vaco.

Gestin de tablespaces
Borrado de tablespaces Se recomienda poner el tablespace OFFLINE antes de

borrarlo para asegurarnos que no haya sentencias SQL que estn accediendo a datos del tablespace, en cuyo caso no nos dejara borrarlo. Por ejemplo, para borrar el tablespace PEQUE y los archivos de datos asociados escribiremos: DROP TABLESPACE PEQUE INCLUDING CONTENTS AND DATAFILES;

Gestin de tablespaces
Parmetros de almacenamiento La orden CREATE TABLE toma los parmetros de

almacenamiento indicados en la clusula DEFAULT STORAGE del tablespace. No obstante, la orden CREATE TABLE permite especificar parmetros de almacenamiento para la tabla cuando queramos asignar parmetros distintos a los que asigna el tablespace.

Gestin de tablespaces
Parmetros de almacenamiento La sintaxis completa sera:
CREATE TABLE nombretabla( col1 tipodato [NOT NULL], col2 tipodato *NOT NULL+, *restricciones de tabla+. ) STORAGE( INITIAL tamao NEXT tamao MINEXTENTS tamao MAXEXTENTS tamao PCTINCREASE valor) [TABLESPACE noombretablespace];

Otros objetos
Secuencias Objeto de base de datos que sirve para generar enteros

nicos; es muy til para generar automticamente valores para claves primarias. 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.

Otros objetos
Secuencias La sintaxis para crear un secuencia es:
CREATE SEQUENCE nombresecuencia [INCREMENT BY entero] [START WITH entero] [MAXVALUE entero | NOMAXVALUE] [MINVALUE entero |NOMINVALUE] [CYCLE|NOCYCLE] [ORDER |NOORDER] [CACHE entero |NOCACHE];

Otros objetos
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 nmero con el que comienza la secuencia. MAXVALUE entero, es el nmero ms alto que generar la secuencia. Deber ser mayor o igual al nmero de comienzo (START WITH) y mayor que el especificado en MINVALUE.

Otros objetos
Secuencias Donde: NOMAXVALUE, indica que el valor mximo de la secuencia ser 10 27 y en una secuencia descendente -1. MINVALUE entero, el nmero ms 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 mnimo para una secuencia ascendente ser 1 y -10 26 para una secuencia descendente.

Otros objetos
Secuencias Donde: CYCLE|NOCYCLE. CYCLE, reanuda la secuencia cuando esta llega al mximo o al mnimo valor; NONCYCLE no la reanuda. ORDER|NOORDER. ORDER garantiza que los nmeros 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 nmeros de secuencia.

Otros objetos
Secuencias 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 pseudocolumnas el formato es: NOMBRESECUENCIA.PSEUDOCOLUMNA. Ejemplo: NOMBRESECUENCIA.CURRVAL Para eliminar una secuencia:

DROP SEQUENCE nombresecuencia;

Otros objetos
Secuencias.Ejemplos Creamos una tabla llamada FRUTAS con dos campos:

CODIGO y NOMBRE. El campo CODIGO se define como clave primaria: SQL>CREATE TABLE FRUTAS ( CODIGO NUMBER(2) NOT NULL PRIMARY KEY, NOMBRE VARCHAR2(15) );

Otros objetos
Secuencias.Ejemplos Ahora se crea una secuencia llamada CODIGOS que

generar nmeros empezando por el valor 1, con incremento 1 y cuyo mximo valor ser 99: SQL>CREATE SEQUENCE CODIGOS START WITH 1 INCREMENT BY 1 MAXVALUE 99;

Otros objetos
Secuencias.Ejemplos Se insertan filas en la tabla FRUTAS usando la

secuencia CODIGOS para generar el CODIGO de cada fila de la tabla: SQL>INSERT INTO FRUTAS VALUE (CODIGOS.NEXTVAL, MANZANAS);

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


SQL>INSERT INTO FRUTAS VALUE (CODIGOS.NEXTVAL, PERAS);

Otros objetos
Secuencias.Ejemplos Y al hacer: SELECT * FROM FRUTAS; obtenemos:
CODIGO 1 NOMBRE MANZANAS

2
3

NARANJAS
PERAS

Para consultar el valor actual de la secuencia

escribimos: SELECT CODIGOS.CURRVAL FROM DUAL; Para eliminar una secuencia se usa la orden DROP SEQUENCE: DROP SEQUENCE CODIGOS;

Otros objetos
ndices Un ndice es un objeto de base de datos que se asocia

a una tabla y al que se asocia uno o varios campos de la tabla. Se pueden almacenar en un tablespace diferente al de la tabla que indexa. Contienen un elemento para cada valor que aparece en el campo(s) indexado(s) de la tabla y proporciona un acceso rpido y directo a los registros mediante el ROWID.

Otros objetos
ndices La utilidad de los ndices es acelerar las bsquedas. Si

una columna est indexada, la bsqueda de un dato ser una bsqueda binaria mucho mas eficiente que una bsqueda secuencial. Se debe indexar cuando se disponga de una gran cantidad de filas en una tabla, y adems, cada fila se identifique por una o varias columnas.

Otros objetos
ndices No se deben indexar tablas pequeas. 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.

Otros objetos
ndices Sintaxis:

CREATE INDEX nombreindice ON nombretabla (col1*ASC|DESC+ *,col2*ASC1DESC+) [STORAGE clausulas_almacenamiento] [TABLESPACE nombretablespace] [otras clusulas]

Otros objetos
ndices Donde, Nombretabla, 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.

Otros objetos
ndices Cuando creamos una clave primaria (PRIMARY KEY) o

una restriccin de unicidad (UNIQUE), se crea un ndice con el nombre de la restriccin. Para borrar un ndice: DROP INDEX nombreindice; Las vistas USER_INDEXES y DBA_INDEXES informan sobre los ndices creados.

Otros objetos
ndices. Ejemplos Para crear un ndice:

SQL>CREATE INDEX indicemple ON EMPLE (EMP_NO);


Para ver los ndices creados en la tabla EMPLE:

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


Para borrar el ndice indiceemple:

SQL>DROP INDEX indicemple;

Otros objetos
Clsters Un clster es un objeto que almacena varias tablas que

tienen una o ms columnas en comn en una misma rea del disco. Las filas de las tablas con los mismos valores en las columnas de combinacin se almacenan fsicamente juntas, as las consultas sern ms rpidas.

Otros objetos
Clsters La tablas se aaden a un clster con la orden CREATE

TABLE y la clusula CLUSTER.

CREATE TABLE nombretabla (definicin de columnas) CLUSTER nombrecluster (columna[,columna]);

Otros objetos
Clsters Para crear un cluster:

CREATE CLUSTER nombrecluster (columna tipo_dato [,columna tipo_dato]) [SIZE entero] [STORAGE (clusulas de almacenamiento)] [TABLESPACE nombretablespace];

Otros objetos
Clsters Donde, SIZE entero, especifica el tamao en bytes para un bloque lgico. El nombre de columna no tiene porqu ser igual al de las tablas.

Otros objetos
Clsters Para eliminar un cluster:

DROP CLUSTER nombrecluster [INCLUDING TABLES [CASCADE CONSTRAINTS]];


Si el cluster contiene tablas, es necesario borrarlo con

INCLUDING TABLES. La opcin CASCADE CONSTRAINTS, permite borrar las reglas de integridad referencial de tablas que no estn en el clster, pero hacen referencia a claves de las tablas agrupadas.

Otros objetos
Clsters. Ejemplos Creamos un cluster:

SQL>CREATE CLUSTER EMPLEYDEPART ( numero_dpto NUMBER(2));

Otros objetos
Clsters. Ejemplos Agregamos las tablas EMPLE y DEPART al cluster. La

columna que tienen en comn es DEPT_NO:


SQL> CREATE TABLE DEPART( DEPT_NO NUMBER(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);

Otros objetos
Clsters Cuando se agregan las tablas a un cluster, las clusulas

de almacenamiento TABLESPACE y STORAGE no se pueden emplear. Para poder utilizar las tablas agrupadas, es necesario crear un ndice para el cluster antes.

SQL> CREATE INDEX ind_empleydepart ON CLUSTER EMPLEYDEPART; Y ahora ya se puede operar con las tablas.

Otros objetos
Enlaces de bases de datos Un enlace de base de datos es un objeto que permite

acceder a objetos de una base de datos remota. Define el enlace entre una base de datos local y un nombre de usuario en un una base de datos remota. Se usa para realizar consultas en tablas de la base de datos remota. CREATE [PUBLIC] DATABASE LINK nombredeenlace CONNECT TO usuario IDENTIFIED BY clave USING cadena_de_conexin;

Otros objetos
Enlaces de bases de datos Donde, PUBLIC crea un enlace de base de datos pblico. Cadena_de_conexin es la cadena de conexin utilizada para conectar con la base de datos remota. usuario/clave es el nombre de usuario y la contrasea utilizados para conectarse a la base de datos remota. El nombre de usuario debe existir en la base de datos remota.

Otros objetos
Enlaces de bases de datos. Ejemplo Para conectar a la base de datos remota (por ejemplo,

est almacenada en un Servidor Novell) cuya cadena de conexin es DAI y el nombre de usuario y su clave es JUAN/ISFE, se crea el siguiente enlace de datos: CREATE DATABASE LINK mienlace CONNECT TO JUAN IDENTIFIED BY ISFE USING DAI; Se puede acceder a la tabla EMPLE de JUAN de la siguiente manera:

SELECT * FROM EMPLE@mienlace;

Otros objetos
Enlaces de bases de datos. Para eliminar un enlace de base de datos se usa la

orden DROP DATABASE LINK:

DROP [PUBLIC] DATABASE LINK nombredeenlace; Por ejemplo, borramos el enlace anterior:
DROP DATABASE LINK mienlace;