Levando em conta que ja temos um banco de dados ORCL, vamos criar um banco clone com as mesmas tablespaces no mesmo servidor.

$ cd /u01

$ mkdir bdo$ export ORACLE_SID=orcl
$ sqlplus / as sysdba

Antes de executar este comando o ideal é procurar a area de dump.
sql> show parameter user_dump
logo em seguida apago o conteudo para que nao tenha nenhum outro arquivo,
assim
SQL> host rm /u01/app/oracle/admin/orcl/udump/*

SQL> alter database backup controlfile to trace;

Executar 3 vezes o comando porque demora um pouco a gerar o trace, assim é mais rapido, em compensacao ira gerar 3 entradas as vezes no mesmo arquivo de trace mas isso nao causa nenhum transtorno. Algumas vezes tem que tentar varias e varias vezes, sair do sqlplus ou executar o commit…

–Antes de fechar banco original
Executar agora a troca do arquivo de redo log online, para evitar perdas de informacoes.

SQL> select group#, status from v$log;

GROUP# STATUS
———- —————-
1 INACTIVE
2 INACTIVE
3 CURRENT

SQL> alter system switch logfile;
SQL> alter system checkpoint;

SQL> show parameter user_dump

NAME TYPE VALUE
———————————— ———– ——————————
user_dump_dest string /u01/app/oracle/admin/orcl/udu
mp

Pegar o último trace para ser usado mais a frente para criar o arquivo de controle.
Ainda nao iremos editar o arquivo, somente geramos e confirmamos que dentro do arquivo de trace gerado contem instrucoes para se recriar o novo arquivo de controle. Continue nas proximas instrucoes.

SQL> host ls /u01/app/oracle/admin/orcl/udump/*

O arquivo é listado.

SQL> host gedit /u01/app/oracle/admin/orcl/udump/orcl_ora_6209.trc

Ok, o arquivo foi criado !

Agora crie um arquivo texto a partir do spfile (binario), este arquivo contera todas
as informacoes sobre os parametros:

SQL> create pfile=’/u01/bdo/init.ora’ from spfile;
Mostre a localizacao atual dos seus datafiles.
SQL> select name from v$datafile;
Interrompa o banco de dados de producao.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit;

Alterar o arquivo de inicializacao /u01/bdo/init.ora

Mudar instance_name e bd_name para bdo e todas as entradas que estiverem como orcl para bdo e tambem as devidas pastas. O que estiver como orcl.__ pode ser removido isso é criado pelo gerenciamento automatico de memoria. Alterar também dump_dest, background e core_dump_dest, audit, control_files, a flash_recovery_area que é o parametro db_recovery_file_dest

Crie as pastas para os diretorios:
— mkdir back bdump
— mkdir core cdump
— mkdir user udump
— mkdir audit adump
Como o comando abaixo:
no prompt do sistema operacional crie as pastas abaixo:

mkdir /u01/bdo/bdump -p
mkdir /u01/bdo/cdump -p
mkdir /u01/bdo/udump -p
mkdir /u01/bdo/adump -p
mkdir /u01/bdo/flash_recovery_area -p

Copiar só os datafiles originais para debaixo da pasta /u01/bdo
Com os comandos cp ou copy do sistema operacional, lembrado que o banco de producao deve estar fechado, ou copia sera invalida.
cp $ORADATA/*.dbf /u01/bdo

Se a base de dados estiver em ASM temos que fazer o backup e
restaurar como no exemplo:

export ORACLE_SID=bdo

sqlplus / as sysdba

SQL> startup nomount pfile=’/u01/bdo/init.ora’

Se der algum problema edite novamente o arquivo init.ora e remova os problemas/acerte os parametros.

Pegue o arquivo de trace e extraia o Set #2 para criar o arquivo de controle.
O que se tem que fazer é remover o texto anterior ao Set #2 e o posterior a finalizacao do comando de recriar o arquivo de contole que finaliza em CHARACTER SET WE8ISO8859P1 ;

Como o exemplo abaixo, o que tem que sobrar da sua edicao do arquivo de trace é o texto similar ao abaixo:

— Set #2. RESETLOGS case — –

Crie um sql a partir do trace, que foi gerado com o comando alter database backup controlfile to trace e salvar como sql (init.sql)

Trocar o REUSE por set

#####################################################
Exemplo de script para recriar o arquivo de controle abaixo:
#####################################################

CREATE CONTROLFILE set database “bdo” RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (
‘/u01/bdo/redo01.log’,
‘/u01/bdo/redo01b.log’
) SIZE 50M,
GROUP 2 (
‘/u01/bdo/redo02.log’,
‘/u01/bdo/redo02b.log’
) SIZE 50M,
GROUP 3 (
‘/u01/bdo/redo03.log’,
‘/u01/bdo/redo03b.log’
) SIZE 50M
— STANDBY LOGFILE
DATAFILE
‘/u01/bdo/system01.dbf’,
‘/u01/bdo/undotbs01.dbf’,
‘/u01/bdo/sysaux01.dbf’
CHARACTER SET WE8ISO8859P1 ;
#####################################################

Rode o comando, o banco bdo esta nomount.

sqlplus / as sysdba

SQL> @/u01/bdo/init.sql ;

SQL> alter database mount;

SQL> alter database open resetlogs;

criar o arquivo temp;
SQL> alter tablespace temp add tempfile ‘/u01/bdo/temp01.dbf’ size 100M;

SQL> exit;

Crie o arquivo de senhas:

orapwd file=$ORACLE_HOME/dbs/orapwbdo password=oracle entries=5

Mostrar o listener para verificar se o banco esta registrando o servico dinamicamente.

lsnrctl start
lsnrctl services

Confirme se o servico foi registrado, senao registre estaticamente via netmgr.

Recrie o dbcontrol.

emca -repos recreate

emca -config dbcontrol db

emctl start dbconsole