Como posso alterar o SID de uma instância Oracle XE
-
03-07-2019 - |
Pergunta
Eu precisava mudar o SID de um banco de dados Oracle XE (não o Name Service) para coincidir com um banco de dados de produção.
Quando eu tentei pesquisa on-line, a maioria das páginas estavam descrevendo alteração ou adição de um nome de serviço através tnsnames.ora; não é isso que eu precisava fazer.
Solução
O AskTom artigo tem a resposta, mas a verbosidade formatação e faz com que seja difícil de seguir, então aqui está um resumo:
[XE_HOME] meios onde o Oracle XE está instalado. Normalmente este é C:\oraclexe\app\oracle\product\10.2.0\server
.
Verifique se você tem privilégios de administrador ou o procedimento falhará.
- Configurar o SPFILE (você pode remover o arquivo antigo se quiser)
-
copy [XE_HOME]\dbs\spfileXE.ora [XE_HOME]\dbs\spfileNEW_SID_NAME.ora
-
copy [XE_HOME]\database\initXE.ora [XE_HOME]\database\initNEW_SID_NAME.ora
- Editar
[XE_HOME]\database\initNEW_SID_NAME.ora
: Deve conter uma única linha como esta:SPFILE='[XE_HOME]\server\dbs/spfileNEW_SID_NAME.ora'
-
- Shutdown e substituir o serviço antigo por um novo:
-
sqlplus / as sysdba
e executarshutdown
-
lsnrctl stop
-
oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]\database\initNEW_SID_NAME.ora
-
oradim -delete -sid XE
-
lsnrctl start
-
- Atualização da propriedade ambiente ORACLE_SID (Configurações do Sistema> Avançado> Ambiente)
- Força Oracle para registrar com ouvinte
-
sqlplus / as sysdba
e executaralter system register;
-
Você pode verificar se o SID foi alterado executando a seguinte consulta: select instance_name from v$instance;
Outras dicas
AskTom tem a resposta , eu tive que passar por um monte de google-fu para chegar a ela.
Eu tive alguns problemas com a solução postado por Johannes, então eu tive que fazer alguns passos extras. Ao tentar se conectar ao Oracle (passo 4), fazendo sqlplus / as sysdba eu tenho:
ERROR: ORA-12560: TNS:protocol adapter error
A solução para este estava executando a seguinte linha:
oradim -start -sid NEW_SID_NAME
Em seguida, conectar-se com / bem trabalhado, mas tentando se conectar a NEW_SID_NAME com o sistema ou o RH me tem outro problema:
ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Eu verifiquei que com a select instance_name from v$instance;
consulta que o ouvinte seria NEW_SID_NAME, e assim o fez. Mas correr lsnrctl status
na linha de comando ou consultar select name from dba_services;
não mostrou NEW_SID_NAME como ouvinte.
A solução deste problema foi executar a sentença followind em sqlplus:
alter system set service_names='NEW_SID_NAME';
Talvez você precisa executar alter system register;
após isso também.
Depois de fazer isso duas etapas I pode se conectar à NEW_SID_NAME com o sistema e RH.
Hope isso ajuda
Na versão 11g, toda a solução anterior não funcionou ... Eu sempre obter o seguinte erro ao tentar fazer o sqlplus / as sysdba :
ERRO: ORA-12560: TNS: protocolo de erro adaptador
Felizmente eu encontrei um script para fazer o que eu queria fazer em [XE_HOME] \ config \ scripts. O script é chamado XE.bat e vai instanciar um novo banco de dados a partir do zero a pedir-lhe para o syspassword ao longo do processo. Então o que eu fiz foi:
- Parar e remover o serviço existente, se houver:
oradim -delete -sid XE
- Parar o ouvinte
- Configurar o SPFILE como explica Johannes
- Faça uma cópia do XE.bat script, você pode nomeá-lo o que quiser
-
Editar a cópia do script da seguinte forma:
- Altere a linha "set ORACLE_SID = XE" para "set ORACLE_SID = NEW_SID_NAME"
- Alterar onde quer que você veja "XE -sid" para "NEW_SID_NAME -sid"
- Atualização da linha onde ele chama o comando "orapwd.exe" para apontar para um arquivo chamado PWDNEW_SID_NAME.ora vez de PWDXE.ora
- Atualização da linha que ecos da spfileXE.ora para o initXE.ora ecoar spfileNEW_SID_NAME.ora em initNEW_SID_NAME.ora (esta parte pode tornar o passo 3 inútil, mas eu prefiro fazê-lo de qualquer maneira, apenas no caso ...)
-
Execute o script ... Ele irá solicitar a senha do sistema algumas vezes dizendo
Insira o valor para 1:
ou
Insira o valor para 2:
É isso, o novo banco de dados com o seu NEW_SID_NAME está instalado e funcionando !!