Nenhum resultado encontrado

Sua pesquisa não corresponde a nenhum resultado.

Sugerimos que você tente o seguinte para ajudar a encontrar o que procura:

  • Verifique a ortografia da sua pesquisa por palavra-chave.
  • Use sinônimos para a palavra-chave digitada; por exemplo, tente “aplicativo” em vez de “software.”
  • Tente uma das pesquisas populares mostradas abaixo.
  • Inicie uma nova pesquisa.
Perguntas Frequentes

Clonando a quente um Pluggable Database (PDB) em um ambiente Multi-Tenant usando Oracle Database 12c R2

Por Y.V. Ravi Kumar Oracle ACE, Rodrigo Mufalani Oracle ACE y Konstantin Kerekovski,
Publicado en Mayo 2017

Revisado por Marcelo Pivovar

Introdução:

O Oracle Database 12c R2 agora permite clones quentes dosPDB’s. Com essa funcionalidade, um PDB pode ser clonado enquanto ele está online e sofrendo transações. Isto permite uma grande flexibilidade gerando cópias, para desenvolvimento, dos dados de produção mantendo a alta disponibilidade que a plataforma Oracle é tão bem conhecida por fornecer.

Essa funcionalidade pode ser usada para clonar PDB’s existentes em um mesmo CDB, ou um diferente CDB ou um local ou remoto NCDB desde que todos rodando Oracle Database 12cR2, em modo ARCHIVELOG e que possuam LOCAL UNDO habilitado.

Setup do ambiente:

Origem:

  
Operating System:         Oracle Enterprise Linux 6.8 (Santiago)
Database:                 Oracle Database 12c R2 (12.2.0.1.0)
Oracle Clusterware:       Oracle Clusterware12c R2 (12.2.0.1.0)
Hostnames:                tstldb101,tstldb102
IP addresses:             192.168.0.61, 192.168.0.62
Cluster Name:             TSTLDB01
Container Database (CDB): PRODCDB
Pluggable Database (PDB): PRODPDB
 
 

Destino:

  
Operating System:         Oracle Enterprise Linux 6.6 (Santiago)
Database:                 Oracle Database 12c R2 (12.2.0.1.0)
Oracle Clusterware:       Oracle Clusterware12c R2 (12.2.0.1.0)
Hostname:                 tstldb201,tstldb202
IP addresses:             192.168.0.68, 192.168.0.69
Cluster Name:             TSTLDB02
Container Database (CDB): DEVCDB
Pluggable Database (PDB): DEVPDB (Este PDB será criado como parte do artigo)
 
 

Neste artigo, nós iremos criar o Pluggable Database DEVPDB doContainer Database DEVCDB do ClusterTSTLDB02 fora do já existente Pluggable Database PROPDBno Container Database PRODCDB do Cluster TSTLDB01.

O clone a quente é iniciado do Destino para os propósitos deste artigo quando estivermos nos referindo a local estaremos nos refereindo ao cluster TSTLDB02 e quando estivermos nos refererindo a remote, ao cluster TSTLDB01. Enquanto você está lendo este artigo, por favor, mantenha em sua mente que remoto é a origem e localé o novo PDB que está sendo criando pelo processo de clone a quente.

Garante que ambos os Container Database’sestão em modo ARCHIVELOG e com local LOCAL_UNDO habilitado.

Logar no Container Database (PRODCDB)

  
SQL> select name, log_mode from v$database;

NAME          LOG_MODE
---------------   -------------------
PRODCDB       ARCHIVELOG

SQL> col property_value format a10
SQL> col property_name format a30

SQL> select property_name, PROPERTY_VALUE 
from database_properties
where property_name = 'LOCAL_UNDO_ENABLED';

PROPERTY_NAME                   PROPERTY_V
------------------------------  --------------------
LOCAL_UNDO_ENABLED              TRUE

 
 

Logar no Container Database (DEVCDB)

  
SQL> select name, log_mode from v$database;

NAME              LOG_MODE
---------------   -------------------------
DEVCDB            ARCHIVELOG

SQL> col property_value format a10
SQL> col property_name format a30

SQL> select property_name, PROPERTY_VALUE 
from database_properties
where property_name = 'LOCAL_UNDO_ENABLED';

PROPERTY_NAME                   PROPERTY_V
------------------------------  ---------------------
LOCAL_UNDO_ENABLED              TRUE

 
 

Configurando as entradas de TNS

Nós precisamos que aja uma entrada de TNS no Destinoque aponta para o PDB remoto PDB, PRODPDB. Eu destaquei as entradas relevantes.

  
[oracle@tstldb201 ~]$ cat /u01/app/oracle/product/12.2.0/
dbhome_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/
product/12.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DEVCDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = tstldb02-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = devcdb.world)
    )
  )

 PRODPDB =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = tstldb01-scan)(PORT = 1521))   
 (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = prodpdb.world)     )   ) 


[oracle@tstldb201 ~]$ssh tstldb202 "cat /u01/app/oracle/
product/12.2.0/dbhome_1/network/admin/tnsnames.ora "
# tnsnames.ora.tstldb202 Network Configuration File: /u01/
app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora.tstldb202
# Generated by Oracle configuration tools.

DEVCDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = tstldb02-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = devcdb.world)
    )
  )

 PRODPDB =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = tstldb01-scan)(PORT = 1521))  
 (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = prodpdb.world) )   ) 

 
 

Configuração de usuários comum

Agora, nós iremos criar um usuário comum no CBD remoto, PRODCDB. Nós devemos fazer isso no primeiro node no cluster TSTLDB01.

  
[oracle@tstldb101 database]$ . oraenv
ORACLE_SID = [oracle] ? prodcdb1
The Oracle base remains unchanged with value /u01/app/oracle

[oracle@tstldb101 database]$sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Mar 13 23:43:07 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> create user c##pdb_hotcloner identified by "database_123" container=all;
User created.

SQL> grant dba to c##pdb_hotcloner container=all;
Grant succeeded.
 
 

Configuração do Database Link

Aqui nós iremos configurar um Public Database link no container CDB$ROOT do DEVCDB para que possamos conectar ao PDB, PROPDB.Nós iremos, então, validar o DB Link consultando a GV$DATABASE e GV$CONTAINERS viewse também checar oPDB de origem, remoto, está em modo READ WRITE.

  
[oracle@tstldb201 ~]$ . oraenv
ORACLE_SID = [oracle] ? devcdb1
The Oracle base remains unchanged with value /u01/
app/oracle

[oracle@tstldb201 ~]$sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Mar
 13 23:46:52 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 
12.2.0.1.0 - 64bit Production

SQL> create public database link SOURCE connect to 
c##pdb_hotcloner identified by "database_123" using 'PRODPDB';

Database link created.

SQL> select inst_id,name,open_mode from gv$database@source;

INST_ID   NAME        OPEN_MODE
---------- ---------------  --------------------
2     PRODCDB     READ WRITE
1     PRODCDB     READ WRITE

SQL> col name format a15
SQL> select inst_id,name,open_mode from gv$containers@source;

INST_ID   NAME            OPEN_MODE
---------- ---------------  ----------------------
1     PRODPDB       READ WRITE
2     PRODPDB       READ WRITE
 
 

Clone a quente do PDB remoto

Antes de iniciar o clone, iremos inspecionar os constainers disponíveis em cada CDB para ilustrar o que não existe PDB além de PDB$SEED no CDB, DEVCDB.

Logarno Pluggable database - PRODPDB

  
SQL> select name from v$database;

NAME
---------------
PRODCDB

SQL> select name from v$containers;

NAME
-------------------
CDB$ROOT
PDB$SEED
PRODPDB
 
 

Logarno Container Database - DEVCDB

  
SQL> select name from v$database;

NAME
---------------
DEVCDB

SQL> select name from v$containers;

NAME
---------------
CDB$ROOT
PDB$SEED
 
 

Agora nós iremos iniciar o processo de clone a partir do container CDB$ROOT do DEVCDB e referenciando o DB Link SOURCE que conecta ao PRODPDB no PRODCDB database do cluster TSTLDB01.

  
SQL> create pluggable database devpdb from prodpdb@source;
Pluggable database created.

 
 

Checando o progresso do processo de clonagem

Você pode checar o progresso de clonagem a quente do verificando a viewv$session_longopsno banco de dados no PDB remoto (origem).

  
SQL> select message from v$session_longops;

MESSAGE
---------------------------------------------------
kpdbfCopyTaskCbk: +DATA/PRODCDB/4AA8F71F10B96DB0E0 : 
12800 out of 12800 Blocks done

kpdbfCopyTaskCbk: +DATA/PRODCDB/4AA8F71F10B96DB0E0 : 
44800 out of 44800 Blocks done

kpdbfCopyTaskCbk: +DATA/PRODCDB/4AA8F71F10B96DB0E0 : 
32000 out of 32000 Blocks done

 
 

O PDB será o primeiro a ser clonado e ficará em estado MOUNTED.

  
SQL> select inst_id, name, open_mode from gv$containers 
where name = 'DEVPDB';

INST_ID   NAME            OPEN_MODE
----------  --------------- --------------------
1     DEVPDB            MOUNTED
2     DEVPDB            MOUNTED
 
 

LogarnoPluggable database - DEVPDB

  
[oracle@tstldb201 ~]$ . oraenv
ORACLE_SID = [oracle] ? devcdb1
The Oracle base remains unchanged with value /u01/app/oracle

[oracle@tstldb201 ~]$sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Tue Mar 14 00:09:19 
2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 
64bit Production

SQL> alter pluggable database DEVPDB open read write 
instances=ALL;

Pluggable database altered.

SQL> col name format a15
SQL> select inst_id, name, open_mode from gv$containers 
where name = 'DEVPDB';

INST_ID   NAME              OPEN_MODE
----------  ---------------   --------------------
1     DEVPDB          READ WRITE
2     DEVPDB            READ WRITE
 
 

Verificando os paths dos datafiles de ambosPDBs.

Origem (PRODPDB do PRODCDB)

  
[oracle@tstldb101 trace]$ . oraenv
ORACLE_SID = [prodcdb1] ? prodcdb1
The Oracle base remains unchanged with value /u01/app/oracle

[oracle@tstldb101 trace]$sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Tue Mar 14 00:05:43 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit 
Production

SQL> alter session set container = PRODPDB;
Session altered.

SQL>col name format a100
SQL> select name from v$datafile;

NAME
-----------------------------------------------------------------
+DATA/PRODCDB/4AA8F71F10B96DB0E0533D00A8C0638A/DATAFILE/
system.274.938559389
+DATA/PRODCDB/4AA8F71F10B96DB0E0533D00A8C0638A/DATAFILE/
sysaux.275.938559389
+DATA/PRODCDB/4AA8F71F10B96DB0E0533D00A8C0638A/DATAFILE/
undotbs1.273.938559389
+DATA/PRODCDB/4AA8F71F10B96DB0E0533D00A8C0638A/DATAFILE/
undo_2.277.938559471
+DATA/PRODCDB/4AA8F71F10B96DB0E0533D00A8C0638A/DATAFILE/
users.278.938559493

 
 

Destino (DEVPDB do DEVCDB)

  
[oracle@tstldb201 ~]$ . oraenv
ORACLE_SID = [oracle] ? devcdb1
The Oracle base remains unchanged with value /u01/app/oracle

[oracle@tstldb201 ~]$sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Mar 13 23:46:52 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 
64bit Production

SQL> alter session set container = DEVPDB;
Session altered.

SQL> col name format a100
NAME
-----------------------------------------------------------
+DATA/DEVCDB/4AA9B457CD025F7BE0534400A8C0C831/DATAFILE/
system.289.938563067
+DATA/DEVCDB/4AA9B457CD025F7BE0534400A8C0C831/DATAFILE/
sysaux.288.938563067
+DATA/DEVCDB/4AA9B457CD025F7BE0534400A8C0C831/DATAFILE/
undotbs1.296.938563067
+DATA/DEVCDB/4AA9B457CD025F7BE0534400A8C0C831/DATAFILE/
undo_2.290.938563067
+DATA/DEVCDB/4AA9B457CD025F7BE0534400A8C0C831/DATAFILE/
users.295.938563067
 
 

Conclusão

Com o Oracle Database 12c R2, pluggabledatabasesse tornaram ainda mais úteis e agora são completamente capazes de se criar PDB clones de pluggabledatabasesque são abertos em modo READ WRITE. Isto permitirá entregas continuas e ajudará ambientes Oracle mais ágeis e gerenciáveis para ajudar o desenvolvimento, de maneira simples, clonando dados de produçãopara testes.

Y V RaviKumar é um Oracle ACE e Oracle Certified Master (OCM) com 18 anos de experiência em instituições financeiras, serviços financeiros e seguros (BFSI) e atuou em diversos papeis como Senior Database Architect e Production DBA. Ele também é OCP em Oracle 8i, 9i, 10g, 11g & 12c e Certificado em Golden Gate, RAC, Performance Tuning& Oracle Exadata. Ele continua motivando muitos DBAs e ajudando a Oracle Community publicando suas dicas /ideias/sugestões/soluções em seu blog. Ele escreveu 40+ artigos OTN sobre Oracle Exadata, Oracle RAC e Oracle GoldenGate para a OTN em Espanhol, OTN em Português e OTN em inglês e 19 artigos para a TOAD World, 2 Artigos para o UKOUG, 3 Artigos para OTech Magazine e 2 Artigos para a Redgate. Ele é membro do AllIndia Oracle UserGroup (AIOUG) e frequente Oracle speaker in @NYOUG, @OTN, AIOUG, Sangam e IOUG. Ele desenha, projeta e implementa Core Banking System (CBS) Databases para o Central Banks em dois países – India e Mahe, Seychelles. Ele é Co-Founder do OraWorld (www.oraworld.com). Leia mais sobre o seu perfil na LaserSoft

Rodrigo Mufalani é um DBA Sr. com mais de 10 anos de experiência, começou com o Oracle 8i, mas teve a oportunidade de dar suporte a Oracle 7.3.4 em diante. É especialista em banco de dados Oracle com foco principal em Performance &Tuning e RAC. É palestrante em eventos de Oracle como: OTN LAD TOUR e outros. Atualmente trabalha como consultor diversas empresas no segmento de variados ramos como: Educação, Saúde, Tecnologia, Seguros e etc. Foi o terceiro Oracle ACE a ser nomeado no Brasil e é OCP DBA nas versões 10g e 11g. Atualmente trabalha na Mufalani.

Konstantin Kerekovski é um profissional Oracle com mais de 6 anos de experiência no ramo de serviços financeiros. Ele é membro do Independent Oracle UserGroup (IOUG) e do Suncoast Oracle UserGroup (SOUG). Ele tem trabalhado como Senior e Líder Database Administrator com suporte ao ramo de serviços financeiros. Ele é palestrante do IOUG Collaborate 2017 e do SOUG meetings em Tampa Bay. Ele é um expert em Oracle Real Application Cluster, ASM, Goldengate e Oracle 11g e 12c.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.