Duplicando um Database Oracle à partir de um backup

Essa atividade é normalmente referida como Duplicação da base (duplicate database) ou Clone da base (clone database) e consiste basicamente em criar uma copia do database em uma outra instância, sem afetar o database original.

A duplicação pode ser feita de duas formas

  • A partir do database original ativo, chamado de from active database; ou
  • A partir de um backup do database original.

Existem várias situações que podem exigir que você crie uma cópia de um Database, entre as mais comuns está a duplicação de uma base de produção para validar a aplicação de um patch importante e de alto risco no ambiente. Outra situação que pode solicitar essa atividade é restaurar uma versão antiga do banco para recuperação de dados que podem ter sido deletados ou expurgados, sendo que essa recuperação tem que ser feita em paralelo à base atual.

Nota: Com o lançamento da versão 12c e da feature Multitenant, o processo de duplicação de CDB (container databases) e PDB (pluggable databases) difere um pouco do que é exposto aqui. Este procedimento de aplica a databases non-CDB (que é basicamente o conceito de database único por instância ao qual estávamos acostumados até a versão 11g).

Neste artigo irei duplicar um database chamado "erp" para um database chamado "clone". O tipo de duplicação demonstrada aqui será a partir de um backup do database "erp".

Criando um novo database para receber a cópia da base

Essa é a primeira etapa para o processo de duplicação. Por praticidade eu normalmente crio esse database usando o assistente "dbca". Isso facilita bastante o processo.

Configurando o novo database para o processo de duplicação

Essa atividade vai depender do tipo de database que foi criado para receber a cópia. Caso o seu ambiente seja em cluster (RAC) você pode ter escolhido criar um database em RAC, RAC One Node, ou Single Instance.
No meu caso, o ambiente é um RAC e eu costumo criar o database como RAC One Node. Mas a configuração não difere muito de uma base em RAC tradicional. No caso de uma Single Instance seria até mais simples e você pode ignorar algumas configurações que não se aplicam.

A primeira configuração é restringir que o database inicie sua instância em apenas um nó do cluster, para isso altere os "candidate server" para apenas um dos hosts do cluster e altere o parâmetro "cluster_database" para false;

Verificando em qual nó do cluster a instancia RAC One Node está executando.

[oracle@ol7db01 ~]$ srvctl status database -d clone
Instance clone_1 is running on node ol7db01
Online relocation: INACTIVE

Tenha atenção para o nome da instância impressa no comando acima, você deverá usá-la mais adiante no configuração do listener.ora.

Verificando as configurações do database, mais especificamente quais os candidate servers onde ela pode iniciar.

[oracle@ol7db01 ~]$ srvctl config database -d clone
Database unique name: clone
Database name: clone
Oracle home: /u01/app/oracle/product/12.1.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/CLONE/PARAMETERFILE/spfile.321.903414607
Password file: +DATA/CLONE/PASSWORD/pwdclone.279.903412795
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA,RECO
Mount point paths:
Services: srvcloneon
Type: RACOneNode
Online relocation timeout: 30
Instance name prefix: clone
Candidate servers: ol7db01,ol7db02
OSDBA group: dba
OSOPER group: oper
Database instances:
Database is administrator managed

Alterando a relação de candidate servers para conter apenas o nó atual onde está executando.

[oracle@ol7db01 ~]$ srvctl modify database -d clone -e ol7db01

O passo seguinte é alterar o arquivo de configuração do Listener no host do cluster onde a instância desse database vai ser iniciada. Normalmente não há entradas fixas para as instâncias nas configurações do listener, ficando a cargo dos databases se registrarem automaticamente no listener após sua inicialização. No entanto, como durante processo de duplicação o RMAN executa shutdown e start na instância, para que o start funcione é necessário que haja uma entrada fixa no listener.

Primeiro verifique o caminho do arquivo de configuração do Listener.

[grid@ol7db01 ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 10-FEB-2016 18:37:54
Copyright (c) 1991, 2014, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                08-FEB-2016 18:07:03
Uptime                    2 days 0 hr. 30 min. 51 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/12.1.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/ol7db01/listener/alert/log.xml
Listening Endpoints Summary...

Em seguida edite o arquivo adicionando ao seu final uma entrada conforme abaixo. Atenção para colocar o ORACLE_HOME e o SID_NAME corretos do seu ambiente.

SID_LIST_LISTENER =
 (SID_LIST =
  (SID_DESC =
    (GLOBAL_DBNAME = clone)
    (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
    (SID_NAME = clone_1)
   )
 )

Execute um reload no listener para ativar a alteração efetuada no arquivo listener.ora.

[grid@ol7db01 ~]$ lsnrctl reload
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 10-FEB-2016 18:59:33
Copyright (c) 1991, 2014, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
The command completed successfully

A próxima etapa é configurar para que seja possível conectar na instância enquanto ela estiver iniciada em NOMOUNT. Deve-se adicionar o parâmetro UR = A no tnsnames.ora do servidor onde será executado o RMAN.
Além desse parâmetro, caso você esteja em um ambiente em RAC como o meu, provavelmente a entrada no tnsnames está com o host apontando para o endereço SCAN do cluster, Você deve alterar para endereço VIP do host onde a instância está configurada para iniciar.

CLONEDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ol7db01-vip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = clone)
      (UR = A)
    )
  )

A seguir altere o parâmetro cluster_database para false.

[oracle@ol7db01 ~]$ sqlplus sys@clone as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Wed Feb 10 18:44:53 2016
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Enter password:
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
SQL> show parameter cluster;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_database                     boolean     TRUE
cluster_database_instances           integer     2
cluster_interconnects                string
SQL> alter system set cluster_database=false scope=spfile;
System altered.
SQL>

O próximo passo é parar o database clone e iniciá-lo no mono NOMOUNT.

[oracle@ol7db01 ~]$ srvctl stop database -d clone
[oracle@ol7db01 ~]$ srvctl start database -d clone -o nomount

Nesse ponto o database de destino (clone) está pronto para o processo de duplicação da base de origem (erp).

Preparando o backup do database de origem

Precisamos agora ter um backup full do database original para fazer a duplicação a partir do mesmo. Caso você esteja executando este procedimento para resgatar uma versão antiga de alguma tabela, já deve ter esse backup disponível.
Para este laboratório vou criar um backup full agora.

[oracle@ol7db01 ~]$ rman target sys@erp catalog rman@rcat
Recovery Manager: Release 12.1.0.2.0 - Production on Wed Feb 10 19:22:42 2016
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
target database Password:
connected to target database: ERP (DBID=152032381)
recovery catalog database Password:
connected to recovery catalog database
RMAN> run {
crosscheck archivelog all;
backup as compressed backupset database;
backup current controlfile;
backup spfile;
sql 'alter system archive log current';
backup as compressed backupset archivelog all delete input;
}2> 3> 4> 5> 6> 7> 8>

Depois de ter o backup disponível, certifique-se de que ele esteja acessível pelo servidor/instância onde está a base de destino (clone). Como neste laboratório o database de destino está no mesmo RAC do database de origem, e o backup está no diskgroup +RECO compartilhado no ASM, o acesso aos arquivos de backup não é um problema.

Mas se esse não é o seu caso, basta colocar os arquivos de backup em um diretório no servidor do database de destino e catalogar os arquivos com o comando do RMAN "catalog start with".

Nota: Se você está usando algum backup antigo para a duplicação do database deve ter atenção na hora de especificar a clausula UNTIL no script de duplicação. Eu normalmente uso UNTIL SCN para esses casos de restore mais antigo por ser mais específico. Para identificar o SCN correto basta usar o maior Next SCN presente no backupset, caso o backup tenha sido feito em um database Single Instance. No caso de um database com mais de uma instância, obtenha o maior Next SCN de cada thread e entre esses escolha o menor deles.

RMAN> list backupset completed between "to_date('2016-02-10 00:00:00','YYYY-MM-DD HH24:MI:SS')" and "to_date('2016-02-10 23:00:00','YYYY-MM-DD HH24:MI:SS')";

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
74      Full    106.63M    DISK        00:00:49     10-FEB-16
        BP Key: 76   Status: AVAILABLE  Compressed: YES  Tag: TAG20160210T192350
        Piece Name: +RECO/ERP/BACKUPSET/2016_02_10/nnndf0_tag20160210t192350_0.297.903468233
  List of Datafiles in backup set 74
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 568415     10-FEB-16 +DATA/ERP/DATAFILE/system.307.903310469
  2       Full 568415     10-FEB-16 +DATA/ERP/DATAFILE/sysaux.308.903310481
  3       Full 568415     10-FEB-16 +DATA/ERP/DATAFILE/undotbs1.309.903310489
  4       Full 568415     10-FEB-16 +DATA/ERP/DATAFILE/undotbs2.311.903310505
  5       Full 568415     10-FEB-16 +DATA/ERP/DATAFILE/users.312.903310507
  6       Full 568415     10-FEB-16 +DATA/ERP/DATAFILE/erpdata.322.903467573
  7       Full 568415     10-FEB-16 +DATA/ERP/DATAFILE/erpindx.323.903467623
BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
75      Full    1.05M      DISK        00:00:03     10-FEB-16
        BP Key: 77   Status: AVAILABLE  Compressed: YES  Tag: TAG20160210T192350
        Piece Name: +RECO/ERP/BACKUPSET/2016_02_10/ncsnf0_tag20160210t192350_0.298.903468291
  SPFILE Included: Modification time: 09-FEB-16
  SPFILE db_unique_name: ERP
  Control File Included: Ckp SCN: 568565       Ckp time: 10-FEB-16
BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
92      Full    18.11M     DISK        00:00:02     10-FEB-16
        BP Key: 95   Status: AVAILABLE  Compressed: NO  Tag: TAG20160210T192458
        Piece Name: +RECO/ERP/BACKUPSET/2016_02_10/ncnnf0_tag20160210t192458_0.299.903468301
  Control File Included: Ckp SCN: 568606       Ckp time: 10-FEB-16
BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
103     Full    80.00K     DISK        00:00:00     10-FEB-16
        BP Key: 105   Status: AVAILABLE  Compressed: NO  Tag: TAG20160210T192504
        Piece Name: +RECO/ERP/BACKUPSET/2016_02_10/nnsnf0_tag20160210t192504_0.300.903468305
  SPFILE Included: Modification time: 09-FEB-16
  SPFILE db_unique_name: ERP
BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
135     110.95M    DISK        00:00:39     10-FEB-16
        BP Key: 137   Status: AVAILABLE  Compressed: YES  Tag: TAG20160210T192525
        Piece Name: +RECO/ERP/BACKUPSET/2016_02_10/annnf0_tag20160210t192525_0.305.903468329
  List of Archived Logs in backup set 135
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    27      331823     09-FEB-16 372417     09-FEB-16
  1    28      372417     09-FEB-16 423849     09-FEB-16
  1    29      423849     09-FEB-16 486592     09-FEB-16
  1    30      486592     09-FEB-16 530932     10-FEB-16
  1    31      530932     10-FEB-16 568653     10-FEB-16
  1    32      568653     10-FEB-16 568679     10-FEB-16
  2    1       332399     09-FEB-16 332423     09-FEB-16
  2    2       334407     09-FEB-16 404968     09-FEB-16
  2    3       404968     09-FEB-16 468910     09-FEB-16
  2    4       468910     09-FEB-16 478168     09-FEB-16
  2    5       478168     09-FEB-16 486479     09-FEB-16
  2    6       486479     09-FEB-16 506366     10-FEB-16
  2    7       506366     10-FEB-16 547162     10-FEB-16
  2    8       547162     10-FEB-16 568657     10-FEB-16
  2    9       568657     10-FEB-16 568683     10-FEB-16
RMAN>

Nesse laboratório o SCN para ser usado no duplicate é o 568679, pois entre os maiores Next SCN das duas threads existentes, ele é o menor.

[oracle@ol7db01 ~]$ rman target sys/OraLin2016@erp auxiliary sys/OraLin2016@clone catalog rman/server@rcat
Recovery Manager: Release 12.1.0.2.0 - Production on Wed Feb 10 21:46:52 2016
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
connected to target database: ERP (DBID=152032381)
connected to recovery catalog database
connected to auxiliary database: CLONE (not mounted)
RMAN> run
{
allocate channel c1 device type disk;
allocate auxiliary channel d1 device type disk;
set until scn 568679;
DUPLICATE TARGET DATABASE TO "clone";
}

Nota: Na versão 12c (12.1.0.2) existe um bug [Bug 20977794 - RMAN-3002 ... ORA-65500 from RMAN duplicate on RAC (Doc ID 20977794.8)] que faz com que o comando acima gere o erro abaixo e seja impossível prosseguir com a duplicação do database. Esse erro ocorre quando o RMAN tenta alterar o parametro db_unique_name do database de destino (clone). Esse bug afeta apenas databases que utilizam o Grid Infraestructure. Caso esteja usando como destino um database Single Instance não enfrentará esse erro. Já existe um patch [Patch 20977794: RMAN DUPLICATE ERROR: ORA-65500: COULD NOT MODIFY DB_UNIQUE_NAME, RESOURCE EXIST] para esse bug, mas caso você não possa aplicá-lo agora, vou colocar em seguida um workaround.

Starting Duplicate Db at 10-FEB-16
contents of Memory Script:
{
   set until scn  568679;
   sql clone "alter system set  control_files =
  ''+DATA/CLONE/CONTROLFILE/current.289.903412809'', ''+RECO/CLONE/CONTROLFILE/current.287.903412809'' comment=
 ''Set by RMAN'' scope=spfile";
   sql clone "alter system set  db_name =
 ''ERP'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''CLONE'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile;
   alter clone database mount;
}
executing Memory Script
executing command: SET until clause
sql statement: alter system set  control_files =   ''+DATA/CLONE/CONTROLFILE/current.289.903412809'', ''+RECO/CLONE/CONTROLFILE/current.287.903412809'' comment= ''Set by RMAN'' scope=spfile
sql statement: alter system set  db_name =  ''ERP'' comment= ''Modified by RMAN duplicate'' scope=spfile
sql statement: alter system set  db_unique_name =  ''CLONE'' comment= ''Modified by RMAN duplicate'' scope=spfile
released channel: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 02/14/2016 20:06:41
RMAN-04014: startup failed: ORA-00304: requested INSTANCE_NUMBER is busy
RMAN-03015: error occurred in stored script Memory Script
RMAN-03009: failure of sql command on clone_default channel at 02/14/2016 20:06:17
RMAN-11003: failure during parse/execution of SQL statement: alter system set  db_unique_name =  'CLONE' comment= 'Modified by RMAN duplicate' scope=spfile
ORA-32017: failure in updating SPFILE
ORA-65500: could not modify DB_UNIQUE_NAME, resource exists

Se você está enfrentando o bug da versão 12.1.0.2, como foi o meu caso neste lab, e não pode aplicar o patch de correção, será necessário realizar as seguintes atividades adicionais.

Remover o database do Grid Infraestructure.

[oracle@ol7db01 ~]$ srvctl remove database -db clone

Realizar o clone confirme o comando já indicado anteriormente.

Starting Duplicate Db at 14-FEB-16
contents of Memory Script:
{
   set until scn  568679;
   sql clone "alter system set  control_files =
  ''+DATA/CLONE/CONTROLFILE/current.289.903412809'', ''+RECO/CLONE/CONTROLFILE/current.287.903412809'' comment=
 ''Set by RMAN'' scope=spfile";
   sql clone "alter system set  db_name =
 ''ERP'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''CLONE'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile;
   alter clone database mount;
}
executing Memory Script
executing command: SET until clause
sql statement: alter system set  control_files =   ''+DATA/CLONE/CONTROLFILE/current.289.903412809'', ''+RECO/CLONE/CONTROLFILE/current.287.903412809'' comment= ''Set by RMAN'' scope=spfile
sql statement: alter system set  db_name =  ''ERP'' comment= ''Modified by RMAN duplicate'' scope=spfile
sql statement: alter system set  db_unique_name =  ''CLONE'' comment= ''Modified by RMAN duplicate'' scope=spfile
Oracle instance shut down
Oracle instance started
Total System Global Area    1073741824 bytes
Fixed Size                     2932632 bytes
Variable Size                763363432 bytes
Database Buffers             301989888 bytes
Redo Buffers                   5455872 bytes
allocated channel: d1
channel d1: SID=9 device type=DISK
Starting restore at 14-FEB-16
channel d1: starting datafile backup set restore
channel d1: restoring control file
channel d1: reading from backup piece +RECO/ERP/BACKUPSET/2016_02_10/ncnnf0_tag20160210t192458_0.299.903468301
channel d1: piece handle=+RECO/ERP/BACKUPSET/2016_02_10/ncnnf0_tag20160210t192458_0.299.903468301 tag=TAG20160210T192458
channel d1: restored backup piece 1
channel d1: restore complete, elapsed time: 00:00:04
output file name=+DATA/CLONE/CONTROLFILE/current.289.903412809
output file name=+RECO/CLONE/CONTROLFILE/current.287.903412809
Finished restore at 14-FEB-16
database mounted
contents of Memory Script:
{
   set until scn  568679;
   set newname for clone datafile  1 to new;
   set newname for clone datafile  2 to new;
   set newname for clone datafile  3 to new;
   set newname for clone datafile  4 to new;
   set newname for clone datafile  5 to new;
   set newname for clone datafile  6 to new;
   set newname for clone datafile  7 to new;
   restore
   clone database
   ;
}
executing Memory Script
executing command: SET until clause
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 14-FEB-16
channel d1: starting datafile backup set restore
channel d1: specifying datafile(s) to restore from backup set
channel d1: restoring datafile 00001 to +DATA
channel d1: restoring datafile 00002 to +DATA
channel d1: restoring datafile 00003 to +DATA
channel d1: restoring datafile 00004 to +DATA
channel d1: restoring datafile 00005 to +DATA
channel d1: restoring datafile 00006 to +DATA
channel d1: restoring datafile 00007 to +DATA
channel d1: reading from backup piece +RECO/ERP/BACKUPSET/2016_02_10/nnndf0_tag20160210t192350_0.297.903468233
channel d1: piece handle=+RECO/ERP/BACKUPSET/2016_02_10/nnndf0_tag20160210t192350_0.297.903468233 tag=TAG20160210T192350
channel d1: restored backup piece 1
channel d1: restore complete, elapsed time: 00:01:16
Finished restore at 14-FEB-16
contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=8 STAMP=903818222 file name=+DATA/CLONE/DATAFILE/system.325.903818147
datafile 2 switched to datafile copy
input datafile copy RECID=9 STAMP=903818222 file name=+DATA/CLONE/DATAFILE/sysaux.326.903818147
datafile 3 switched to datafile copy
input datafile copy RECID=10 STAMP=903818223 file name=+DATA/CLONE/DATAFILE/undotbs1.327.903818147
datafile 4 switched to datafile copy
input datafile copy RECID=11 STAMP=903818223 file name=+DATA/CLONE/DATAFILE/undotbs2.328.903818147
datafile 5 switched to datafile copy
input datafile copy RECID=12 STAMP=903818223 file name=+DATA/CLONE/DATAFILE/users.331.903818149
datafile 6 switched to datafile copy
input datafile copy RECID=13 STAMP=903818223 file name=+DATA/CLONE/DATAFILE/erpdata.329.903818149
datafile 7 switched to datafile copy
input datafile copy RECID=14 STAMP=903818223 file name=+DATA/CLONE/DATAFILE/erpindx.330.903818149
contents of Memory Script:
{
   set until scn  568679;
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script
executing command: SET until clause
Starting recover at 14-FEB-16
starting media recovery
channel d1: starting archived log restore to default destination
channel d1: restoring archived log
archived log thread=1 sequence=31
channel d1: restoring archived log
archived log thread=2 sequence=8
channel d1: restoring archived log
archived log thread=1 sequence=32
channel d1: restoring archived log
archived log thread=2 sequence=9
channel d1: reading from backup piece +RECO/ERP/BACKUPSET/2016_02_10/annnf0_tag20160210t192525_0.305.903468329
channel d1: piece handle=+RECO/ERP/BACKUPSET/2016_02_10/annnf0_tag20160210t192525_0.305.903468329 tag=TAG20160210T192525
channel d1: restored backup piece 1
channel d1: restore complete, elapsed time: 00:00:47
archived log file name=+RECO/CLONE/ARCHIVELOG/2016_02_14/thread_2_seq_8.309.903818257 thread=2 sequence=8
archived log file name=+RECO/CLONE/ARCHIVELOG/2016_02_14/thread_1_seq_31.308.903818257 thread=1 sequence=31
channel clone_default: deleting archived log(s)
archived log file name=+RECO/CLONE/ARCHIVELOG/2016_02_14/thread_1_seq_31.308.903818257 RECID=15 STAMP=903818267
archived log file name=+RECO/CLONE/ARCHIVELOG/2016_02_14/thread_1_seq_32.310.903818257 thread=1 sequence=32
channel clone_default: deleting archived log(s)
archived log file name=+RECO/CLONE/ARCHIVELOG/2016_02_14/thread_2_seq_8.309.903818257 RECID=14 STAMP=903818264
archived log file name=+RECO/CLONE/ARCHIVELOG/2016_02_14/thread_2_seq_9.311.903818257 thread=2 sequence=9
channel clone_default: deleting archived log(s)
archived log file name=+RECO/CLONE/ARCHIVELOG/2016_02_14/thread_1_seq_32.310.903818257 RECID=12 STAMP=903818257
channel clone_default: deleting archived log(s)
archived log file name=+RECO/CLONE/ARCHIVELOG/2016_02_14/thread_2_seq_9.311.903818257 RECID=13 STAMP=903818257
media recovery complete, elapsed time: 00:00:03
Finished recover at 14-FEB-16
Oracle instance started
Total System Global Area    1073741824 bytes
Fixed Size                     2932632 bytes
Variable Size                763363432 bytes
Database Buffers             301989888 bytes
Redo Buffers                   5455872 bytes
contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''CLONE'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
}
executing Memory Script
sql statement: alter system set  db_name =  ''CLONE'' comment= ''Reset to original value by RMAN'' scope=spfile
sql statement: alter system reset  db_unique_name scope=spfile
Oracle instance started
Total System Global Area    1073741824 bytes
Fixed Size                     2932632 bytes
Variable Size                763363432 bytes
Database Buffers             301989888 bytes
Redo Buffers                   5455872 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "CLONE" RESETLOGS ARCHIVELOG
  MAXLOGFILES    192
  MAXLOGMEMBERS      3
  MAXDATAFILES     1024
  MAXINSTANCES    32
  MAXLOGHISTORY      292
 LOGFILE
  GROUP   1  SIZE 50 M ,
  GROUP   2  SIZE 50 M
 DATAFILE
  '+DATA/CLONE/DATAFILE/system.325.903818147'
 CHARACTER SET WE8MSWIN1252
sql statement: ALTER DATABASE ADD LOGFILE
  INSTANCE 'i2'
  GROUP   3  SIZE 50 M ,
  GROUP   4  SIZE 50 M
contents of Memory Script:
{
   set newname for clone tempfile  1 to new;
   switch clone tempfile all;
   catalog clone datafilecopy  "+DATA/CLONE/DATAFILE/sysaux.326.903818147",
 "+DATA/CLONE/DATAFILE/undotbs1.327.903818147",
 "+DATA/CLONE/DATAFILE/undotbs2.328.903818147",
 "+DATA/CLONE/DATAFILE/users.331.903818149",
 "+DATA/CLONE/DATAFILE/erpdata.329.903818149",
 "+DATA/CLONE/DATAFILE/erpindx.330.903818149";
   switch clone datafile all;
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to +DATA in control file
cataloged datafile copy
datafile copy file name=+DATA/CLONE/DATAFILE/sysaux.326.903818147 RECID=1 STAMP=903818319
cataloged datafile copy
datafile copy file name=+DATA/CLONE/DATAFILE/undotbs1.327.903818147 RECID=2 STAMP=903818320
cataloged datafile copy
datafile copy file name=+DATA/CLONE/DATAFILE/undotbs2.328.903818147 RECID=3 STAMP=903818320
cataloged datafile copy
datafile copy file name=+DATA/CLONE/DATAFILE/users.331.903818149 RECID=4 STAMP=903818320
cataloged datafile copy
datafile copy file name=+DATA/CLONE/DATAFILE/erpdata.329.903818149 RECID=5 STAMP=903818320
cataloged datafile copy
datafile copy file name=+DATA/CLONE/DATAFILE/erpindx.330.903818149 RECID=6 STAMP=903818321
datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=903818319 file name=+DATA/CLONE/DATAFILE/sysaux.326.903818147
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=903818320 file name=+DATA/CLONE/DATAFILE/undotbs1.327.903818147
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=903818320 file name=+DATA/CLONE/DATAFILE/undotbs2.328.903818147
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=903818320 file name=+DATA/CLONE/DATAFILE/users.331.903818149
datafile 6 switched to datafile copy
input datafile copy RECID=5 STAMP=903818320 file name=+DATA/CLONE/DATAFILE/erpdata.329.903818149
datafile 7 switched to datafile copy
input datafile copy RECID=6 STAMP=903818321 file name=+DATA/CLONE/DATAFILE/erpindx.330.903818149
contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script
database opened
Finished Duplicate Db at 14-FEB-16

Depois do clone concluído, adicionar novamente o database ao Grid Infraestructure.

[oracle@ol7db01 ~]$ srvctl add database -db clone -oraclehome /u01/app/oracle/product/12.1.0/dbhome_1 -dbtype raconenode -server ol7db01 -spfile +DATA/clone/spfileclone.ora -pwfile /u01/app/oracle/product/12.1.0/dbhome_1/dbs/orapwclone -diskgroup DATA,RECO

Agora o database de origem (erp) está duplicado no database de destino (clone). Você pode remover/reconfigurar, se quiser, os parâmetros que adicionou/alterou no listener.ora e no tnsnames.ora.

Comentários

Postagens mais visitadas deste blog

Migrar Replicação do SYSVOL de FRS para DFS

Gerar uma cadeia de certificados usando OpenSSL

Converter um certificado PEM/CRT + KEY para PFX