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
$ 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
Comentários