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.
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.
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
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)
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).
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;
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
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
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.
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
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.
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.
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,..
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.
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.
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,…
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.
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.
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
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
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
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
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
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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}]…
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
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.
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.
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];
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.
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.
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.
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.
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.
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).
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.
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.
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];
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.
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];
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.
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;
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
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
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;
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;
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]);
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.
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);
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.
Top Related