segunda-feira, 10 de janeiro de 2011

COMO DUPLICAR MEU BANCO LOCALMENTE?

Opa!!!..Salve Salve..Como estão vocês?

Hoje eu queria dividir aqui com vocês essa implementação de DUPLICAR um banco de dados local usando Backupsets em disco juntamente com RMAN.

Vamos lá?

DUPLICANDO BANCO DE DADOS LOCAL.

Antes de mais nada, precisamos ter em mente alguns conceitos e algumas definições básicas para podermos prosseguir.

O que pode vir a gerar essa necessidade em duplicar um banco local ou remotamente são inumeras possibilidades, que vão desde a simples disponibilidade de mais 1 (um) banco para realização de testes especificos, até mesmo a implementação de features ou melhorias para futuramente serem aplicadas no ambiente de produção corrente. Onde poderemos com isso , sentir os impactos positivos ou negativos que estas "melhorias" podem causar em nosso ambiente produtivo.


Vale lembrar também que, por estarmos usando RMAN para realizar está tarefa, o desenrolar das atividades requerem um pouquinho de intimidade com alguns comandos de S.O, Banco de Dados e também com o próprio RECOVERY MANAGER.


APRESENTANDO O AMBIENTE.


Iremos realizar nossas tarefas no seguinte ambiente virtualizado :




Esta figura acima mostra como está configurada minha VM , abaixo segue a sua descrição :


S.O: Oracle Enterprise Linux 5
BD Version: Oracle Enterprise Manager 10g R2
VM Version: Oracle Virtual Box


Apresentando o ambiente, vamos a implementação.


Inicie sua VM e aguarde até o Start do sistema operacional ter terminado e entrar na seguinte tela:





Pronto VM iniciada, a partir daqui você opta por usar diretamente da console do Virtual Box, ou VmWare se você estiver usando-o, ou você pode configurar a rede da sua VMMachine em modo Bridge, para poder usar um putty diretamente do hospedeiro o que tornam as coisas bem mais práticas.

PREPARANDO AMBIENTE: PRÉ-CLONAGEM


Agora vamos iniciar nosso Banco, que pressuponho que já esteja criado, caso ainda não o tenham feito, criem uma instância relativamente pequeno se estiver apenas testando essa implementação, com uma SGA de aproximadamente uns 300MB você consegue muito bem realizar essa tarefa.




Banco iniciado e disponivel, vamos então aos passos de preparação do nosso CLONE.


CRIANDO ESTRUTURA DE DIRETÓRIOS DO CLONE.


Agora é o momento onde nós devemos preparar a parte estrutural do nosso novo Banco,  criando os diretórios de LOGS ( bdump, udump, cdump, etc) bem como os diretórios onde ficaram os datafiles.


Chamaremos nosso novo banco de "LAB10GC", facilitando nosso entendimento, isso não impede vocês de realizarem o mesmo com o nome que quiserem, bastando observar que onde se vê LAB10GC terá o nome que vocês escolherem.


Antes de mais nada vamos entrar no diretório raiz dos datafiles "/u01/app/oracle/oradata/" e criaremos uma pasta "LAB10GC":




Muito bom!!..Vamos agora então ao próximo passo, criar nossas pastas de log dentro do diretório BASE para o auxilio em caso de analises de logs no meu caso é "/u01/app/oracle/" ficando da seguinte forma :





A figura acima mostra o processo de criação dos diretórios de base, e abaixo como ficou a estrutura em árvore dos diretórios :



 Maravilha , criados nossos diretórios vamos seguir em frente.


PREPARAÇÃO DA CLONAGEM NO BANCO DE DADOS.


Agora entramos na fase em que precisamos coletar algumas informações do nosso Banco de dados Original ("LAB10G") que serviram de base para o nosso Clone ("LAB10GC").


DUPLICANDO O ARQUIVO DE PARAMETROS.


Neste momento teremos de pegar os parametros de inicialização contidos no arquivo INIT.ORA do banco de origem  para servir de padrão para o banco clone. 


Para evitar que digitemos algo errado, ou até mesmo esqueçamos de algum parametro importante, é melhor que copiemos do nosso banco de origem o arquivo de inicialização e apenas editemos depois o mesmo ok?


Vamos lá!, em uma janela terminal digite :




Observação: Vale lembrar que, estes comandos acima só valem para quem usa SPFILE no banco de origem, caso você utilize PFILE basta copialo para o diretório destino conforme mostra a figura acima.


Agora que já temos nosso PFILE no diretório do nosso banco clone "/u01/app/oracle/admin/lab10gc/pfile", providenciaremos a edição do mesmo para adequa-lo a realidade de seus respectivos diretórios :

Notem que agora todos os nomes ou referencias que tinham em seu arquivo apontando para a base Origem, devem ser subistituidos pelo nome da sua instancia Clone, vejam acima como ficou meu INIT.ORA, aproveitei também este momento de edição para adicionar 2 (dois) parametros que não constavam no meu init.ora, que são os seguintes DB_FILE_NAME_CONVERT e o INSTANCE_NAME :


DB_FILE_NAME_CONVERT

Property Description
Parameter type String
Syntax DB_FILE_NAME_CONVERT = 'string1' , 'string2' , 'string3' , 'string4' , ... Where:
  • string1 is the pattern of the primary database filename
  • string2 is the pattern of the standby database filename
  • string3 is the pattern of the primary database filename
  • string4 is the pattern of the standby database filename
You can use as many pairs of primary and standby replacement strings as required. You can use single or double quotation marks.
The following are example settings that are acceptable:
DB_FILE_NAME_CONVERT = '/dbs/t1/','/dbs/t1/s_','dbs/t2/ ','dbs/t2/s_'
Default value There is no default value.
Modifiable ALTER SESSION
Basic No
DB_FILE_NAME_CONVERT is useful for creating a duplicate database for recovery purposes. It converts the filename of a new datafile on the primary database to a filename on the standby database. If you add a datafile to the primary database, you must add a corresponding file to the standby database. When the standby database is updated, this parameter converts the datafile name on the primary database to the datafile name on the standby database. The file on the standby database must exist and be writable, or the recovery process will halt with an error.
If you specify an odd number of strings (the last string has no corresponding replacement string), an error is signalled during startup. If the filename being converted matches more than one pattern in the pattern/replace string list, the first matched pattern takes effect. There is no limit on the number of pairs that you can specify in this parameter (other than the hard limit of the maximum length of multivalue parameters).
Set the value of this parameter to two strings. The first string is the pattern found in the datafile names on the primary database. The second string is the pattern found in the datafile names on the standby database.
You can also use DB_FILE_NAME_CONVERT to rename the datafiles in the clone control file when setting up a clone database during tablespace point-in-time recovery.

INSTANCE_NAME

Property Description
Parameter type String
Syntax INSTANCE_NAME = instance_id
Default value The instance's SID Note: The SID identifies the instance's shared memory on a host, but may not uniquely distinguish this instance from other instances.
Modifiable No
Range of values Any alphanumeric characters
Basic No
In a Real Application Clusters environment, multiple instances can be associated with a single database service. Clients can override Oracle's connection load balancing by specifying a particular instance by which to connect to the database. INSTANCE_NAME specifies the unique name of this instance.
In a single-instance database system, the instance name is usually the same as the database name.

Estes parametros , principalmente o primeiro, indicaram para o RMAN onde ele deve restaurar os datafiles do CLONE, através do valor colocado nos parametro DB_FILE_NAME_CONVERT.

Bem, salvem seus arquivos de inicialização após edita-lo e vamos em frente.

PREPARANDO O BANCO CLONE.

Agora iremos emitir alguns comandos já na nossa instância Clone a LAB10GC, chamo de instancia porque só trabalharemos por enquando na sua camada de memória :


  1. export ORACLE_SID= nome da instancia clone
  2. certifique-se de que extá correto : echo $ORACLE_SID
  3. conecte-se a ela via SQLPLUS
  4. emita o comando STARTUP NOMOUNT + caminho e nome do arquivo de inicialização.
Siga a ordem acima como demonstrado na figura, nossa instancia clone deve ficar em modo NOMOUNT para que o algoritmo de DUPLICATE do RMAN compreenda que está a disposição uma estrutura em memória , nomeada LAB10GC esperando pela criação dos arquivos de controle, arquivos de dados e arquivos de redolog.

O fato de estar em NOMOUNT é claro para nós DBA's, pois eu ainda não possuo minha hierarquia de arquivos fisicamente representada, estou apenas usando ponteiros lógicos indisponiveis que se tornaram disponiveis e em uso após a clonagem com sucesso.

EDITANDO O ARQUIVO DE LISTENER E TNSNAMES.ORA

Devemos também adicionar entradas em nossos arquivos de Network, pois usaremos essas entradas na hora de conectarmos via RMAN , como será demonstrado oportunamente.

No TNSNAMES.ORA adicione :


Vejam que possua ambas entradas em meu TNSNAMES.ORA, façam o mesmo nos seus respectivos arquivos.

No LISTENER.ORA adicione :




 Se por um acaso ainda não tiver uma entrada de listener adicione uma conforme a figura acima.

  Aqui após a alteração e adição do arquivo de LISTENER.ORA.

Após a realização da edição do arquivo de LISTENER, emita os comandos RELOAD para que as edições surtam efeito ou se preferir realize um STOP e START do mesmo.

CLONANDO

Antes de clonarmos efetivamente nosso banco, vale lembrar que este é um banco de dados 10g release 2, portanto não contamos com a feature de ACTIVE DUPLICATION presente na versão 11g, portanto para qualquer tarefa de duplicação nesta release em que estamos é necessario a realização de um backup antes, para gerarmos nosso conjunto de backupsets a ser utilizado em nosso processo ok? Vamos ao backup então :

Script de Backup:
-------------------------

[oracle@oel5drb adhoc]$ cat bkp_full_online.cmd
connect target rmanuser/manager00
connect catalog rcvcat/rcvcat

run {
allocate channel chn_ora1 type disk format '/u01/backup/rman/BKP_FULL_ONLINE_%d_%t_%s.rman';
allocate channel chn_ora2 type disk format '/u01/backup/rman/BKP_FULL_ONLINE_%d_%t_%s.rman';
allocate channel chn_ora3 type disk format '/u01/backup/rman/BKP_FULL_ONLINE_%d_%t_%s.rman';
backup as compressed backupset database tag 'BKP_FULL_ONLINE'
       current controlfile tag 'BKP_CF'
       spfile tag 'BKP_SPFILE';
sql 'alter system archive log current';
backup as compressed backupset archivelog all delete all input tag 'BKP_ARCHIVES';
release channel chn_ora1;
release channel chn_ora2;
release channel chn_ora3;
}
 

Vocês se recordam da série que escrevi sobre RMAN, pois bem, vejam aqui a utilização do nosso catalogo de backup e do nosso bom RMAN , com os respectivos usuários que criamos para utilizar os mesmos :


Vejam meu log como ficou :

RMAN> connect target *
2> connect catalog *
3>
4> run {
5> allocate channel chn_ora1 type disk format '/u01/backup/rman/BKP_FULL_ONLINE_%d_%t_%s.rman';
6> allocate channel chn_ora2 type disk format '/u01/backup/rman/BKP_FULL_ONLINE_%d_%t_%s.rman';
7> allocate channel chn_ora3 type disk format '/u01/backup/rman/BKP_FULL_ONLINE_%d_%t_%s.rman';
8> backup as compressed backupset database tag 'BKP_FULL_ONLINE'
9>        current controlfile tag 'BKP_CF'
10>        spfile tag 'BKP_SPFILE';
11> sql 'alter system archive log current';
12> backup as compressed backupset archivelog all delete all input tag 'BKP_ARCHIVES';
13> release channel chn_ora1;
14> release channel chn_ora2;
15> release channel chn_ora3;
16> }
17>
connected to target database: LAB10G (DBID=1120710571)

connected to recovery catalog database

allocated channel: chn_ora1
channel chn_ora1: sid=35 devtype=DISK

allocated channel: chn_ora2
channel chn_ora2: sid=33 devtype=DISK

allocated channel: chn_ora3
channel chn_ora3: sid=32 devtype=DISK

Starting backup at 10-JAN-11
channel chn_ora1: starting compressed full datafile backupset
channel chn_ora1: specifying datafile(s) in backupset
input datafile fno=00001 name=/u01/app/oracle/oradata/lab10g/system01.dbf
input datafile fno=00004 name=/u01/app/oracle/oradata/lab10g/users01.dbf
channel chn_ora1: starting piece 1 at 10-JAN-11
channel chn_ora2: starting compressed full datafile backupset
channel chn_ora2: specifying datafile(s) in backupset
input datafile fno=00003 name=/u01/app/oracle/oradata/lab10g/sysaux01.dbf
input datafile fno=00006 name=/u01/app/oracle/oradata/lab10g/cat_rcv_tbs01.dbf
channel chn_ora2: starting piece 1 at 10-JAN-11
channel chn_ora3: starting compressed full datafile backupset
channel chn_ora3: specifying datafile(s) in backupset
input datafile fno=00005 name=/u01/app/oracle/oradata/lab10g/example01.dbf
input datafile fno=00002 name=/u01/app/oracle/oradata/lab10g/undotbs01.dbf
channel chn_ora3: starting piece 1 at 10-JAN-11
channel chn_ora2: finished piece 1 at 10-JAN-11
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053615_17.rman tag=BKP_FULL_ONLINE comment=NONE
channel chn_ora2: backup set complete, elapsed time: 00:00:26
channel chn_ora2: starting compressed full datafile backupset
channel chn_ora2: specifying datafile(s) in backupset
including current control file in backupset
channel chn_ora2: starting piece 1 at 10-JAN-11
channel chn_ora3: finished piece 1 at 10-JAN-11
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053615_18.rman tag=BKP_FULL_ONLINE comment=NONE
channel chn_ora3: backup set complete, elapsed time: 00:00:28
channel chn_ora3: starting compressed full datafile backupset
channel chn_ora3: specifying datafile(s) in backupset
waiting for snapshot control file enqueue
including current control file in backupset
channel chn_ora3: starting piece 1 at 10-JAN-11
channel chn_ora2: finished piece 1 at 10-JAN-11
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053642_19.rman tag=BKP_FULL_ONLINE comment=NONE
channel chn_ora2: backup set complete, elapsed time: 00:00:12
channel chn_ora2: starting compressed full datafile backupset
channel chn_ora2: specifying datafile(s) in backupset
including current SPFILE in backupset
channel chn_ora2: starting piece 1 at 10-JAN-11
channel chn_ora3: finished piece 1 at 10-JAN-11
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053643_20.rman tag=BKP_CF comment=NONE
channel chn_ora3: backup set complete, elapsed time: 00:00:13
channel chn_ora3: starting compressed full datafile backupset
channel chn_ora3: specifying datafile(s) in backupset
channel chn_ora1: finished piece 1 at 10-JAN-11
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053615_16.rman tag=BKP_FULL_ONLINE comment=NONE
channel chn_ora1: backup set complete, elapsed time: 00:00:41
channel chn_ora2: finished piece 1 at 10-JAN-11
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053655_21.rman tag=BKP_FULL_ONLINE comment=NONE
channel chn_ora2: backup set complete, elapsed time: 00:00:01
including current SPFILE in backupset
channel chn_ora3: starting piece 1 at 10-JAN-11
channel chn_ora3: finished piece 1 at 10-JAN-11
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053656_22.rman tag=BKP_SPFILE comment=NONE
channel chn_ora3: backup set complete, elapsed time: 00:00:01
Finished backup at 10-JAN-11

sql statement: alter system archive log current

Starting backup at 10-JAN-11
current log archived
channel chn_ora1: starting compressed archive log backupset
channel chn_ora1: specifying archive log(s) in backup set
input archive log thread=1 sequence=10 recid=9 stamp=740053664
channel chn_ora1: starting piece 1 at 10-JAN-11
channel chn_ora2: starting compressed archive log backupset
channel chn_ora2: specifying archive log(s) in backup set
input archive log thread=1 sequence=11 recid=10 stamp=740053665
channel chn_ora2: starting piece 1 at 10-JAN-11
channel chn_ora1: finished piece 1 at 10-JAN-11
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053666_23.rman tag=BKP_ARCHIVES comment=NONE
channel chn_ora1: backup set complete, elapsed time: 00:00:01
channel chn_ora1: deleting archive log(s)
archive log filename=/u01/app/oracle/flash_recovery_area/LAB10G/archivelog/2011_01_10/o1_mf_1_10_6loyt0g5_.arc recid=9 stamp=740053664
channel chn_ora2: finished piece 1 at 10-JAN-11
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053666_24.rman tag=BKP_ARCHIVES comment=NONE
channel chn_ora2: backup set complete, elapsed time: 00:00:01
channel chn_ora2: deleting archive log(s)
archive log filename=/u01/app/oracle/flash_recovery_area/LAB10G/archivelog/2011_01_10/o1_mf_1_11_6loyt1hy_.arc recid=10 stamp=740053665
Finished backup at 10-JAN-11

released channel: chn_ora1

released channel: chn_ora2

released channel: chn_ora3

Recovery Manager complete.

Vocês podem tranquilamente acompanhar o desenrolar de seus backups através do comando TAIL -F no arquivo de log gerado pelo seu RMAN, ou se preferir usando as visões de banco para apoio em caso de necessidade em saber como estão seus backups, vejam a query:

Script :  Status dos backups executados.
======

set lin 1000
set pages 100

COL START_TIME FOR a25
COL END_TIME FOR a25
COL STATUS FORMAT a9
COL hrs    FORMAT 999.99
SELECT SESSION_KEY, INPUT_TYPE, STATUS,
       TO_CHAR(START_TIME,'mm/dd/yy hh24:mi') start_time,
       TO_CHAR(END_TIME,'mm/dd/yy hh24:mi')   end_time,
       ELAPSED_SECONDS/3600                   hrs
FROM V$RMAN_BACKUP_JOB_DETAILS
ORDER BY SESSION_KEY;
 
Script: Backups ou Restore em execução.
=====

select sid, serial#, context, sofar, totalwork,
       round(sofar/totalwork*100,2) "%_complete", message
       from v$session_longops
       where opname like 'RMAN%'
         and opname not like '%aggregate%'
         and totalwork != 0
         and sofar <> totalwork;
 

Bem, acredito que agora possamos então prosseguir com nosso CLONE, pois já temos o que precisamos, nosso backup, nossa instancia em NOMOUNT, arquivos editados, enfim, toda a fase PRÉ-CLONAGEM esta satisfeita.

Vejam o LOG do CLONE:
RMAN> connect auxiliary sys/manager00

connected to auxiliary database: LAB10GC (not mounted)

RMAN> duplicate target database to lab10gc
2> pfile=/u01/app/oracle/admin/lab10gc/pfile/init.ora
3> logfile
4> '/u01/app/oracle/oradata/lab10gc/redo01.dbf' size 50m,
5> '/u01/app/oracle/oradata/lab10gc/redo02.dbf' size 50m,
6> '/u01/app/oracle/oradata/lab10gc/redo03.dbf' size 50m;

Starting Duplicate Db at 10-JAN-11
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=46 devtype=DISK

contents of Memory Script:
{
   set until scn  729905;
   set newname for datafile  1 to
 "/u01/app/oracle/oradata/lab10gc/system01.dbf";
   set newname for datafile  2 to
 "/u01/app/oracle/oradata/lab10gc/undotbs01.dbf";
   set newname for datafile  3 to
 "/u01/app/oracle/oradata/lab10gc/sysaux01.dbf";
   set newname for datafile  4 to
 "/u01/app/oracle/oradata/lab10gc/users01.dbf";
   set newname for datafile  5 to
 "/u01/app/oracle/oradata/lab10gc/example01.dbf";
   set newname for datafile  6 to
 "/u01/app/oracle/oradata/lab10gc/cat_rcv_tbs01.dbf";
   restore
   check readonly
   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

Starting restore at 10-JAN-11
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /u01/app/oracle/oradata/lab10gc/undotbs01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/lab10gc/example01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/backup/rman/BKP_FULL_ONLINE_LAB                                                                                  10G_740053615_18.rman
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053615_18.rman tag=BKP_FULL_ONLINE
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:15
channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00003 to /u01/app/oracle/oradata/lab10gc/sysaux01.dbf
restoring datafile 00006 to /u01/app/oracle/oradata/lab10gc/cat_rcv_tbs01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053615_17.rman
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053615_17.rman tag=BKP_FULL_ONLINE
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:15
channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/lab10gc/system01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/lab10gc/users01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053615_16.rman
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053615_16.rman tag=BKP_FULL_ONLINE
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:35
Finished restore at 10-JAN-11
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "LAB10GC" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP  1 '/u01/app/oracle/oradata/lab10gc/redo01.dbf' SIZE 50 M ,
  GROUP  2 '/u01/app/oracle/oradata/lab10gc/redo02.dbf' SIZE 50 M ,
  GROUP  3 '/u01/app/oracle/oradata/lab10gc/redo03.dbf' SIZE 50 M
 DATAFILE
  '/u01/app/oracle/oradata/lab10gc/system01.dbf'
 CHARACTER SET WE8ISO8859P1


contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

released channel: ORA_AUX_DISK_1
datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=740054605 filename=/u01/app/oracle/oradata/lab10gc/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=740054605 filename=/u01/app/oracle/oradata/lab10gc/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=740054605 filename=/u01/app/oracle/oradata/lab10gc/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=740054605 filename=/u01/app/oracle/oradata/lab10gc/example01.dbf
datafile 6 switched to datafile copy
input datafile copy recid=5 stamp=740054605 filename=/u01/app/oracle/oradata/lab10gc/cat_rcv_tbs01.dbf

contents of Memory Script:
{
   set until scn  729905;
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script

executing command: SET until clause

Starting recover at 10-JAN-11
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=46 devtype=DISK

starting media recovery

channel ORA_AUX_DISK_1: starting archive log restore to default destination
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=1 sequence=11
channel ORA_AUX_DISK_1: reading from backup piece /u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053666_24.rman
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053666_24.rman tag=BKP_ARCHIVES
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
channel ORA_AUX_DISK_1: starting archive log restore to default destination
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=1 sequence=10
channel ORA_AUX_DISK_1: reading from backup piece /u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053666_23.rman
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u01/backup/rman/BKP_FULL_ONLINE_LAB10G_740053666_23.rman tag=BKP_ARCHIVES
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
archive log filename=/u01/app/oracle/flash_recovery_area/LAB10GC/archivelog/2011_01_10/o1_mf_1_10_6lozqkmw_.arc thread=1 sequence=10
channel clone_default: deleting archive log(s)
archive log filename=/u01/app/oracle/flash_recovery_area/LAB10GC/archivelog/2011_01_10/o1_mf_1_10_6lozqkmw_.arc recid=2 stamp=740054609
archive log filename=/u01/app/oracle/flash_recovery_area/LAB10GC/archivelog/2011_01_10/o1_mf_1_11_6lozqjhq_.arc thread=1 sequence=11
channel clone_default: deleting archive log(s)
archive log filename=/u01/app/oracle/flash_recovery_area/LAB10GC/archivelog/2011_01_10/o1_mf_1_11_6lozqjhq_.arc recid=1 stamp=740054608
media recovery complete, elapsed time: 00:00:03
Finished recover at 10-JAN-11

contents of Memory Script:
{
   shutdown clone;
   startup clone nomount pfile= '/u01/app/oracle/admin/lab10gc/pfile/init.ora';
}
executing Memory Script

database dismounted
Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     423624704 bytes

Fixed Size                     2084424 bytes
Variable Size                121635256 bytes
Database Buffers             293601280 bytes
Redo Buffers                   6303744 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "LAB10GC" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP  1 '/u01/app/oracle/oradata/lab10gc/redo01.dbf' SIZE 50 M ,
  GROUP  2 '/u01/app/oracle/oradata/lab10gc/redo02.dbf' SIZE 50 M ,
  GROUP  3 '/u01/app/oracle/oradata/lab10gc/redo03.dbf' SIZE 50 M
 DATAFILE
  '/u01/app/oracle/oradata/lab10gc/system01.dbf'
 CHARACTER SET WE8ISO8859P1


contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u01/app/oracle/oradata/lab10gc/temp01.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u01/app/oracle/oradata/lab10gc/undotbs01.dbf";
   catalog clone datafilecopy  "/u01/app/oracle/oradata/lab10gc/sysaux01.dbf";
   catalog clone datafilecopy  "/u01/app/oracle/oradata/lab10gc/users01.dbf";
   catalog clone datafilecopy  "/u01/app/oracle/oradata/lab10gc/example01.dbf";
   catalog clone datafilecopy  "/u01/app/oracle/oradata/lab10gc/cat_rcv_tbs01.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed temporary file 1 to /u01/app/oracle/oradata/lab10gc/temp01.dbf in control file

cataloged datafile copy
datafile copy filename=/u01/app/oracle/oradata/lab10gc/undotbs01.dbf recid=1 stamp=740054624

cataloged datafile copy
datafile copy filename=/u01/app/oracle/oradata/lab10gc/sysaux01.dbf recid=2 stamp=740054624

cataloged datafile copy
datafile copy filename=/u01/app/oracle/oradata/lab10gc/users01.dbf recid=3 stamp=740054624

cataloged datafile copy
datafile copy filename=/u01/app/oracle/oradata/lab10gc/example01.dbf recid=4 stamp=740054624

cataloged datafile copy
datafile copy filename=/u01/app/oracle/oradata/lab10gc/cat_rcv_tbs01.dbf recid=5 stamp=740054624

datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=740054624 filename=/u01/app/oracle/oradata/lab10gc/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=740054624 filename=/u01/app/oracle/oradata/lab10gc/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=740054624 filename=/u01/app/oracle/oradata/lab10gc/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=740054624 filename=/u01/app/oracle/oradata/lab10gc/example01.dbf
datafile 6 switched to datafile copy
input datafile copy recid=5 stamp=740054624 filename=/u01/app/oracle/oradata/lab10gc/cat_rcv_tbs01.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 10-JAN-11

RMAN>



Os comando emitidos para essa façanha foram :



Script de Clonagem:
================


connect target sys/manager00@lab10g
connect auxiliary sys/manager00
duplicate target database to lab10gc
pfile=/u01/app/oracle/admin/lab10gc/pfile/init.ora
logfile
'/u01/app/oracle/oradata/lab10gc/redo01.dbf' size 50m,
'/u01/app/oracle/oradata/lab10gc/redo02.dbf' size 50m,
'/u01/app/oracle/oradata/lab10gc/redo03.dbf' size 50m;

Começamos com  uma conexão em nosso banco origem, depois partimos para  a conexão com a base auxiliar que será nosso clone, a seguir é emitido alinha de comando de DUPLICATE seguido pelo arquivos de parametros que será lido de acordo com as edições que fizemos anteriormente e por fim a adição de nossos redolog files.


Bem pessoal, agora nos resta vermos se este Banco esta mesmo no ar, que tal um pequeno "ps -ef|grep pmon", hã?







A imagem acima fala por si só.


Obrigado á todos que me acompanham, espero que tenham gostado de mais essa pequena "brincadeira" com o Oracle.


Abraço e Sucesso sempre á todos.