Crear esquemas(USUARIOS) de bases de datos en Oracle 18c XE

En artículos anteriores se hizo referencia a esquemas como SYSTEM, SYS, PDBADMIN y HR, estos esquemas están asociados a usuarios del mismo nombre en cualquier versión o edición de Oracle, sin embargo, la introducción de la característica  Multitenant(Oracle 12c y superiores),  ha establecido un nuevo tipo de usuarios llamados usuarios comunes, es decir, usuarios que se crean en una base de datos contenedora o CDB y se replican automáticamente a las PDBs.


Este nuevo tipo de cuenta requiere emplear como sufijos C## o c##, es decir, este sería su distintivo, por  ejemplo, conectado como SYS o SYSTEM en el CDB submitir:


create user C##PROGRAMAS
identified by contraseña
default tablespace USERS;

Otorgamos privilegios al usuario creado con el comando grant:

grant connect, resource, create sessions to C##PROGRAMAS;


Ahora listamos los usuarios que empiecen con C:


select username from all_users
where username like'C%'; 

disc;

Aquellos usuarios cuyos nombres no empiecen con C## son usuarios locales. 

Nos conectamos como C##PROGRAMAS en el contenedor o CDB


conn C##PROGRAMAS/contraseña@localhost:1521/XE


Creamos una tabla

create table programa(

  programa_id number(6) not null,
  programa_nombre varchar2(120) not null,
  constraint programa_pk primary key(programa_id)
);


Seleccionamos las tablas del usuario actual en el contenedor XE:


select table_name

from user_tables;

Y se visualizará el nombre de la tabla creada.

Cambiamos a la PDB XEPDB1, pero seguimos conectados como C##PROGRAMAS:

alter session set container=XEPDB1;


select table_name

from user_tables;

Al ejecutar esta sentencia de selección comprobamos que no hay tablas asociadas en la cuenta C##PROGRAMAS de XEPDB1.



Para volver al contenedor ejecutamos


alter session set container=CDB$ROOT;



Estas instrucciones se pueden ejecutar empleando SQL*PLUS o SQL Developer.

Espero que este artículo sea de mucha utilidad para los amantes de las tecnologías de bases de datos y a toda la comunidad de Oracle Database XE.


Saludos.
    






Comentarios

Manuel dijo…
Por fin! gracias por el aporte.
crdzvega dijo…
Tengo una duda usualmente antes de las BD multitenant, los schemes los usaba como contenedores de módulos de mí aplicación por ej. scheme>contabilidad, scheme>ventas y así, pero ahora que es mas práctico crear una pdbdatabase por módulo, así pones en los ejemplos con HR y SALES, pero como encontrar la verdadera utilidad práctica para la cual fue creada esta tecnología?
Hola crdzvega, "la verdadera utilidad práctica para la cual fue creada esta tecnología", a la que te refieres, que yo la expresaría como la razón principal de ser de esta tecnología Multitenant(Multi inquilino) es que varias bases de datos puedan compartir la misma instancia, y que se traduce en ahorro de recursos como la memoria principal, sumado a esto la facilidad de poder aplicar patches y actualizaciones a todas las PDB's a partir de su contenedor, lo que en las versiones anteriores a 12c implicaba un gran esfuerzo por parte del DBA si se disponía de varias bases de datos NonCDB con el consumo explícito de más memoria por parte de cada instancia de DB. El enfoque de Multitenant no va asociado directamente a la forma de organizar los esquemas(varios esquemas en una sola PDB o una PDB por esquema), sino, a administrar de manera óptima las bases de datos de una organización.
crdzvega dijo…
Muchas gracias! por tu respuesta, me queda todo claro. Éxitos en tus labores!

Entradas más populares de este blog

Crear y Administrar Espacios de Tablas(Tablespaces) Parte 1

Como conectarse a Oracle Database XE desde la línea de comandos.

Crear usuarios, asignar y revocar roles en Oracle XE con SQL Developer