Post on 29-Jun-2015
MANEJO DE ADMINISTRADOR EN ORACLE
Un nombre de usuario que no pase de 30 caracteres, que no tenga
caracteres especiales y que inicie con una letra.
Un método de autentificación, el más común es un password pero Oracle
10G soporta otros métodos como biometric, certificado y autentificacion por
medio de token.
Un tablespace de default, el cuál es donde el usuario va a poder crear sus
objetos por default. Ojo, no porque tenga un tablespace de default va a
significar que puede crear objetos, o una quota de espacio. Estos permisos
se asignan de forma separada.
Un tablespace temporal, donde el usuario pueda crear sus objetos
temporales y hacer ordenamientos.
Un porfile de usuario, que son las restricciones que puede tener su cuenta.
CREATE USER marco IDENTIFIED BY marcopwd
DEFAULT TABLESPACE usuarios;
Si no se escibe el tablespace de defaul, el usuario tomaria el que esta
definido en la base de datos. Ahora para cambiar el tablespace de default se
puede ejecutar el siguiente comando.
ALTER DATABASE DEFAULT TABLESPACE users;
Si quisieramos cambiar el tablespace de default de un usuario se hace de la
siguiente manera.
ALTER USER marco DEFAULT TABLESPACE users;
Asi como el tablespace de default, también se les asigna a los usuario un
tablespace temporal donde se alamacenan operaciones de ordenamiento
como ORDER BY,GROUP BY,SELECT DISTINCT,MERGE JOIN, o CREATE INDEX.
Y también es utilizado cuando se crean tablas temporales.
CREATE USER marco IDENTIFIED BY marcopwd
DEFAULT TABLESPACE usuarios
TEMPORARY TABLESPACE temp;
Para modificar un usuario y asignar un tablespace temporal
ALTER USER marco TEMPORARY TABLESPACE temp;
Para cambiar el tablespace temporal
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
Adicionalmente al tablespace de default y el temporal, cada usuario es
asignado a un profile, que tiene dos propositos principalmente, limita el uso
de recursos y refuerza la reglas de seguridad.
CREATE USER marco IDENTIFIED BY marcopwd
DEFAULT TABLESPACE usuarios
TEMPORARY TABLESPACE temp
PROFILE resource_profile;
ALTER USER marco
PROFILE resource_profile;
Eliminando un usuario de la Base de Datos
Para eliminar un usuario de la base de datos se hace uso de la clausula
DROP USER y opcionalmente se puede utilizar CASCADE, para decirle que
también elimine todos los objetos del usuario.
DROP USER marco CASCADE;
Privilegios
Existen en Oracle dos tipos de privilegios de usuario:
System: Que permiten al usuario hacer ciertas tareas sobre la base de datos,
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 (Data definition Language), como CREATE, ALTER y DROP o del tipo DML
(Data Manipulation Language). Oracle 10G tiene m{as de 170 privilegios de
sistema los cuales pueden ser vistos mediante la vista
SYSTEM_PRIVILEGE_MAP
Entre todos los privilegios de sistema que existen, hay dos que son los más
fuertes: SYSDBA y SYSOPER. Estos practicamente son dados a los
administradores de base de datos.
Para otorgar estos permisos se hace de la siguiente manera
GRANT create user, alter user, drop user TO marco_dba;
Object: Este tipo de permiso le permite al usuario hacer cierta accion en un
objeto de la base de datos, como puede ser una tabla, vista, funcion etc. Si a
un usuario no se le dan estos permisos solo podrias acceder a sus propios
objetos. Y este tipos de permisos los da el dueño del objeto, el administrador
o alguien que haya recibido este permiso explicitamente.
Para otorgar estos permisos de hace de la siguiente manera
GRANT SELECT,INSERT,UPDATE,DELETE ON marco TO tbl_ventas;
Si quisieramos que tambien el usuario marco pudiera dar permisos sobre la
tabla venta anexariamos WITH GRANT OPTION
GRANT SELECT,INSERT,UPDATE,DELETE ON marco TO tbl_ventas WITH
GRANT OPTION;
Asignando cuotas a usuarios
Por default ningun usuario tiene una cuota en los tablespaces y se tienen
tres opciones para poder proveer a un usuario de una quota:
Sin limite, que permite al usuario usar todo el espacio disponible de un
tablespace.
Por medio de un valor, que puede ser en kilobytes o megabytes que el
usuario puede usar. Este valor puede ser mas grande que el table space o
m{as chico
Por medio del privilegio UNLIMITED TABLESPACE, el cuál va a pesar más que
cualquier cuota dada en un tablespace por lo que tienen disponibilidad de
todo el espacio incluyendo en SYSTEM y SYSAUX.
Como recomendación, no se deben de dar cuotas a los usuarios en los
tablespaces de SYSTEM y SYSAUX, pues tipicamente solo los usuarios de SYS
y SYSTEM pueden crear objetos en estos. También no dar cuotas en su
tablespace temporal o del tipo undo.
Roles
Por último solo nos resta hablar de los Roles, estos son simplemente un
conjunto de privilegios que se pueden otorgar a un usuario o a otro rol. Por
default cuando creamos un usuario pero desde el Enterprise Manager se le
asigna el rol de connect, lo que permite al usuario conectarse a la base de
datos y crear sus propios objetos en su propio esquema.
Para crear un rol y asignarlo a un usuario se hace de la siguiente manera
CREATE ROLE appl_dba;
SET ROLE appl_dba IDENTIFIED BY app_pwd;
Para asignar el role a un usuario:
GRANT appl_dba TO marco
Existen algunos roles predefinidos.
CONNECT CREATE SESSION, CREATE TABLE,
CREATE
VIEW, CREATE SYNONYM, CREATE
SEQUENCE,
CREATE DATABASE LINK, CREATE
CLUSTER,
ALTER SESSION
RESOURCE CREATE TABLE, CREATE
PROCEDURE,
CREATE SEQUENCE, CREATE
TRIGGER,
CREATE TYPE, CREATE CLUSTER,
CREATE
INDEXTYPE, CREATE OPERATOR
SCHEDULER_
ADMIN
CREATE ANY JOB, CREATE JOB,
EXECUTE
ANY CLASS, EXECUTE ANY
PROGRAM,
MANAGE SCHEDULER
DBA Tiene la mayoría de los privilegios,
no asignar a los que no son
administradores.
SELECT_CATALOG_ROLE No tiene privilegios de sistema,
pero tiene cerca de 1600 privilegios
de objeto.
Modificación de Usuarios
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];