Este artículo nos muestra la forma de administrar los usuarios en Oracle. (Versión 10G)

Primero comencemos por saber que necesitamos para poder crear una cuenta de Oracle

Un nombre de usuario que no pase de 30 caracteres, que no tenga caracteres especiales y que inicie con una letra.
Un metodo de autentificacion, el más comun 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];

Con esto ya tienes la mayoria de conocimientos para administrar usuarios en Oracle.

You are not authorised to post comments.

Comments powered by CComment

DBASupport - Foro

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 5 months ago.
  • 5 months ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
  • Topic started by carlos25
  • in General
  • 9 months ago.
  • 9 months ago.
  • 2 replies
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
URGE AYUDA
  • Topic started by
  • in General
  • 13 years ago.
  • 13 years ago.
  • 30 replies
HOLA ESPERO ME PUEDAN AYUDAR. TEN GO UNA TABLA CON una estructura similar a la siguiente: id_mov cargo subtotal total...

Duada de Memoria de SQL Server 2005
  • Topic started by Erzengel
  • in General
  • 9 years ago.
  • 8 years ago.
  • 30 replies
Buen Día Recurro nuevamente a su sabiduría. Quiero saber el porque tiene un tope SQL Serever de 2GB en Windows server 2003 de 32 bit y si alguien...

SqlDateTime overflow
  • Topic started by
  • in General
  • 12 years ago.
  • 12 years ago.
  • 11 replies
Alguno de ustedes ha tenido este problema: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.' Les...

problemas para iniciar el agente sql
  • Topic started by acgch
  • in General
  • 12 years ago.
  • 12 years ago.
  • 11 replies
Recientemente para asegurar el sql server 2005, cree una cuenta sql con derechos de sysadmin y borre el grupo BUILTIN\Administradores para evitar...

Problemas para levantar mirror
  • Topic started by acgch
  • in General
  • 11 years ago.
  • 11 years ago.
  • 16 replies
Hola amigos, tengan un buen día, les comento que estoy configurando mirror siguiendo los pasos a través del wizard del managment studio y también...
Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 5 months ago.
  • 5 months ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
  • Topic started by carlos25
  • in General
  • 9 months ago.
  • 9 months ago.
  • 2 replies
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
Deshabilitar todos los jobs
  • Topic started by agamez
  • in Jobs
  • one year ago.
  • one year ago.
  • 1 reply
Buenos días, alguien sabe como puedo deshabilitar rapidamente todos los jobs de SQL Server, gracias.

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 5 months ago.
  • 5 months ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
  • Topic started by carlos25
  • in General
  • 9 months ago.
  • 9 months ago.
  • 2 replies
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Necesitas Soporte

Proveemos soporte de base de datos SQL Server, Sybase, Oracle y MySQL. Nuestro servicio, le permite contar con un experto las 24 horas al día los 365 días del año.

Nuestros servicios están diseñados para que solo pague por el soporte que necesita. El pago se realiza de manera mensual basado en el nivel de cobertura que requiera. En promedio este costo va de un 30% a un 60% menos, de lo que le pagaría a un DBA en sitio.

Contactanos