Tema 5 - Esquemas en Oracle (Curso 2011)

Curso de Administración de Base de Datos (ORACLE) TEMA 5 ESTRUCTURAS DE BBDD ESQUEMAS 1 2011 Curso de Administració

Views 50 Downloads 0 File size 496KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Curso de Administración de Base de Datos (ORACLE)

TEMA 5 ESTRUCTURAS DE BBDD ESQUEMAS

1

2011

Curso de Administración de Base de Datos (ORACLE)

2011

1 Esquemas / Usuarios Un esquema es una colección de objetos de Base de datos. Cada esquema es propiedad de un usuario de base de datos y tiene el mismo nombre que el propietario del mismo. Los objetos de un esquema son estructuras lógicas que hacen referencia directa a los datos. Los objetos de un esquema, pueden estar en uno o en varios tablespaces, así como en un Tablespace puede haber objetos de varios esquemas. Los tipos de objetos de un esquema son:             

Clusters Constraints Likns de Base de Datos Triggers Procedimientos Funciones Índices Clases Java Vistas Tablas Secuencias Paquetes Sinónimos

Hay otros tipos de objetos de la base de datos que no son propiedad de ningún esquema como son:  Ficheros de parámetros  Roles  Segmentos de rollback  Tablespaces  Usuarios Los objetos de un esquema, pueden estar en uno o varios tablespaces y dentro de estos encontrarse físicamente en uno o diferentes ficheros de datos tal y como muestra la siguiente figura:

2

Curso de Administración de Base de Datos (ORACLE)

2011

Diccionario de Datos Diccionario de Datos Dba_users

Descripción Muestra información de los usuarios de la Base de datos

1.1 Usuraios Para conectase a una Base de Datos, cada usuario debe tener un nombre válido que ha sido previamente definido en la Base de Datos. Toda la información del usuario pasa a estar en el Diccionario de Datos. Para cada cuenta de usuario o esquema que se crea se pueden especificar los siguientes atributos: Nombre del usuario Método de Autenticación Tablespace por defecto (Default Tablespace) Tablespace temporal por defecto (Temporary Tablespace) Otros tablespaces que pueda utilizar y las cuotas en cada uno de ellos (Quotas) Fichero de parametrización del usuario (User Profile).

3

Curso de Administración de Base de Datos (ORACLE)

2011

Oracle crea automáticamente varios usuarios predefinidos. Hay tres tipos de usuarios predefinidos que son: 

Usuarios de Administración. Existen dos usuarios administradores por defecto que son los usuarios SYS y SYSTEM, que son los propietarios del Diccionario de Datos y de las tablas propias que configuran la propia Base de Datos. Otro usuario de este tipo es el usuario SYSMAN que es usado para las tareas de administración de Enterprise Manager. Y por último está el usuario DBSNMP utilizado para el agente de Enterprise Manager. Ninguno de estos usuarios puede ser borrado.



Usuarios de Ejemplo. Por defecto se pueden crear en la Base de datos unas cuentas de usuario de ejemplo con sus objetos correspondientes, tales como los usuarios HR, SH, SCOTT y OE. Estos usuarios antes de poder ser utilizados, deben ser desbloqueados y cambiada su password.



Usuarios Internos Estos usuarios son creados para diversos componentes internos de la Base de Datos y pueden tener sus propios esquemas y objetos. Estos usuarios internos tampoco deben ser borrados.

Creación y manejo de usuarios:  Creación de un usuario: CREATE USER nombre_usuario IDENTIFIED BY password [DEFAULT TABLESPACE nombre_tablespace] [TEMPORARY TABLESPACE nombre_tablespace] [QUOTA [número, K o M o UNLIMITED] ON nombre_tablespace1] [, QUOTA [número, K o M o UNLIMITED] ON nombre_tablespace2] [PROFILE nombre_perfil] [PASSWORD EXPIRE] [ACCOUNT LOCK o ACCOUNT UNLOCK] Donde los parámetros corresponden a lo siguiente: 

Username: Nombre del usuario que se está creando.

4

Curso de Administración de Base de Datos (ORACLE) 

2011

Password: Clave de inicio que se le otorga al usuario. Luego él podrá reemplazarla por la que desee. Default Tablespace: Es el tablespace por defecto al que se conectará el usuario cada vez que ingrese a la base de datos y donde guardará todos sus objetos. Si no se especifica, entonces se conectará al tablespace system. Temporary Tablespace: Es el tablespace temporal que utilizará el usuario en todas sus conexiones. Quota: Cuota de disco (en Kilobytes o Megabytes) que le es otorgada al usuario en cada uno de los tablespaces a los que puede acceder. Si se indica "UNLIMITED" entonces el usuario podrá utilizar todo el espacio que quiera dentro del tablespace designado. Profile: Es el nombre del perfil que ha sido asignado a este usuario. Password expire: Establece que el password del usuario expirará en forma automática y, por lo tanto, deberá cambiarlo al iniciar su próxima sesión. Account lock (o unlock): Permite establecer si la cuenta debe permanecer bloqueada o no inmediatamente después de crearla.



 

  

Ejemplo: CREATE USER usuario IDENTIFIED BY "password" DEFAULT TABLESPACE userdata TEMPORARY TABLESPACE usertemp QUOTA 0 ON SYSTEM QUOTA 0 ON SYSAUX QUOTA UNLIMITED ON userdata QUOTA 10M ON indx_sml PROFILE appl_profile;

 Modificación de usuarios:

ALTER USER nombre_usuario IDENTIFIED BY password [DEFAULT TABLESPACE nombre_tablespace] [TEMPORARY TABLESPACE nombre_tablespace] [QUOTA [número, K o M o UNLIMITED] ON nombre_tablespace1] [, QUOTA [número, K o M o UNLIMITED] ON nombre_tablespace2] [PROFILE nombre_perfil] [PASSWORD EXPIRE] [ACCOUNT LOCK o ACCOUNT UNLOCK]

5

Curso de Administración de Base de Datos (ORACLE)

2011

Es tan poderosa que da la sensación de estar creando al usuario de nuevo, pero no es así porque todos los objetos que tuviera creados bajo su esquema siguen permaneciendo allí.  Eliminación de usuarios DROP USER nombre_usuario [CASCADE] Y la opción Cascade se hace obligatoria cuando el usuario posee objetos en su esquema (tablas, vistas, etc.) y debemos borrarlos junto con él. Sin usar esta opción no podríamos eliminar un usuario con objetos. Unido con el concepto de Esquema y Usuario, se encuentran dos conceptos importantes que son, los perfiles y los roles. Diccionario de Datos Diccionario de Datos Dba_users Dba_ts_quotas

Descripción Muestra información de los usuarios de la Base de datos Muestra las cuotas asignadas a los usuarios sobre los distintos tablespaces

1.2 Perfiles Los perfiles se crean para limitar las posibilidades de los usuarios del sistema de base de datos. EL perfil limita recursos del kernel como el uso de la CPU, duración de la sesión y límites de las claves de acceso, no limita sobre objetos de la Base de datos, eso lo hacen los roles. Por ejemplo, se pueden establecer 3 tipos de usuarios:  

Administradores: Que podrían tener acceso a recursos ilimitados dentro del sistema. Desarrolladores: Que podrían disponer de un número ilimitado de sesiones pero restringida la utilización de la CPU. Otros.



En síntesis, los perfiles se utilizan para suavizar las tareas de administración de la seguridad, manteniendo siempre bajo control los accesos a los recursos de todos los usuarios, por muchos que éstos puedan llegar ser.

Creación y manejo de perfiles: 

Creación de un perfil. CREATE PROFILE nombre_perfil LIMIT [recurso valor] [recurso valor] [recurso valor] ……….

Donde los parámetros corresponden a lo siguiente: 

Nombre_perfil: Nombre del perfil a crear.

6

Curso de Administración de Base de Datos (ORACLE)  

2011

Recurso que se limita en el perfil Valor del límite

Ejemplo: CREATE PROFILE appl_profile LIMIT sessions_per_user 2 -cpu_per_session 10000 -- hunderth of seconds cpu_per_call 1 -- hunderth of seconds connect_time unlimited -- minutes idle_time 30 -- minutes logical_reads_per_session default -- db blocks logical_reads_per_call default -- db blocks -- composite_limit default -private_sga 20M -failed_login_attempts 3 -password_life_time 30 -- days password_reuse_time 12 -password_reuse_max unlimited -password_lock_time default -- days password_grace_time 2 -- days password_verify_function null; 

Modificación de un perfil. ALTER PROFILE nombre_perfil LIMIT recurso valor

Ejemplo: ALTER PROFILE appl_profile LIMIT FAILED_LOGIN_ATTEMPTS 3;



Eliminación de un perfil. DROP PROFILE nombre_perfil LIMIT recurso valor CASCADE

Ejemplo: DROP PROFILE appl_profile CASCADE;



Diccionario de Datos

Diccionario de Datos Dba_profiles

Descripción Muestra información de los recursos que se pueden limitar en un profile y de sus posibles valores

Ver Anexo II, para ver todos los límites posibles para un profile.

7

Curso de Administración de Base de Datos (ORACLE)

2011

1.3 Roles Los Roles constituyen la forma más segura y rápida de asignar recursos a los grupos de usuarios. Es una tarea muy tediosa para cualquier DBA tener que asignar o revocar permisos a todos los usuarios, de a uno por uno, y es por eso que agrupando un conjunto de usuarios bajo las mismas características es posible manejar sus permisos como un grupo. Para crear roles se utiliza la siguiente sintaxis: CREATE ROLE nombre_rol NOT IDENTIFIED o IDENTIFIED BY password Y para asignar el rol a un usuario o para comenzar a asignar / quitar ciertos privilegios al rol se debe utilizar los comandos siguientes: 

Grant: Otorga privilegios a un rol (o a un usuario cualquiera) o también asigna un rol a un usuario. Revoke: Elimina privilegios otorgados previamente a un rol (o a un usuario).



Los roles o privilegios se pueden asignar varios al mismo usuario o grupo en una sola línea de comandos, siguiendo la sintaxis siguiente: GRANT nombre_rol o nombre_privilegio [, nombre_rol o nombre_privilegio] TO nombre_usuario o nombre_rol o PUBLIC [, nombre_usuario o nombre_rol] [WITH ADMIN OPTION] Si los privilegios se otorgan con la cláusula "with admin option" esto quiere decir que los usuarios que reciben los privilegios pueden a su vez otorgarlos a otros. Los roles pueden dar permisos sobre objetos (object privileges), de los que los mas importantes son:       

SELECT UPDATE INSERT DELETE ALTER EXECUTE REFERENCES

o pueden dar permisos sobre el sistema (system privileges), de los que podemos destacar:    

CREATE TABLE ALTER TABLE CREATE VIEW ALTER VIEW

8

Curso de Administración de Base de Datos (ORACLE)   

2011

CREATE USER CREATE TABLESPACE ETC…

O pueden contener a su vez a otros roles. Los privilegios otorgados a través de roles no funcionan en procedimientos, funciones y paquetes. En estos casos los privilegios deben ser otorgados directamente a los usuarios. Existen una serie de roles predefinidos, entre los que los mas comunes son los siguientes: 

CONNECT Este role es necesario para todos aquellos usuarios que tengan que conectarse a la base de datos. Si el usuario se crea desde Enterprise Manager, este role se de dará por defecto. RESOURCE Permite a los usuarios, crear, modificar y borrar cierto tipo de objetos de la base de datos, asociados con el usuario. Suele darse a los usuarios desarrolladores. Entre otros este role tiene los privilegios CREATE TABLE, CREATE VIEW, CREATE TYPE, CREATE TRIGGER…. DBA Permite al usuario realizar las tareas administrativas esenciales. Tiene todos los privilegios de sistema, pero no puede realizar Startup ni Shutdown.Por defecto este role se le da a los usuarios SYS, SYSTEM. SYSDBA Este role tiene privilegios de administración al mas alto nivel, el usuario actua como si fuera el usuario SYS a todos los efectos. SYSOPER Similar al anterior. EXP_FULL_DATABASE Permite exportaciones completas de la base de datos. IMP_FULL_DATABASE Permite importaciones completas de la base de Datos.







  

Ver Anexo III, para tener todos los roles que se crean por defecto en la creación de una base de datos.

Un role puede ser revocado de un usuario, para que deje de tener esos privilegios, la sintaxis es: REVOKE nombre_rol o nombre_privilegio [, nombre_rol o nombre_privilegio] FROM usuario, role



Diccionario de Datos

9

Curso de Administración de Base de Datos (ORACLE) Diccionario de Datos Dba_roles Dba_role_privs Role_sys_privs Role_tab_privs Role_role_privs System_privilege_map Table_privilege_map

Descripción Muestra el nombre de los roles existentes y el tipo de autenticación. Muestra los privilegios otorgados a cada role Muestra los privilegios de sistema asociados con cada role Muestra los privilegios sobre tablas asignados a cada role Muestra los roles asignados a otros roles Muestra un listado de todos los privilegios del sistema Muestra un listado de todos los privilegios sobre tablas

Ejemplo:

Obtener los privilegios del sistema: Select * from system_privilege_map

10

2011