• Crear usuarios de forma correcta en Oracle Database

    Este hack sirve tanto para la versión completa de Oracle Database, como para la versión XE.

    MEDIANTE SCRIPTS SQL

    En el menú de SQLDeveloper, hacemos click en «Archivo» >> «Nuevo» >> seleccionamos «Archivos de bases de datos» y le damos al botón «Aceptar».

    Se nos abrirá una ventana donde deberemos elegir el nombre y la ubicación del archivo .sql. Lo hacemos y le damos a aceptar.

    Se nos abrirá una nueva pestaña de scripts de SQLDeveloper con nada escrito dentro. Nos aseguramos de que, arriba a la derecha elijamos la conexión sys (con permisos SYSDBA) para ejecutar los siguientes comandos, dependiendo que forma de crear usuarios queremos:

    FORMA BÁSICA

    Esta forma nos permitirá crear un usuario básico con el que podremos conectarnos mediante SQLDeveloper, con su propia conexión, crear tablas y llenarlas de contenido.  De esta forma, este usuario básico utilizará el tablespace users, en el que tendrá cuota ilimitada y no tendrá más permisos que los mínimos necesarios para operar en su sesión de SQLDeveloper.

    Dentro del script pegamos y ejecutamos el siguiente texto:

    alter session set "_oracle_script"=true;
    
    create user NombreDeUsuario
      identified by "12345678";
    
    grant create session to NombreDeUsuario;
    grant create table to NombreDeUsuario;
    alter user NombreDeUsuario quota unlimited on users;
    

    Cambiamos, lógicamente, 12345678 por la contraseña que queramos darle al nuevo usuario y cambiamos todas las coincidencias de NombreDeUsuario por el nombre de usuario que queramos darle al usuario que queramos crear. Damos a acabar y ya tendremos el usuario creado.

    FORMA COMPLEJA/COMPLETA

    Esta forma nos permitirá crear un usuario básico con el que podremos conectarnos mediante SQLDeveloper, con su propia conexión, crear tablas y llenarlas de contenido. Podremos pensar que es igual que la forma básica, pero no. Mediante esta forma compleja, el nuevo usuario tendrá su propio tablespace, con su propio datafile

      De esta forma, este usuario básico utilizará el tablespace users, en el que tendrá cuota ilimitada y no tendrá más permisos que los mínimos necesarios para operar en su sesión de SQLDeveloper.

    Dentro del script pegamos y ejecutamos el siguiente texto:

    alter session set "_oracle_script"=true;
    
    create tablespace ts_NombreDeUsuario
      datafile 'df_NombreDeUsuario.dbf'
      size 1m
      autoextend on maxsize unlimited;
    
    create user NombreDeUsuario
      identified by "12345678"
      default tablespace ts_NombreDeUsuario
      quota unlimited on ts_NombreDeUsuario;
    
    create profile usuarios limit
      failed_login_attempts 3;
    
    alter user NombreDeUsuario profile usuarios;
    
    grant create session to NombreDeUsuario;
    grant create table to NombreDeUsuario;
    alter user NombreDeUsuario quota unlimited on users;
    

    Cambiamos, lógicamente, 12345678 por la contraseña que queramos darle al nuevo usuario y cambiamos todas las coincidencias de NombreDeUsuario por el nombre de usuario que queramos darle al usuario que queramos crear. Damos a acabar y ya tendremos el usuario creado.

    Ahora ya podemos crear una nueva conexión desde SQL Developer donde podemos hacer todas las pruebas que queramos con ese nuevo usuario sin necesidad de tocar otros tablespaces o usuarios.

    MEDIANTE SQL DEVELOPER (DE FORMA GRÁFICA)

    No aconsejo crear usuarios mediante el entorno gráfico de SQLDeveloper, porque mediante la pestaña SQL que aparece al crear usuarios de forma gráfica, no podremos ejecutar la primera línea de los comandos de arriba, que es la que altera la sesión para permitirnos utilizar cualquier nombre de usuario. De forma que estaríamos obligados a crear el usuario como common user siguiendo otras directivas de nombres.

    Excepto, claro, que hayamos instalado OracleXE y no estemos utilizando el SID XE, sino el servicio XEPDB1, que es el servicio por defecto cuando se instala Oracle Database Express Edition Si ese es el caso, entonces si que podremos crear usuarios de forma gráfica en ese servicio, sin necesidad de alterar la sesión. Lo más probable es que, al acabar la instalación de OracleXE en Debian, mediante mi script, nos haya salido este mensaje:

    Connect to Oracle Database using one of the connect strings:
      Pluggable database: debian/XEPDB1
      Multitenant container database: debian

    Lo que significaría que tendríamos el servicio XEPDB1 disponible.

    En ese caso, para crear el usuario, seguiríamos los siguientes pasos:

    Nos conectamos con sys y, en el panel de la izquierda, bajamos hasta el final, donde encontraremos el apartado «otros usuarios». Hacemos click derecho en ese apartado y le damos a «Crear Usuario».

    Se nos abrirá una ventana nueva con varias pestañas. Vamos a la pestaña SQL, borramos todo el contenido de su campo de texto y pegamos el siguiente código:

    FORMA BÁSICA

    Esta forma nos permitirá crear un usuario básico con el que podremos conectarnos mediante SQLDeveloper, con su propia conexión, crear tablas y llenarlas de contenido.  De esta forma, este usuario básico utilizará el tablespace users, en el que tendrá cuota ilimitada y no tendrá más permisos que los mínimos necesarios para operar en su sesión de SQLDeveloper.

    Dentro del script pegamos y ejecutamos el siguiente texto:

    create user NombreDeUsuario
      identified by "12345678";
    
    grant create session to NombreDeUsuario;
    grant create table to NombreDeUsuario;
    alter user NombreDeUsuario quota unlimited on users;
    

    Cambiamos, lógicamente, 12345678 por la contraseña que queramos darle al nuevo usuario y cambiamos todas las coincidencias de NombreDeUsuario por el nombre de usuario que queramos darle al usuario que queramos crear. Damos a acabar y ya tendremos el usuario creado.

    FORMA COMPLEJA/COMPLETA

    Esta forma nos permitirá crear un usuario básico con el que podremos conectarnos mediante SQLDeveloper, con su propia conexión, crear tablas y llenarlas de contenido. Podremos pensar que es igual que la forma básica, pero no. Mediante esta forma compleja, el nuevo usuario tendrá su propio tablespace, con su propio datafile

      De esta forma, este usuario básico utilizará el tablespace users, en el que tendrá cuota ilimitada y no tendrá más permisos que los mínimos necesarios para operar en su sesión de SQLDeveloper.

    Dentro del script pegamos y ejecutamos el siguiente texto:

    create tablespace ts_NombreDeUsuario
      datafile 'df_NombreDeUsuario.dbf'
      size 1m
      autoextend on maxsize unlimited;
    
    create user NombreDeUsuario
      identified by "12345678"
      default tablespace ts_NombreDeUsuario
      quota unlimited on ts_NombreDeUsuario;
    
    create profile usuarios limit
      failed_login_attempts 3;
    
    alter user NombreDeUsuario profile usuarios;
    
    grant create session to NombreDeUsuario;
    grant create table to NombreDeUsuario;
    alter user NombreDeUsuario quota unlimited on users;
    

    Cambiamos, lógicamente, 12345678 por la contraseña que queramos darle al nuevo usuario y cambiamos todas las coincidencias de NombreDeUsuario por el nombre de usuario que queramos darle al usuario que queramos crear. Damos a acabar y ya tendremos el usuario creado.

    Ahora ya podemos crear una nueva conexión desde SQL Developer donde podemos hacer todas las pruebas que queramos con ese nuevo usuario sin necesidad de tocar otros tablespaces o usuarios.