Oracle Live

11/04/2016

Multitenant – Tutorial

Filed under: New 12c — mogukiller @ 5:36 pm
Tags:

Os dejo un pequeño tutorial para la creación y administracion de bases de datos en Multitentant.

-- Create PDB 
-- Clone PDB 
-- Unplug PDB
-- List Containers
-- List Services
-- Containers status
-- Para abrir/cerrar una PDB
-- Crear servicios en un PDB
-- Para cambiar de container
-- Creamos un usuario local
-- Modified params PDB
-- STARTUP / SHUTDOWN CDB y PDB

-- ALTER DATABASE para PDB

-- List Containers

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
*/

-- List Services
COL PDB FOR A30
COL NAME FOR A30
SELECT PDB,NAME,ENABLED as "ENABLED" FROM CDB_SERVICES ORDER BY 1,2;
/*
PDB                            NAME                           ENA
------------------------------ ------------------------------ ---
CDB$ROOT                       PRUEBA                         NO
CDB$ROOT                       PRUEBAXDB                      NO
CDB$ROOT                       SYS$BACKGROUND                 NO
CDB$ROOT                       SYS$USERS                      NO
DATOS1                         datos1                         NO
*/

-- Containers status
'nota: indica si alguna PDB esta UNPLUGGED'
COL PDB_NAME FOR A30 
SELECT PDB_NAME, STATUS FROM CDB_PDBS;

/*
PDB_NAME                       STATUS
------------------------------ ---------
PDB$SEED                       NORMAL
DATOS1                         NEW
*/

-- Create PDB 

'nota: Esta sintaxis crea una PDB utilizando como plantilla el seed'
CREATE PLUGGABLE DATABASE DATOS1 ADMIN USER ADMIN1 IDENTIFIED BY temporal;
/*
Pluggable database created.
*/

-- Clone PDB 

1.- Preparamos el origen
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;

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

-- Listado CDB_TABLESPACES
SELECT CON_ID, TABLESPACE_NAME FROM CDB_TABLESPACES;
/* 
    CON_ID TABLESPACE_NAME
---------- ------------------------------
         1 SYSTEM
         1 SYSAUX
         1 UNDOTBS1
         1 TEMP
         1 USERS
         3 SYSTEM
         3 SYSAUX
         3 TEMP
*/

-- Para abrir una PDB
ALTER PLUGGABLE DATABASE DATOS1 OPEN;
ALTER PLUGGABLE DATABASE DATOS1 CLOSE;

/*
Pluggable database altered.
*/

-- Crear XML Definition
EXEC DBMS_PDB.DESCRIBE(PDB_DESCR_FILE =>'/tmp/pdbdatos1.xml', PDB_NAME =>'DATOS1');
/*
PL/SQL procedure successfully completed.
*/

-- Crear servicios en un PDB
'nota: con 12c esta el parametro -pdb en srvctl add service'
srvctl add service -d prueba -s DATOS -pdb datos1
srvctl start service -d prueba -s DATOS

-- Para cambiar de container
ALTER SESSION SET CONTAINER = DATOS1;
SELECT SYS_CONTEXT('USERENV','CON_NAME') "CONTAINER" FROM DUAL;
/*
CONTAINER
-----------
CDB$ROOT
*/
SHOW CON_NAME

-- Creamos un usuario local
'nota: Para crear un usuario comun hariamos CONTAINER = ALL;'
CREATE USER MOGU IDENTIFIED BY temporal CONTAINER = CURRENT;

-- STARTUP / SHUTDOWN CDB y PDB
STARTUP / SHUTDOWN para CDB

ALTER PLUGGABLE DATABASE DATOS1 OPEN [RESTRICTED];
ALTER PLUGGABLE DATABASE DATOS1 CLOSE;
ALTER PLUGGABLE DATABASE DATOS1 CLOSE IMMEDIATE; <<< 'nota: immediate no es la opcion por defecto, por lo que esperara a todas las sesiones'
ALTER PLUGGABLE DATABASE DATOS1 MOUNT;

'nota: tambien podemos hacer operaciones de startup o shutdown de un PDB'
ALTER SESSION SET CONTAINER = DATOS1;
SHUTDOWN IMMEDIATE; 'Si revisamos el estado la deja en MOUNT'

'nota: otra forma de subir una pdb'
STARTUP PLUGGABLE DATABASE DATOS1;


'nota: para bajar todas las pdb'
ALTER PLUGGABLE DATABASE ALL CLOSE;
ALTER PLUGGABLE DATABASE ALL EXCEPT DATOS1 CLOSE;
ALTER PLUGGABLE DATABASE DATOS1,DATOS2 OPEN;

-- Modified params PDB
'nota: Existe un unico spfile para todos los container'

'nota: Listado de parametros parametrizables para una PDB'
SELECT NAME FROM V$PARAMETER WHERE ISPDB_MODIFIABLE='TRUE' ORDER BY 1;

'nota: Para modificar los parametros de una determinada PDB'
ALTER SESSION SET CONTAINER = DATOS1;
ALTER SYSTEM SET DDL_LOCK_TIMEOUT = 20;

'nota: Visualizamos la vista V$PARAMETER y la columna CON_ID'
SELECT CON_ID, NAME, VALUE FROM V$PARAMETER;

-- ALTER DATABASE para PDB
ALTER PLUGGABLE DATABASE DATOS1 DATAFILE '+DG_DATA' SIZE 10M;

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: