Definiciones
5 puntos por cada respuesta correcta. Total 15 puntos.
Defina brevemente los siguientes conceptos.
TABLESPACE: Los Tablespace son repositorios para los esquemas de Datos, incluyendo el Diccionario de Datos (Que es el esquema SYS). Todas las Bases de Datos deben tener un Tablespace SYSTEM y un Tablespace SYSAUX, y (Para efectos prácticos) un Tablespace Temporal (temporary) y un Tablespace Undo. Estos cuatro generalmente han sido creados cuando la Base de Datos fue creada.
DATAFILE: Las unidades logicas TABLESPACE tienen contenido uno o varios ficheros fisicos llamados DATAFILES, el que puede pertenecer a un solo tablespaces.
PERFIL: Los perfiles se utilizan para limitar la cantidad de recursos del sistema y de la BD disponibles para un usuario. Si no se definen perfiles para un usuario se utiliza el perfil por defecto, que especifica recursos ilimitados.
Los perfiles se pueden crear via el comando CREATE PROFILE, y se pueden modificar con la sentencia ALTER PROFILE. Un perfil de usuario es una forma de limitar los recursos que puede utilizar un usuario en la base de datos y de los recursos de la instalación y además gestiona el estado de las cuentas y reglas.
CREATE PROFILE NOMBREPERFIL LIMIT
{NOMBRE DE LOS LÍMITES}
{ENTERO [K | M] | UNLIMITED | DEFAULT };
UNLIMITED= No hay limites sobre un recurso en particular.
DEFAULT= Coge el limite del perfil default.
Borrado de un perfil:
DROP FILE NOMBREPERFIL [CASCADE];
En general, el perfil por defecto debe ser adecuado para los usuarios normales; los usuarios con requerimientos especiales deberían tener perfiles especiales.
Verdadero y Falso
5 puntos por cada respuesta correcta. Total 25 puntos.
Indique si la afirmación es verdadera o falsa encerrando en un círculo la alternativa correcta. Justifique las falsas.
- V F La sintaxis correcta para crear un tablespace FINANZAS y asociar un datafile FINA01 es:
>CREATE TABLESPACE “FINANZAS” ADD DATAFILE ‘E>ORADATA/TALLERBD/FINA01.DBF’; - V F Un Perfil nos permite por ejemplo asociar el privilegio de sistema CREATE TABLE a un usuario en particular.
- V F La cuota nos permite establecer un límite de almacenamiento para un usuario sobre un determinado datafile.
- V F Un parámetro de inicialización puede ser aplicado directamente a una instancia en funcionamiento mediante SCOPE MEMORY.
- V F Un modo de inicializar una base de datos Oracle es TRANSACTIONAL.
Alternativas
5 puntos por cada respuesta correcta. Total 10 puntos.
Seleccione la(s) alternativa(s) correctas por cada pregunta.
3.1 ¿En qué casos se hace necesario obligatoriamente una tarea de recuperación al momento de iniciar una instancia?
a) Cuando se ha cerrado la instancia en Modo TRANSACTIONAL.
b) Cuando se ha cerrado la instancia en Modo NORMAL.
c) Cuando se ha cerrado la instancia en Modo IMMEDIATE
d) Ninguna de las anteriores
3.2 Indique cuál de los siguientes en un privilegio de sistema:
a) UNLIMITED TABLESPACE
b) SELECT
c) EXECUTE
d) Todos los anteriores
Desarrollo
5 puntos por cada respuesta correcta. Total 15 puntos.
4.1 Indique los diferentes privilegios disponibles para objetos de tipo tabla.
PRIVILEGIOS EN ORACLE
En Oracle existen dos tipos de privilegios de usuario:
1. System: Que permite al usuario hacer ciertas tareas sobre la BD, como por ejemplo crear un Tablespace. Estos permisos son otorgados por el administrador o por alguien que haya recibido el permiso para administrar ese tipo de privilegio. Existen como 100 tipos distintos de privilegios de este tipo.
En general los permisos de sistema, permiten ejecutar comandos del tipo DDL, como CREATE, ALTER y DROP o del tipo DML. Oracle 10g tiene mas de 170 privilegios de sistema los cuales pueden ser vistos consultando la vista: SYSTEM_PRIVILEGE_MAP
Entre todos los privilegios de sistema que existen, hay dos que son los importantes: SYSDBA y SYSOPER. Estos son dados a otros usuarios que serán administradores de base de datos.
Para otorgar varios permisos a la vez, se hace de la siguiente manera:
SQL> GRANT CREATE USER, ALTER USER, DROP USER TO ahernandez;
2. Object: Este tipo de privilegio le permite al usuario realizar ciertas acciones en objetos de la BD, como una Tabla, Vista, un Procedure o Función, etc. Si a un usuario no se le dan estos permisos sólo puede acceder a sus propios objetos. Este tipo de permisos los da el owner o dueño del objeto, el administrador o alguien que haya recibido este permiso explícitamente (con Grant Option).
Por ejemplo, para otorgar permisos a una tabla Ventas para un usuario particular:
SQL> GRANT SELECT,INSERT,UPDATE, ON analista.venta TO jperez;
Adicionalmente, podemos restringir los DML a una columna de la tabla mencionada. Si quisieramos que este usuario pueda dar permisos sobre la tabla Factura a otros usuarios, utilizamos la cláusula WITH GRANT OPTION. Ejemplo:
SQL> GRANT SELECT,INSERT,UPDATE,DELETE ON venta TO mgarcia WITH GRANT OPTION;
4.2 Señale la finalidad del uso de roles.
Los roles son simplemente un conjunto de privilegios que se pueden otorgar a un usuario o a otro Rol. De esa forma se simplifica el trabajo del DBA en esta tarea.
Por default cuando creamos un usuario desde el Enterprise Manager se le asigna el permiso de connect, lo que permite al usuario conectarse a la BD y crear sus propios objetos en su propio esquema. De otra manera, debemos asignarlos en forma manual.
Para crear un Rol y asignarlo a un usuario se hace de la siguiente manera:
SQL> CREATE ROLE appl_dba;
Opcionalmente, se puede asignar una clave al Rol:
SQL> SET ROLE appl_dba IDENTIFIED BY app_pwd;
Para asignar este Rol a un usuario:
SQL> GRANT appl_dba TO jperez;
Otro uso común de los roles es asignarles privilegios a nivel de Objetos, por ejemplo en una Tabla de Facturas en donde sólo queremos que se puedan hacer Querys e Inserts:
SQL> CREATE ROLE consulta;
SQL> GRANT SELECT,INSERT on analista.factura TO consulta;
Y finalmente asignamos ese rol con este “perfil” a distintos usuarios finales:
SQL> GRANT consulta TO ahernandez;
Nota: Existen algunos roles predefinidos, tales como:
CONNECT, CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER,
ALTER SESSION, RESOURCE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR SCHEDULER, CREATE ANY JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM,
MANAGE SCHEDULER, etc.
DBA: Tiene la mayoría de los privilegios, no es recomendable asignarlo a usuarios que no son administradores.
SELECT_CATALOG_ROLE: No tiene privilegios de sistema, pero tiene cerca de 1600 privilegios de objeto.
Para consultar los roles definidos y los privilegios otorgados a través de ellos, utilize las vistas:
SQL> select * from DBA_ROLES;
SQL> select * from DBA_ROLE_PRIVS order by GRANTEE;
4.3 Mencione los diferentes métodos de autenticación
2. Autenticación Oracle
Cuando uno se conecta con una instancia de una base de datos la cuenta de usuario debe de estar autenticada. ORACLE provee tres métodos de autenticación para nuestra cuenta de usuario.
AUTENTICACIÓN MEDIANTE PASSWORD: Cuando un usuario conecta con una base de datos verifica que este usuario y la contraseña introducida almacenada en la base de datos, sea correcta. Las contraseñas se guardan encriptadas en la base de datos (en el data dictionary).
SQL > CREATE USER david IDENTIFIED BY tititus;
En este caso tititus es la contraseña de david que será guardada encriptada en la base de datos.
AUTENTICACIÓN EXTERNA: Cuando un usuario conecta con la base de datos se verifica que el nombre de usuario es el mismo que el nombre de usuario del sistema operativo para permitir la validación. No se almacenan las cuentas en la base de datos de ninguna forma. Estas cuentas están siempre referidas con OPS$ .A partir de la versión 10g puedes configurar OS_AUTHENT_PREFIX en el spfile
SQL > CREATE USER ops$david IDENTIFIED BY tititus;
Mediante IDENTIFIED EXTERNALLY decimos a la base de datos que nuestra cuenta es externa y tiene que ser validada con el sistema operativo.
AUTENTICACIÓN GLOBAL: Cuando un usuario se conecta con la base de datos se verifica globalmente cuando la información pasa por una opción avanzada de seguridad ( ADVANCED SECURITY OPTION ) para la autenticación tal como Kerberos, RADIUS …. Para las cuentas globales no se almacena tampoco nada en la base de datos.
SQL > CREATE USER david IDENTIFIED GLOBALLY AS ‘CN=alumnos,OU=campus …….’
Mediante IDENTIFIED GLOBALLY decimos a la base de datos que nuestra cuenta se autentica globalmente, mediante otra opción de seguridad avanzada.
Actividad
15 puntos por cada respuesta correcta. Total 45 puntos.
Actividad:
Para industrias ROSEN en Temuco debe efectuar las siguientes actividades sobre la base de datos Oracle en producción:
a) Generar Rol Despachadores, con privilegios de objeto que permitan seleccionar,e insertar registros sobre la tabla customers del esquema SH. Sobre esta misma tabla además se debe permitir modificar el campo cust_email.
SQL>__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
B) Crear usuario CPAVEZ, Tablespace temporal TEMP y por defecto USERS con CUOTA 20M sobre este. Rol Despachadores. Autenticación PASSWORD “inacap.2012”.
SQL>______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
C) Efectúe las operaciones necesarias que permitan que CPAVEZ pueda actualizar el campo department_name de la tabla departments en el esquema hr.
SQL>______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________