Oracle Live

11/04/2016

CAP 2.- Multitenant. Arquitectura y Configuracion

Filed under: 1z0-060 — mogukiller @ 6:20 pm

Oracle 12c introduce la arquitectura de multitenad. Donde tenemos un contenedor CDB (Container Database) que servirá de soporte y las pluggable database (PDB) que serán las que almacenen los datos. Las bases de datos que no estan en Multitenan se llaman non-CDB

1.- Beneficios de una arquitectura Multitenant

La arquitectura de Multitienan aporta la posibilidad de consolidación, donde una unica instancia puede albergar multiples bases de datos. Generando menos costes, un provisionamiento mas rapido, un parcheo mas rápido, una gestion centralidaza, el tuning se hace global a todas las PDBs, existe una separacion de roles, existen administradores para cada PDB.

Para utilizar multitenan es necesario el licenciamiento Oracle Multitenant.

2.- Arquitectura Multitenant

Una instalación de una base de datos Multitenant parde de un contenedor llamado CDB$ROOT y una PDB que se utiliza de plantilla llamada PDB$SEED. Adicionalmente puedo ir añadiendo bases de datos llamadas PDBs.

La principal diferencia con la antigua arquitectura no-Multitenant es que ahora las bases de datos comparten la SGA y los procesos de background. Adicionalmente parte del diccionario de datos de las PDBs se alamcena en el CDB, manteniendo en cada PDB el diccionario de datos de la aplicacion. Los PDBs acceden a los datos de diccionario almacenado en los CDBs por medio de punteros.

Cada container (CDB, PDB y seed) poseen su propio tablespace de SYSTEM.

Cada PDB se identifica por un ID (CON_ID) y por un nombre (CON_NAME) y posee un Global ID (GUID).

El usuario SYS (CDBA) del CDB es un usuario comun que permite gestionar el CDB y los PDBs. Cada PDB tiene su propio SYS (PDBA) para administrar.

Otras diferencias entre las arquitecturas Multitenant con las no-Multitenant son:

  • Los redo log files son comunes para todas las PDBs.
  • Los control files son comunes para todas las PDBs.
  • Existe un tablespace temporal para todos, pero cada PDB puede usar el suyo propio.
  • Existe unicamente un tablespace de UNDO para todas las PDBs.

Root Container: Almacena los metadatos propios de oracle, los common users y los common roles.

Se pueden tener hasta 252 PDBs por cada CDB.


COL START_TIME FOR A30

SELECT CON_ID,DBID
,NAME,OPEN_MODE
,TO_CHAR(OPEN_TIME, 'YYYY/MM/DD HH24:MI:SS') AS START_TIME
,ROUND(TOTAL_SIZE / 1024 / 1024) AS "SIZE_MB"
FROM V$CONTAINERS;

/*
CON_ID       DBID NAME                           OPEN_MODE  START_TIME                        SIZE_MB
---------- ---------- ------------------------------ ---------- ------------------------------ ----------
1 4220353016 CDB$ROOT                       READ WRITE 2016/01/07 10:48:35                     0
2 1182393125 PDB$SEED                       READ ONLY  2016/01/07 10:48:35                   775
3  596486228 DATOS1                         MOUNTED    2016/01/07 10:59:36                     0
*/

Usuarios locales y comunes

Un usuario local es especifico de cada PDB.

Un usuario comun se almacena en el CDB y se puede conectar en cada PDB.

No se pueden crear local users en el CDB.

Roles locales y comunes

Un role local unicamente se puede crear en PDB.

Unicamente un usuario comun puede crear roles comunes. Un role comun se puede asignar (GRANT) de forma comun aplicando a todas las PDBs o de forma local. Hay que parametrizar el GRANT con (CONTAINER=CURRENT) o (CONTAINER=ALL).

3.- Crear y configurar CDB y PDBs

3.1- Crear un CDB

Para crear una base de datos en multitenant podemos utilizar varias herramientas. SQL Plus, OUI, DBCA.

Un backend puede tener varias CDBs.

OEM Express no reconoce las PDBs dentro de una CDB.

Para crear una CDB tenemos que tener en cuenta:

  • Configurar el parametro de inicio ENABLE_PLUGGABLE_DATABASE a TRUE.
  • CREATE DATABASE se completa con la clausula ENABLE_PLUGGABLE_DATABASE.
  • La ejecución de los scripts para crear el catalogo.

3.2- Crear un PDB

Se puede crear una PDB desde varios caminos:

  • Utilizando el templete de seed.
  • Clonar un PDB desde el mimo CDB.
  • Conectando una base de datos non-CDB dentro de un CDB.
  • Desenchufar una PDB y enchufarla dentro de otro CDB. Utilizando el XML de properties de la PDB.

Ejemplo de crear una PDB desde el template:


CREATE PLUGGABLE DATABASE DATOS1 ADMIN USER ADMIN1 IDENTIFIED BY temporal;

Para validar el status de la base de datos consultamos la vista V$CONTAINERS.

Otra forma de crear una PDB es clonandola desde una PDB ya existenten. Un ejemplo seria:


alter pluggable database datos1 close immediate;
alter pluggable databae datos1 open read only;

create pluggable database datos2 from datos1;

alter pluggable database datos2 open;
alter pluggable database datos1 close immediate;
alter pluggable database datos1 open;

En el caso de ser un PDB remoto hay que indicar el DLINK al CDB al que pertenece.

Tambien podemos crear una PDB de una PDB de la que previamente la hemos desconectado.

Hay que tener en cuenta que la unica operativa que se puede hacer de una PDB desenchufada es un drop. Ejemplo:


alter pluggable database datos2 close immediate;
alter pluggable database datos2 unplug into 'datos2.xml';
drop pluggable database datos2;

Para crear una PDB de una unplugged PDB podemos hacer:


create pluggable database datos3 using '/export/app/oracle/12.1.0/dbs/datos2.xml' nocopy;

Utilizamos nocopy para indicar que los dbfs estan en su sitio.

Por ultimo vamos a migrar una base de datos non-CDB a una PDB.

Primero generamos el fichero XML de propiedades.


EXEC DBMS_PDB.DESCRIBE(PDB_DESCR_FILE =>'/tmp/pdbdatos1.xml', PDB_NAME =>'DATOS1');

Despues creamos la PDB desde ese xml.


create pluggable database datos3 using '/export/app/oracle/12.1.0/dbs/datos2.xml' copy;

Por ultimo ejecutamos el script


@$ORACLE_HOME/rdbms/admin/nocdb_to_pdb.sql

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Blog de WordPress.com.

A %d blogueros les gusta esto: