lunes, 19 de agosto de 2013

Parámetros no documentados en Oracle 12c

Oracle proporciona la vista  x$ksppi, la cual puede ser utilizada para mostrar información sobre parámetros no documentados. Dicha vista tiene la siguiente estructura:




A continuación una consulta que puede ser utilizada para obtener los datos no documentados:

SQL> select ksppinm, ksppdesc from x$ksppi where substr(ksppinm,1,1) = '_' order by 1;

_4030_dump_bitvec         bitvec to specify dumps prior to 4030 error
_4031_dump_bitvec         bitvec to specify dumps prior to 4031 error
_4031_dump_interval       Dump 4031 error once for each n-second interval
_4031_max_dumps           Maximum number of 4031 dumps for this process
_4031_sga_dump_interval   Dump 4031 SGA heapdump error once for each n-secon
                          d interval

_4031_sga_max_dumps       Maximum number of SGA heapdumps
_ILM_FILTER_TIME          Upper filter time for ILM block compression
_ILM_FILTER_TIME_LOWER    Lower filter time for ILM block compression
_ILM_POLICY_NAME          User specified ILM policy name

......

2984 rows selected.



domingo, 18 de agosto de 2013

Ruteo de Servicios Web con Oracle Service Bus Parte 3

Ruteo de Servicios Web con Oracle Service Bus (Parte 3)

Por Deiby Gómez Robles
Publicado en agosto 2013

Reciban un cordial saludo tecnólogos Oracle de Latinoamérica, en esta tercera parte del artículo de Ruteos de Servicios Web se tratará la función "Conditional Branch", la cual se comporta como el ya conocido "if-else-then", esto implica que aporta cierto nivel de dinamismo en el ruteo ya que es capaz de tomar decisiones en tiempo real y redireccionar solicitudes de datos a diferentes Servicios Web, según sea el caso. Esta característica es muy útil para un Arquitecto de servicios web pues le permite filtrar solicitudes, tomar decisiones del negocio en tiempo real antes de consumir los servicios web finales, agregar dinámicamente más reglas de negocio e incluso rechazar las que no se requieran.
Ver articulo completo:

Ruteo de Servicios Web con Oracle Service Bus Parte 2

Ruteo de Servicios Web con Oracle Service Bus (Parte 2)

Por Deiby Gómez Robles
Publicado en agosto 2013

En el artículo anterior se trató el procedimiento para la creación de los "Business Service" y los "Proxy Service", dejando la mayoría de las opciones por defecto. También se vio que existían varios algoritmos de balanceo de servicios web que mantienen una lógica de negocio idéntica pero que están desplegados en diferentes servidores. El objetivo de crear "Business Service" y "Proxy Service" es lograr el desacoplamiento entre los clientes y los proveedores, de esta manera, cuando un cambio ocurra en el servicio del proveedor, será posible hacer transformaciones y/o ruteos para que esos cambios sean en su mayoría transparentes a los clientes. Un ejemplo clásico de este concepto es la "migración virtual". Imaginen que una empresa expone 50 servicios web y estos están creados en versión "10g", los clientes que dependen de estos servicios web son aproximadamente 500, esto implica que un cambio que se necesite realizar en los servicios del proveedor afectará a todos los servicios web de los clientes y necesitaremos "obligar" a los clientes a que se adapten a estos cambios, y bien se sabe que esto no es agradable para ellos, implica gastos en desarrollo, tiempo, etc.
Ver articulo completo:

Ruteo de Servicios Web con Oracle Service Bus Parte 1

Ruteo de Servicios Web con Oracle Service Bus (Parte 1)

Por Deiby Gómez Robles
Publicado en agosto 2013
Reciban un cordial saludo estimados colegas de Oracle, como bien se sabe la cultura de servicios web día con día se está expandiendo, reforzado por el surgimiento de la Arquitectura Orientada a Servicios (SOA) y de la necesidad que tienen los clientes de comunicarse con socios y demás. Dentro del contexto de una arquitectura orientada a servicios se destaca el concepto "Bus de servicios", cuyo objetivo es proveer una capa de virtualización de servicios entre los proveedores y los clientes. Si hacemos referencia a la matriz de madurez que provee The Open Group (www.opengroup.org) llamada OSIMM (Open group Service Integration Maturity Model), el Bus de Servicios es el encargado de cumplir con el nivel de madurez llamado "Servicios Virtualizados"
Ver articulo completo:

lunes, 12 de agosto de 2013

III Congreso de Informática, Zacapa

El día sábado 03 de Agosto del 2013, tuve la oportunidad de compartir una vez más con los estudiantes de la Universidad Mariano Galvez con sede en Zacapa, Guatemala, en el "III Congreso de Informática" que se realizó en el Hotel El Atlantico de dicha localidad.

Este evento contó con varios conferencistas expertos en diferentes áreas de tecnología como "Microsoft", "Oracle", "ESET", "Business Intelligence", entre otros.

La agenda del evento fue la siguiente:
La conferencia que compartí con los estudiantes que asistieron a este evento fue "Service-Oriented Architecture":

Iniciando la Conferencia:





Agradezco mucho a la Universidad Mariano Galvez con sede en Zacapa por hacerme la invitación de participar en tan agradable evento de Informática. También agradezco al Ing. Carlos Dávila y al Ing. José Chinchilla por permitir que mi participación en dicho evento se llevara a cabo.

miércoles, 7 de agosto de 2013

Mi blog en OTN Latinoamerica

El día de hoy recibí una gran noticia desde OTN Latinoamerica en la cual se me indicaba que habia sido aprobado mi blog para aparecer en la sección "SOA & Virtualization (OracleVM)" de "Bloggers Regionales de Oracle".

¡Muchas Gracias OTN Latinoamerica!



¿Cómo Prepararse para el Examen de Exadata?

El día viernes 02 de Agosto realizé el Examen "Oracle Exadata X3 Administration (1z0-027)" después de haberme preparado por mucho tiempo finalmente he aprobado dicho examen. No fue fácil la preparación, grandes personas como Arup Nanda (USA) y Uwe Hesse (Alemania) me ayudaron (a través de sus blogs), también YV RaviKumar (India) me apoyó mucho al discutir por varias horas temas complejos de la arquitectura de Exadata y con quien tuve la oportunidad de realizar artículos para OTN Latinoamerica de Exadata en conjunto con el Oracle ACE Director Joel Pérez (Venezuela). 

Lamentablemente no puedo decir qué preguntas vienen en el examen, ni proporcionar información sobre dicho examen, pues Oracle tiene reglas estrictas que prohiben eso:  "Divulging exam content is a violation of Oracle’s Fraudulent Activity Policy and may result in the revocation of  individual’s  credentials”. Sin embargo, voy a compartir con ustedes material que puede ser de utilidad en su preparación basandome en los temas que Oracle tiene pubicado en el siguiente enlace:


Sinceramente, para mi preparación leí todo el material que encontraba de Exadata, blogs, notas en metalinks, manuales de Oracle, discusiones con colegas Oracle, Webinars, canales en youtube, etc. (Estaba un poco obsesionado :D)

Recomiendo leer todos los artículos sobre Exadata de Arup y Uwe, están bien explicados y abarcan también mucha teoría, a continuación les dejo algunos artículos de ellos:

Oracle Papers:

Oracle Exadata Database Machine X3-8
Oracle Exadata Database Machine X3-2
Oracle Exadata Storage Expansion Rack X3-2
Oracle Exadata Storage Server
Compression: Compressing Columns


Arup Nanda:

Uwe Hesse:




Canales de Exadata en youtube:

ExadataPM
ExadataTV


Notas de Metalink:

Database Machine and Exadata Storage Server 11gR2 888828.1
Oracle Database Machine Monitoring Best Practices 1110675.1
How to Replace a Hard Drive in an Exadata Storage Server  1386147.1
Exadata Smart Flash Logging FAQ 1372894.1
Exadata Patch 1485475.1
Exadata YUM Repository Pupulation 1473002.1
Exadata exachk 1070954.1
Exadata Preventive maintenance Service 1356432.1
Steps to manually create cell/grid disks 1281395.1
Gathering information for the Infiniband 1538237.1
Exadata patching using DB Node update utility 1553103.1
512M difference in flashcache size after upgrading to 11.2.2.4 1378055.1
Exadata Starter Kit 1244344.1

Oracle Workshop (Recomendado):



Oracle OOW Presentations:

Exadata Storage Technical overview (last updated - Jan 18,2013)
Exadata Smart Scan: What is so smart about it? (Uwe Hesse)

Espero que mi aportación sea de mucha ayuda y que en el futuro obtengan el tan esperado titulo de "Oracle Exadata Database Machine Administrator".... 




viernes, 26 de julio de 2013

Plug a non-CDB in to CDB

En el siguiente ejemplo enseñaré como pasar una base de datos Oracle 12.1 que no es un Contenedor e introducirla en un Contenedor, es decir, convertirla en un PDB y luego agregarla a un Contenedor utilizando el nuevo paquete DBMS_PDB.


Para este ejemplo se tienen las siguientes instancias:

[oracle@orcl12c ~]$ ps -ef |grep pmon
grid      2151     1  0 09:03 ?        00:00:03 asm_pmon_+ASM
oracle    2221     1  0 09:03 ?        00:00:03 ora_pmon_orcl
oracle    2448     1  0 09:04 ?        00:00:04 ora_pmon_cdb1
oracle    9360  1980  0 15:27 pts/0    00:00:00 grep pmon

ORCL: Es la base de datos non-CDB
CDB1: Es la base de datos Contenedor
+ASM: Es la instanca de ASM donde las 2 bases de datos guardan sus archivos.

Poner la base de datos non-CDB en modo READ-ONLY:

[oracle@orcl12c ~]$ export ORACLE_SID=orcl
sqlplus / as sysdba
SQL> startup mount;
SQL> alter database open read only;

Generar un archivo que describe la actual base de datos non-CDB como un PDB:

SQL> exec dbms_pdb.describe ('/home/oracle/orcl.xml');
PL/SQL procedure successfully completed.

Verificar que el actual non-CDB pueda conectarse como PDB a un Contenedor:

SET SERVEROUTPUT ON
DECLARE
 compatible CONSTANT VARCHAR2(3) := 
 CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
 pdb_descr_file => '/home/oracle/orcl.xml',
 pdb_name => 'PDB2')
 WHEN TRUE THEN 'YES'
 ELSE 'NO'
END;
BEGIN
 DBMS_OUTPUT.PUT_LINE(compatible);
END;
/
YES

PL/SQL procedure successfully completed.

Nota: Si el resultado es "NO" consultar la vista "PDB_PLUG_IN_VIOLATIONS" para ver los errores.

Conectarse a al contenedor con un usuario común que contenga el privilegio "CREATE PLUGGABLE DATABASE":

SQL> CREATE PLUGGABLE DATABASE pdb2 USING '/home/oracle/orcl.xml';
Pluggable database created.

Creación de un servicio en el tnsnames.ora que apunte al PDB que estamos creando (pdb2):

[oracle@orcl12c ~]$ cd $ORACLE_HOME/network/admin

[oracle@orcl12c admin]$ vi tnsnames.ora

Agregar lo siguiente:

PDB2 =
 (DESCRIPTION =
 (ADDRESS_LIST =
 (ADDRESS = (PROTOCOL = TCP)(HOST = dgomez12c.oraclefromguatemala)(PORT = 1521)))
 (CONNECT_DATA =
 (SERVICE_NAME =pdb2 )
 )
  )

Conectarse a la nueva base de datos PDB utilizando el servicio en el tnsnames.ora:

[oracle@orcl12c admin]$ sqlplus sys@pdb2 as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jul 26 15:35:13 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Enter password:

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SQL> 

Verificar que estemos conectados al correcto PDB:

SQL> show con_name

CON_NAME
------------------------------
PDB2

Ejecutar el script "noncdb_to_pdb": Este script sirve para eliminar toda la Metadata que existe en el PDB y que ya no se necesita, recuerde que antes el PDB era un non-CDB por lo cual necesitaba tener la metadata de los objetos proporcionados por Oracle y que ahora ya no se necesitan pues esa información la contiene el diccionario del CDB:

SQL>@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb

Nota: Este procedimiento puede durar mucho tiempo por lo que se recomienda ejecutarlo como con una herramienta como "nohup".

Abrir el PDB:

SQL> alter pluggable database pdb2 open;
Pluggable database altered.

Verificar que el PDB esté creado:

SQL> select con_id, name from v$pdbs;

    CON_ID NAME
---------- ------------------------------
         2 PDB$SEED
         3 PDB1
         4 PDB2


martes, 23 de julio de 2013

OTN (Oracle Technology Network) LatinAmerican Tour 2013, Guatemala

El pasado 17 de Julio se llevó a cabo uno de los eventos más importantes de Oracle en la ciudad de Guatemala, dicho evento contó con varios Oracle ACE Directors entre ellos:

  • Kai Yu (China)
  • José Niño (Colombia)
  • Gustavo Gonzalez (Argentina)
  • Ronald Bradford (Australia)
  • Plinio Arbizu (Perú)

En este evento tuve la oportunidad  de participar como un Speaker más del OTN 2013 y compartir las siguientes dos conferencias:





La agenda de dicho Evento fué la siguiente:



Agradezco mucho a Oracle User Group de Guatemala por darme la oportunidad de participar en tan prestigioso evento y les mando un gran saludo desde Guatemala a Kai You (I remember the promise for you.), Gustavo Gonzalez (Mantuve una larga conversación con Kai y Ronald en el automovil gracias a vos :D), José Niño (Gracias por confirmar los mitos de Colombia) y Ronald Bradford (thanks for the gift about Australia).



RMAN Database 12c: Recuperación de tablas ( Parte IV )

Por Joel Pérez  y Wissem El Khlifi  

Para la recuperación de tablas se utilizara el ya conocido comando “RECOVER” pero esta vez con funcionalidades nuevas propias de “Oracle Database 12c”. Para llevar a cabo la tarea de recuperación es necesario disponer de la siguiente información:
  • Nombre de la(s) tabla(s) y/o partición(es) a ser recuperadas
  • Punto en el tiempo ( Fecha con hora, minutos y segundos ) deseado para la recuperación
  • Especificar si la tabla será o no importada en la BBDD “target”
RMAN utiliza toda esta información para automatizar el proceso de recuperación de las tablas especificadas y/o particiones de tablas especificadas, como parte del proceso de recuperación, RMAN crea una base de datos auxiliar para alojar los objetos a ser restaurados.
Los pasos llevados a cabo por RMAN para la recuperación de tablas y/o particiones de tablas son los siguientes:
  • Determina cual respaldo ( backup sets ) poseen la tabla deseada a restaurar con el objetivo de llevarla al punto deseado en el tiempo. Internamente el proceso de búsqueda se establece bajo la misma filosofía como cuando deseamos restaurar la BBDD o un determinado “tablespace” a un determinado punto en el tiempo.
Para ver el artículo completo visite el siguiente link:



RMAN Database 12c: Recuperación de tablas ( Parte III )

Por Joel Pérez  y Wissem El Khlifi  

Para llevar a cabo la tarea de utilizar la nueva característica es fundamental contar un respaldo full de los “tablespaces”:
  • UNDO
  • SYSTEM
  • SYSAUX
  • SYSEXT ( en caso de que existiese )
Y el “tablespace” correspondiente que posea la tabla o partición deseada a recuperar.
Los requisitos están basados en los elementos necesarios para conformar una nueva BBDD la cual será denominada como BBDD Auxiliar. La BBDD Auxiliar es una BBDD temporal creada para generar un “Data Pump export dump file” que será objeto de contenido de datos para la obtención finalmente del objeto deseado ( Tabla a Recuperar ). La BBDD Auxiliar no representa una BBDD que deba crearse previo al proceso de la ejecución del comando. La misma es creada de forma automática durante el proceso de “RECOVER” y los mecanismos de acción del mismo comando “RECOVER” remueven la misma al final del proceso.
Para ver el artículo completo visite el siguiente link:


RMAN Database 12c: Recuperación de tablas ( Parte II )

RMAN Database 12c: Recuperación de tablas ( Parte2 )

Por Joel Pérez  y Wissem El Khlifi  
Entremos en materia… al momento de plantear una estrategia de respaldo y recuperación son diversos y múltiples los factores a tomar en cuenta para plantear y establecer una excelente estrategia. Y tal como siempre expreso en conferencias, artículos, y otros… “Jamás serás capaz de plantear una excelente estrategia de respaldo sino eres experto recuperando…”, es decir… el planteamiento de una excelente estrategia de recuperación se basa en establecer las condiciones y mecanismos, para poseer en cualquier momento en modo optimo los elementos necesarios para una recuperación rápida y efectiva de la base de datos en forma completa o parcial.
Al momento de plantear una estrategia de recuperación de base de datos se toma en cuenta los factores para una recuperación completa o parcial de la base de datos ( BBDD ), cuando se hace referencia a una recuperación parcial podríamos establecer que la parcialidad podria estar enfocada a: restauración completa de la estructura de la BBDD exceptuando “tablespaces”, TSPITR ( Tablespace Point-in-Time Recovery ) o parcialidad de su contenido ( objetos ) haciendo uso de Oracle “Flashback”.
Para ver el articulo completo visite el siguiente link:


RMAN Database 12c: Recuperación de tablas ( Parte I )


Por Joel Pérez  y Wissem El Khlifi  

Publicado en julio 2013


Reciban estimados tecnólogos Oracle un cordial saludo. A través del presente artículo, tendremos la oportunidad de visualizar y adentrarnos un poco en el tema de recuperación de tablas provenientes de respaldos realizados con el utilitario RMAN (Oracle Recovery Manager).

“Database12c” la nueva versión de manejador de base de datos de Oracle Corporation, nosotros los tecnólogos Oracle nos preguntábamos “que mas…” podría Oracle adicionar como nuevas características?, de que forma Oracle nos iba a sorprender esta vez y como siempre, las nuevas características y nueva arquitectura no solo nos sorprenden sino que una vez mas nos llevan a otra era…, “Cloud Computing”…
Para ver el artículo completo visite el siguiente link:



martes, 9 de julio de 2013

Oracle 12c: DDL Log

El registro de las actividades DDL's ya existia en la base de datos 11g, sin embargo, todas las sentencias eran registradas en el archivo de alerta, en Oracle 12c se tiene la nueva caracteristica de tener todos los registros DDL's en un archivo de log diferente al alert_log, este log mantiene practicamente el mismo formato que el ya conocido archivo de alerta. El uso de este archivo no  viene habilitado por default en la instalación de una base de datos 12c, para habilitarlo se necesita alterar el parametro "ENABLE_DDL_LOGGING" estableciendolo a "TRUE". Para cada sentencia DDL un registro nuevo es creado dentro de dos archivos diferentes:

  • XML DDL Log: Este archivo puede encontrarse en la ruta $ORACLE_BASE/diag/rdbms/<SID>/<SID>/log/ddl/log.xml
  • Text DDL Log: Este archivo puede encontrarse en la ruta $ORACLE_BASE/diag/rdbms/<SID>/<SID>/log/ddl_orcl.log

Nota: Es importante señalar que los registros DDL's no contiene el usuario que realizó el DDL, es decir, el DDL no registra qué usuario realizó qué DDL.

Las sentencias DDL que pueden ser registradas son:

ALTER/CREATE/DROP/TRUNCATE CLUSTER
ALTER/CREATE/DROP FUNCTION
ALTER/CREATE/DROP INDEX
ALTER/CREATE/DROP OUTLINE
ALTER/CREATE/DROP PACKAGE
ALTER/CREATE/DROP PACKAGE BODY
ALTER/CREATE/DROP PROCEDURE
ALTER/CREATE/DROP PROFILE
ALTER/CREATE/DROP SEQUENCE
CREATE/DROP SYNONYM
ALTER/CREATE/DROP/RENAME/TRUNCATE TABLE
ALTER/CREATE/DROP TRIGGER
ALTER/CREATE/DROP TYPE
ALTER/CREATE/DROP TYPE BODY
DROP USER
ALTER/CREATE/DROP VIEW

Habilitando DDL Log:

SQL> alter system set enable_ddl_logging=true scope=both;

System altered.

Realizando una prueba sencilla:

SQL> create table dgomez (a int);

Table created.

SQL> drop table dgomez;

Table dropped.

Consultando resultados:

[oracle@orcl12c log]$ pwd
/u01/app/oracle/diag/rdbms/orcl/orcl/log
[oracle@orcl12c log]$ ls -ltr
drwxr-x--- 2 oracle asmadmin 4096 Jun 29 12:40 debug
drwxr-x--- 2 oracle asmadmin 4096 Jun 29 12:40 test
drwxr-x--- 2 oracle asmadmin 4096 Jul  9 17:10 ddl
-rw-r----- 1 oracle asmadmin  367 Jul  9 17:16 ddl_orcl.log

[oracle@orcl12c log]$ cat ddl_orcl.log
Tue Jul 09 17:16:06 2013
diag_adl:create table dgomez (a int)
diag_adl:drop table dgomez

[oracle@orcl12c ddl]$ pwd
/u01/app/oracle/diag/rdbms/orcl/orcl/log/ddl
[oracle@orcl12c ddl]$ ls -ltr 
-rw-r----- 1 oracle asmadmin 2530 Jul  9 17:16 log.xml
[oracle@orcl12c ddl]$ cat log.xml
<msg time='2013-07-09T17:16:06.271-06:00' org_id='oracle' comp_id='rdbms'
 msg_id='opiexe:4181:2946163730' type='UNKNOWN' group='diag_adl'
 level='16' host_id='orcl12c.datum.com.gt' host_addr='192.168.56.2'>
 <txt>create table dgomez (a int)
 </txt>
</msg>
<msg time='2013-07-09T17:16:14.369-06:00' org_id='oracle' comp_id='rdbms'
 msg_id='opiexe:4181:2946163730' type='UNKNOWN' group='diag_adl'
 level='16' host_id='orcl12c.datum.com.gt' host_addr='192.168.56.2'>
 <txt>drop table dgomez
 </txt>
</msg>

Aunque la Documentación no indique que las sentencias "ALTER DATABASE" son registradas, sí son realizadas:




lunes, 1 de julio de 2013

Oracle 12c: Create Container

Para este articulo se asume que ya se tiene instalado el software de Oracle Database 12c, si aún no lo ha instalado visite el siguiente link: Instalar Oracle 12c

[oracle@orcl12c ~]$ dbca










[oracle@orcl12c ~]$ ps -ef |grep pmon
grid      2144     1  0 14:46 ?        00:00:00 asm_pmon_+ASM
oracle    5156     1  0 15:51 ?        00:00:00 ora_pmon_cdb1
oracle    5374  2958  0 15:54 pts/1    00:00:00 grep pmon

[oracle@orcl12c trace]$ export ORACLE_SID=cdb1
[oracle@orcl12c trace]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Mon Jul 1 16:16:59 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SQL> desc CDB_PDBS;
 Name                                      Null?    Type
 ----------------------------------------- -------- -------------
 PDB_ID                                    NOT NULL NUMBER
 PDB_NAME                                  NOT NULL VARCHAR2(128)
 DBID                                      NOT NULL NUMBER
 CON_UID                                   NOT NULL NUMBER
 GUID                                               RAW(16)
 STATUS                                             VARCHAR2(13)
 CREATION_SCN                                       NUMBER
 CON_ID                                             NUMBER

SQL> desc DBA_PDBS;
 Name                                      Null?    Type
 ----------------------------------------- -------- -------------
 PDB_ID                                    NOT NULL NUMBER
 PDB_NAME                                  NOT NULL VARCHAR2(128)
 DBID                                      NOT NULL NUMBER
 CON_UID                                   NOT NULL NUMBER
 GUID                                               RAW(16)
 STATUS                                             VARCHAR2(13)
 CREATION_SCN                                       NUMBER

SQL> select PDB_ID, PDB_NAME FROM CDB_PDBS;

PDB_ID PDB_NAME
---------- ------------------------------------------------------
         3 PDB1
         2 PDB$SEED

Cada contenedor está compuesto de 3 partes: 

  1. El Root
  2. El Seed
  3. PDBs
El Root es la base de datos como tal, la base de datos "contenedor".
El Seed siempre va a estar presente por default en un contenedor y sirve como plantilla para crear futuras PDBs.
Las PDBs son todas las bases de datos que estan dentro del contenedor.

Para una mejor compresión vea la siguiente imagen:


Oracle ACE Director Award - Deiby Gómez

Thanks #OracleACE Program for this awesome certificate recognizing the work I have done in the community for the last year. Looking forwa...