Seja por precisarmos de mudar de servidor, ou por querermos ter uma réplica da base de dados de produção para testes, o certo é que, às vezes temos necessidade de copiar/duplicar uma base de dados oracle.
Como fazer?
1.º passo:
Para mim o mais importante é garantir que antes de fazer o que quer que seja têm uma cópia de segurança actualizada da base de dados que querem copiar/clonar.
2.º passo:
Efectuar o login, na base de dados que queremos copiar, como SYSDBA utilizando o SQL+ e correr o seguinte comando:
alter d_atabase backup controlfile to trace;
Este comando vai criar um ficheiro com os comandos necessários para criar a base de dados.
Se não souber qual é a directoria onde são guardados os ficheiros, pode abrir o ficheiro init.ora e ver o parametro: user_dump_dest
O ficheiro gerado será semelhante a:
... STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "BD_PRODUCAO" NORESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 2 MAXDATAFILES 240 MAXINSTANCES 1 MAXLOGHISTORY 113 LOGFILE GROUP 1 'D:\ORACLE\ORADATA\BD_PRODUCAO\REDO01.LOG' SIZE 10M, GROUP 2 'D:\ORACLE\ORADATA\BD_PRODUCAO\REDO02.LOG' SIZE 10M, -- STANDBY LOGFILE DATAFILE 'D:\ORACLE\ORADATA\BD_PRODUCAO\SYSTEM01.DBF', 'D:\ORACLE\ORADATA\BD_PRODUCAO\MYDATABSE.DBF' ; # Recovery is required if any of the datafiles are restored # backups, or if the last shutdown was not normal or immediate. RECOVER D_ATABASE # Database can now be opened normally. ALTER D_ATABASE OPEN;
3.º passo:
Fazer o shutdown da base de dados em produção
shutdown immediate
4.º passo:
Copiar os ficheiros da base de dados de produção para a nova localização.
5.º passo:
Alterar o control file (ficheiro criado no 2.º passo).
As alterações a efectuar são:
- Remover todo o conteúdo do ficheiro até à linha onde está escrito “STARTUP NO MOUNT”;
- Onde está: CREATE CONTROLFILE REUSE DATABASE “BD_PRODUCAO” NORESETLOGS
Deve passar a estar: CREATE CONTROLFILE SET DATABASE “BD_REPLICA” RESETLOGS - Remover os comandos recover d_atabase e alter d_atabase open;
# Recovery is required if any of the datafiles are restored # backups, or if the last shutdown was not normal or immediate. RECOVER D_ATABASE # Database can now be opened normally. ALTER D_ATABASE OPEN;
- Corrigir os caminhos para os novos ficheiros de dados.
Neste caso vamos partir do principio que apenas estamos a criar uma réplica da BD e não a muda-la de servidor.
Onde está: D:\ORACLE\ORADATA\BD_PRODUCAO\
Deve estar: D:\ORACLE\ORADATA\BD_REPLICA\
Devem fazer o mesmo para os LOG FILES; - Guardar as alterações criadas com o nome “novadb_create_controlfile“
6.º passo:
Criar um novo ficheiro INIT.ORA para a nova base de dados.
Para isso o mais simples é copiar o ficheiro da base e dados em produção para um novo.
Exemplo: copiar o “initBD_PRODUCAO.ora” para “initBD_REPLICA.ora”
Devem ter em atenção que é necessário alterar o conteúdo do novo ficheiro(initBD_REPLICA.ora), nomeadamente os parametros:
* audit_file_dest * background_dump_dest * control_files * core_dump_dest * log_archive_dest * user_dump_dest
convém verificar se existe mais algum parâmetro que faça referência à base de dados antiga.
7.º passo:
Copiar o ficheiro de passwords (orapwd) para a nova localização.
8.º passo:
Iniciar a nova base de dados:
@novadb_create_controlfile
9.º passo:
Colocar a nova base de dados em modo ArchiveLog:
FIM!
PS: não se esqueçam de meter a base de dados produção em cima!


