Documentos de Académico
Documentos de Profesional
Documentos de Cultura
P á g i n a 1 | 24
Israel Lucas Torrijos Bases de datos
Al finalizar, el instalador de Oracle nos dará información importante que debemos apuntar y que podemos ver en la
siguiente captura:
P á g i n a 2 | 24
Israel Lucas Torrijos Bases de datos
Si accedemos a cualquiera de las rutas el navegador nos advierte de un riesgo potencial de seguridad.
P á g i n a 3 | 24
Israel Lucas Torrijos Bases de datos
Si no especificamos un nombre de contenedor, en el campo Container Name, estaremos accediendo a la base de datos
contenedora multiinquilino (Container DataBase o CDB). Un CDB incluye cero, una o muchas bases de datos
conectables (PDB) creadas por el cliente y contenedores de aplicaciones.
En la captura podemos observar que dice: Single Instance (xe) CBD (1 PDB(s)). Lo que significa que en el navegador
estamos dentro de la instancia CBD de Oracle XE, denominada xe, y que contiene 1 PDB (Pluggable DataBase o Base
de Datos Conectable).
P á g i n a 4 | 24
Israel Lucas Torrijos Bases de datos
Un PDB es un contenedor compuesto por una colección de esquemas y objetos que actúan como una base de datos
"normal" para aplicaciones e IDE.
Tipos de PDB
• PDB estándar: Este tipo de PDB se crea tras ejecutarse sin especificar el PDB como inicial
• Application Root
• Seed PDB
• ProxyPDB
P á g i n a 5 | 24
Israel Lucas Torrijos Bases de datos
Si está ejecutando Oracle XE (también conocido como Oracle Express), ya tiene una PDB creada, llamada XEPDB1.
Ahora volveremos a loguearnos en localhost:1521 pero esta vez con insertando los datos del PDB (XEPDB1).
En la ventana que se abrirá observaremos como nos indica que estamos dentro del PDB.
P á g i n a 6 | 24
Israel Lucas Torrijos Bases de datos
P á g i n a 7 | 24
Israel Lucas Torrijos Bases de datos
SYS
La creación de usuarios desde una conexión a la CDB, implica que las restricciones a los esquemas y demás datos en
la CDB son mayores. Por ejemplo, podemos obtener errores al crear un nombre de usuario de longitud amplia o si
empleamos minúsculas al definirlo.
Más adelante, explicaré como crear un usuario desde una CDB y PDB.
P á g i n a 8 | 24
Israel Lucas Torrijos Bases de datos
P á g i n a 9 | 24
Israel Lucas Torrijos Bases de datos
SYS
Ahora tendremos dos conexiones creadas y probaremos como crear un usuario desde una conexión u otra. Así será
más fácil demostrar por qué debemos usar una PDB.
P á g i n a 10 | 24
Israel Lucas Torrijos Bases de datos
4. Creación de un usuario
4.1. Conexión a la CDB
Tenemos dos maneras de crear el usuario: interfaz o comandos. Si usamos la interfaz, abrimos la conexión y en la
entrada Otros Usuarios:
P á g i n a 11 | 24
Israel Lucas Torrijos Bases de datos
En la ventana de Crear Usuario, rellenamos los datos requeridos de la pestaña Usuario (usuario, contraseña y las
tablespaces):
En la pestaña SQL pondremos los permisos principales para no tener que hacerlo manualmente en las pestañas
Roles Otorgados y Privilegios del Sistema. Aplicamos cambios.
P á g i n a 12 | 24
Israel Lucas Torrijos Bases de datos
En la pantalla nos saldrá un error ORA-65096: El nombre de usuario o rol común no es válido. Esto se debe a una
de tantas restricciones que impone la CDB, como el uso de minúsculas o que es necesario especificar el prefijo c##
en el nombre del usuario.
P á g i n a 13 | 24
Israel Lucas Torrijos Bases de datos
Otra manera de sortear las limitaciones que impone la CDB es el uso del comando:
ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
Su uso se ha extendido por la red ya que es algo sencillo de usar y nos permite sortear las limitaciones que nos
impone la CDB. Sin embargo, su uso es contraproducente ya que realizamos una gestión contraria a las
recomendaciones de Oracle y podríamos tener problemas en el desarrollo de la base de datos, ya que Oracle
implementará la aplicación bajo una línea de desarrollo que podría entrar en conflicto con esa práctica.
Vamos a ver como podríamos usar esa sentencia para crear el mismo usuario del paso anterior sin el prefijo y
desde una ventana de script. Si ejecutamos el siguiente script:
P á g i n a 14 | 24
Israel Lucas Torrijos Bases de datos
La salida del Script mostrará una gran cantidad de errores de ejecución pero si vamos al primero observaremos
que es el mismo problema generado desde la interfaz y que hace referencia al nombrado del usuario.
Ahora podríamos añadir el prefijo C## al nombre del usuario y ejecutarlo, o usar la sentencia anteriormente
descrita para sortear dicha limitación impuesta por el CDB. Por lo que, ahora añadiremos la sentencia al script en
la primera fila para volver a ejecutar todo el código.
Podemos ver en la salida del script que todo se ha creado correctamente y lo verificamos en el árbol de la conexión.
Esta no es la manera adecuada de gestionar una base de datos y debemos hacerlo desde la PDB.
P á g i n a 15 | 24
Israel Lucas Torrijos Bases de datos
P á g i n a 16 | 24
Israel Lucas Torrijos Bases de datos
P á g i n a 17 | 24
Israel Lucas Torrijos Bases de datos
A continuación, puede ver como se modifica la sesión de la conexión a la CDB (admin_CDB) a la PDB (XEPDB1):
P á g i n a 18 | 24
Israel Lucas Torrijos Bases de datos
Esto nos permitiría crear usuarios en la PDB desde la conexión a la CDB, y no obtendríamos ninguna clase de error ni
tendríamos que usar sentencias especiales.
Las modificaciones de sesión únicamente duran el tiempo que esté abierta la conexión. Si nos desconectamos de la
conexión admin_CDB y nos volvemos a conectar, si intentamos crear el usuario anterior obtendríamos una serie de
errores. El primero que muestra se refiere a que no puede borrar el usuario pdb_user por que no existe, ya que el
usuario fue creado en la PDB desde la conexión CDB, tras alterar la sesión.
P á g i n a 19 | 24
Israel Lucas Torrijos Bases de datos
P á g i n a 20 | 24
Israel Lucas Torrijos Bases de datos
P á g i n a 21 | 24
Israel Lucas Torrijos Bases de datos
P á g i n a 22 | 24
Israel Lucas Torrijos Bases de datos
P á g i n a 23 | 24
Israel Lucas Torrijos Bases de datos
Referencias:
• https://www.databasestar.com/oracle-pdb/
• https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/CDBs-and-PDBs.html#GUID-
49C0C90D-5A72-4131-8C3D-B07341C75CB2
• https://es.stackoverflow.com/questions/544583/ora-65096-nombre-de-usuario-o-rol-com%c3%ban-no-
v%c3%a1lido
• https://es.stackoverflow.com/questions/291709/problemas-para-crear-usuario-en-oracle-error-ora-65096
P á g i n a 24 | 24