Saltar al contenido

Crear un nuevo usuario en Oracle

Vamos a crear un nuevo usuario en Oracle.

Podemos crear directamente el usuario, pero es mejor empezar creando el tablespace para datos y para índices.
Aquí es donde se almacena los objetos que va a crear el usuario.

CREATE TABLESPACE "TABLAS4" LOGGING DATAFILE 
'/export/home/oracle/oradata/datafiles/tablas.dbf'
SIZE 2000M REUSE  EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO ;
 
CREATE TABLESPACE "INDICES4" LOGGING DATAFILE 
'/export/home/oracle/oradata/datafiles/indices.dbf'
SIZE 1500M REUSE  EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

Ahora creamos el usuario:

CREATE TABLESPACE "NUEVOUSER" LOGGING DATAFILE
'/export/home/oracle/oradata/datafiles/users01.dbf'
SIZE 50M REUSE  EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO ;
ALTER DATABASE DEFAULT TABLESPACE "USERS";

Ahora creamos el usuario y le decimos el tablespace que tiene por defecto y el que cogerá sino se lo indicamos:

CREATE USER "USU01" PROFILE "DEFAULT" IDENTIFIED BY "USU01PWD"
DEFAULT TABLESPACE "TABLAS4" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;

Lo mismo ocurre cuando creamos tablas e índices, tenemos que indicar el tablespace correspondiente para las tablas y los índices que hemos creado antes.

Y ahora le damos permisos:

GRANT CONNECT, RESOURCE TO USU01;

Podemos darle permisos como administrador:

GRANT DBA TO USU01;

O podemos darles privilegios sobre objetos que nosotros decidamos:

GRANT ALTER ANY INDEX TO USU01;
GRANT CREATE ANY INDEX TO USU01;
GRANT DROP ANY INDEX TO USU01;
GRANT DROP ANY VIEW TO USU01;
GRANT INSERT ANY TABLE TO USU01;
GRANT SELECT ANY TABLE TO USU01;
GRANT UNLIMITED TABLESPACE TO USU01;

Y así sucesivamente. Podemos asignar permisos en ejecución de procesos, en directorios para el tratamiento de ficheros desde Oracle o paquetes Java, por ejemplo:

GRANT EXECUTE any PROCEDURE TO USU01;
GRANT READ, WRITE ON directory dir_firmas TO USU01;
 
EXEC dbms_java.grant_permission('USU01','java.io.FilePermission','/pruebas/-','read');