gDBClone um script que você PRECISA conhecer

Este post também está disponível em: English

Database Clone
Database Clone

Conheci esse script procurando alguma coisa para fazer snapclone de banco de dados, sem ser pelo SPARSE DISKGROUP.
Se não quiser ler esse post, já vai direto: gDBClone Powerful Database Clone/Snapshot Management Tool (Doc ID 2099214.1)

Vou fazer alguns posts utilizando esse script, o primeiro será realizando um clone, como se fosse um active duplicate com o RMAN, mas sem precisar ficar criando entrada tns , listener, password file para lá, e pra ca, ele simplifica a parte chata.

O processo de clone é feito através do “RMAN Duplicate from Active Database”, e por padrão ele aloca 3 canais para fazer o clone, caso necessário é possível aumentar essa quantidade passando o parâmetro “-channels <RMAN channels number>”.

O clone é feito sem impacto significativo no ambiente de produção, ele também pode realizar o clone por através de um backup completo do banco de dados de origem, trazendo menos impacto ainda de E/S sobre o banco de produção.
Obs: A opção de realizar o clone através de um backup não será contemplado nesse primeiro momento.

Configuração


Foi necessário adicionar uma entrada no arquivo /etc/sudoers com a informação abaixo, para dar permissão de execução ao usuário oracle.

## Utilizacao do gDBClone
Cmnd_Alias GDBCLONE_CMD=/opt/gDBClone/gDBClone.bin *
oracle ALL=(root) NOPASSWD:GDBCLONE_CMD
Bash

E inserido a entrada no .bash_profile do usuário oracle, para facilitar na chamada do script.

alias gDBClone='sudo /opt/gDBClone/gDBClone.bin'
Bash

Opções de parâmetros do script

Usage:
gDBClone clone -sdbname <source DB name>
               -sdbscan <source DB Host SCAN name>
               |-sbckloc '<backup location path>' [-time <DD-MON-YYYY_HH24:MI:SS>] [-upgrade [-parallel <number of process>]]
               |-sopcbck -opclib '<opc_lib_path>' -opcpfile '<opc_pfile_path'
                 [-scn <scn>] [-dbid <DB id>] [-rmanpwf <rman password file>] [-upgrade [-parallel <number of process>] ]
               |-catuser <catalog user> [-catpwf <rman catalog password file>] -cstring <connect string>
                 [-scn <scn>] [-dbid <DB ID>] [-sbt1 <sbt params>] [-sbt2 <sbt params>]
               -tdbname <Target Database Name> [-tdomain <Target Database Domain Name>] -tdbhome <Target Database Home Name>
               -dataacfs <acfs mount point> [-redoacfs <acfs mount point>] [-recoacfs <acfs mount point>]
               |-datadg <asm data diskgroup> [-redodg <asm redo diskgroup>] [-recodg <asm reco diskgroup>]
               [-sga_max_size <size Mb> ] [-sga_target <size Mb>] | [-pfile <file path>]
               [-channels <RMAN channels number> ] [-ssize <size Mb>] [-cbset]
               [-sdbport <Source DB SCAN Listener Port> ] [-tdbport <Target DB SCAN Listener Port>]
               [-racmod <db type> ]
               [-standby [-pmode maxperf|maxavail|maxprot] [-activedg] [-rtapply] [-dgbroker [-dgbpath1 <dgb config path>][-dgbpath2 <dgb config path>]] ]
               [-opc ] [-noping]
               [-resume ]
               [-syspwf <sys password file>]
Bash

Criação de um arquivo de senha

É bom a criação desse arquivo, para evitar de ficar digitando a senha no prompt.

gDBClone syspwf -syspwf /opt/gDBClone/SYSpasswd_file
Bash

Realizando o clone de um banco de dados

Antes de realizar o clone, devemos saber o nome da ORACLE_HOME que iremos clonar o banco de destino.Lembrando que ela precisa ser da mesma versão da ORACLE_HOME de produção.Para verificar o nome dos ORACLE_HOME presente no servidor, executar o comando abaixo.

oracle@hsslab [] /home/oracle> gDBClone listhomes
│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
 gDBClone - Version: 3.0.4-02
 Copyright (c) 2012-2020 Oracle and/or its affiliates.
--------------------------------------------------------
 Author: Ruggero Citton [email protected]
 RAC Pack, Cloud Innovation and Solution Engineering Team
│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
Oracle Home Name      Home Location
---------------      ------------
OraDB12Home1          /u01/app/oracle/product/12.1.0.2/dbhome_2
OraDB12Home3          /u01/app/oracle/product/12.2.0.1/dbhome_1
OraDB19Home1          /u01/app/oracle/product/19.0.0.0/dbhome_1
Bash

Explicação de cada parâmetro que será utilizando no clone.

gDBClone clone -sdbname <nome banco de origem> \
               -sdbscan <nome scan de origem>\
               -sdbport <porta do listener na origem>\
               -tdbname <nome do banco de destino>\
               -tdbport <porta do listener no destino>
               -tdbhome <nome da ORACLE_HOME>\
               -datadg <DG onde serão criados os datafiles>\
               -redodg <DG onde serão criados os redos>\
               -recodg <DG de recovery área>
               -syspwf <caminho do arquivo de password>
Bash

Realizando o clone

ORIGEM

Servidor = hsslab
Service_name = orcl

Scan: 192.168.0.150
Tamanho do banco = 213GB
Bash


DESTINO

Servidor = hsslab02
Nome do banco de destino = clone01
Porta do listener = 1521
Oracle Home Name = OraDB12Home1
DG de dados = +DATA
DG de redo = +RECO
DG de reco = +RECO
Arquivo de senha = /opt/gDBClone/SYSpasswd_file
Bash

O comando pronto:

gDBClone clone -sdbname orcl -sdbscan 192.168.0.150 -sdbport 1521 -tdbname clone01 -tdbport 1521 -tdbhome OraDB12Home1 -datadg +DATAC1 -redodg +RECOC1 -recodg +DATAC1 -syspwf /opt/gDBClone/SYSpasswd_file
Bash

EXECUÇÃO:

oracle@hsslab [orcl] /home/oracle> gDBClone clone -sdbname orcl -sdbscan 192.168.0.150 -sdbport 1521 -tdbname clone01 -tdbport 1521 -tdbhome OraDB12Home1 -datadg +DATAC1 -redodg +RECOC1 -recodg +DATAC1 -syspwf /opt/gDBClone/SYSpasswd_file
[sudo] password for oracle:
INFO: 2021-02-01 15:20:17: Please check the logfile '/opt/gDBClone/out/log/gDBClone_69167.log' for more details
INFO: 2021-02-01 15:38:44: Starting database 'clone01'
SUCCESS: 2021-02-01 15:39:04: Successfully created clone database 'clone01'
Bash

Tempo para clonar os 213GB foi de 18 minutos.

Limitações e Considerações

gDBClone works on a Grid Infrastructure environment and on Oracle Restart (SIHA). Source database must be in archivelog mode when cloning/snapshotting as it’s executed a hot clone/snapshot. Multitenant database (CDB) snapshot is not currently supported if contains PDBs created as “snapshot copy”.
“gDBClone snap” needs EE (Enterprise Edition) Databases as the RMAN snapshot time recovery feature is needed and Grid Infrastructure version 12.1 or above. GI version 11g is not supported due to missing ACFS snapshot-of-snapshot feature capability.

Artigo anterior

Como remover uma GRID_HOME antiga

Próximo Artigo

ORA-01623

Escreva um comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *