Mudando o nome do Banco de Dados no Oracle
Fala Pessoal
Em alguma hora da sua vida de DBA alguém vai levantar a hipótese, ou solicitar ou exigir a mudança do nome do banco de dados, ou em outras palavras a sua ORACLE_SID vai mudar, rs. E aconteceu comigo, precisei mudar o nome de dois bancos no ambiente de homologação, e pra fazer isso usei o DBNEWID ,vou explicar como fiz esse procedimento, que na maioria dos outros SGBDs seria muito mais simples.
OBS_1:Antes de começar certifique-se de que você tem um backup do banco de dados inteiro, afinal como diria Hermes e Renato, “Merdas acontecem”.
Efetue o shutdown do banco e depois apenas monte o banco, não abra.
SQL> SHUDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
Agora va para o prompt(windows) ou console(linux) e execute o DBNEWID (nid) especificando o novo DBNAME(Nome do banco de dados) na linha de comando utilizando um usuário com privilégios SYSDBA, conforme o exemplo abaixo:
OBS2: Estou considerando que se você esta em um ambiente linux, todas as variavéis de ambiente estão corretamente setadas ou exportadas.
$ nid TARGET=SYS/XXXX@HTAJ DBNAME=RAMOS SETNAME=YES
O utilitário DBNEWID executa validações nos cabeçalhos dos arquivos de dados e arquivos de controle. Se a validação for bem sucedida, então DBNEWID solicita para você confirmar a operação.
DBNEWID: Release 11.1.0.6.0 - Production on Qui mar 1 17:57:02 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to database HTAJ (DBID=2627274358)
Connected to server version 10.2.0
Control Files in Database:
D:\U01\APP\HSANTOS\ORADATA\HTAJ\CONTROL01.CTL,
D:\U01\APP\HSANTOS\ORADATA\HTAJ\CONTROL02.CTL, D:\U01\APP\HSANTOS\ORADATA\HTAJ\CONTROL03.CTL
Change database ID and database name HTAJ to RAMOS? (S/[N]) => Y
Proceeding with operation
Changing database ID from 2627274358 to 7627274658
Changing database name from HTAJ to RAMOS Control File D:\U01\APP\HSANTOS\ORADATA\RAMOS\CONTROL01.CTL - modified Control File D:\U01\APP\HSANTOS\ORADATA\RAMOS\CONTROL02.CTL - modified Control File D:\U01\APP\HSANTOS\ORADATA\RAMOS\CONTROL03.CTL - modified Datafile D:\U01\APP\HSANTOS\ORADATA\HTAJ\SYSTEM01.DBF - dbid changed, wrote new name Datafile D:\U01\APP\HSANTOS\ORADATA\HTAJ\UNDOTBS01.DBF - dbid changed, wrote new name Datafile D:\U01\APP\HSANTOS\ORADATA\HTAJ\SYSAUX01.DBF - dbid changed, wrote new name Datafile D:\U01\APP\HSANTOS\ORADATA\HTAJ\USERS01.DBF - dbid changed, wrote new name Datafile D:\U01\APP\HSANTOS\ORADATA\HTAJ\TEMP01.DBF - dbid changed, wrote new name Control File D:\U01\APP\HSANTOS\ORADATA\RAMOS\CONTROL01.CTL - dbid changed, wrote new name Control File D:\U01\APP\HSANTOS\ORADATA\RAMOS\CONTROL02.CTL - dbid changed, wrote new name Control File D:\U01\APP\HSANTOS\ORADATA\RAMOS\CONTROL03.CTL - dbid changed, wrote new name
Instance shut down
Database name changed to RAMOS.
Modify parameter file and generate a new password file before restarting.
Database ID for database RAMOS changed to 7627274658
All previous backups and archived redo logs for this database are unusable.
Database is not aware of previous backups and archived logs in Recovery Area.
Database has been shutdown, open database with RESETLOGS option.
Successfully changed database name and ID.
DBNEWID - Completed successfully.
Caso o DBNEWID não tenha efetuado o shutdown do banco, logue com o sql plus e pare o banco.
SQL> SHUDOWN IMMEDIATE;
Altere o parâmetro de inicialização DB_NAME no arquivo de parâmetro de inicialização (PFILE) para o nome novo banco de dados.
SQL> STARTUP MOUNT;
SQL > ALTER SYSTEM SET DB_NAME=RAMOS SCOPE=spfile;
SQL> SHUDOWN IMMEDIATE;
Agora vamos subir o banco de dados, não precisamos usar a RESETLOGS.
SQL> STARTUP OPEN;
SQL> SHOW PARAMETER DB_NAME
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string RAMOS
Agora como o seguro morreu de velho, backup do banco de novo.
Bem assim eu mudei o nome dos bancos de homologação, aqui na empresa já tem 2 meses e até agora tudo tranqüilo e calmo.Eu segui os procedimentos do link abaixo, quem quiser maiores informações é só clicar, Abraços!!!!.
OBS3: Não se esqueça que as entradas no tnsnames vão ter que ser alteradas, o listener o DBNEWID altera automaticamente
Fonte
- http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14215/dbnewid.htm
- http://www.oracle-base.com/articles/9i/DBNEWID.php
Olá Hudson, realmente esse utilitário é muito interessante, acho que a grande “graça” dele é realmente alterar o DBID que é muito importante em ambientes RMAN. testei e funcionou legal, ótimo artigo.
Abraço
Fala Rodrigo,
Sim por ele executar várias tarefas automaticamente incluindo a alteração do DBID ele é muito interessante, caso tivessemos de alterar tudo sozinho na mão, a chance de erros ia ser muito maior.
Abraço!
É possível alterar apenas o nome também, sem alterar o DBID, é mais simples um pouco, bacana cara, valeu
Eu não conheço esse método, mas legal também
Abraços!