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.

Foi útil?

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á.

  1. Configurar o SPFILE (você pode remover o arquivo antigo se quiser)
    1. copy [XE_HOME]\dbs\spfileXE.ora [XE_HOME]\dbs\spfileNEW_SID_NAME.ora
    2. copy [XE_HOME]\database\initXE.ora [XE_HOME]\database\initNEW_SID_NAME.ora
    3. Editar [XE_HOME]\database\initNEW_SID_NAME.ora: Deve conter uma única linha como esta: SPFILE='[XE_HOME]\server\dbs/spfileNEW_SID_NAME.ora'
  2. Shutdown e substituir o serviço antigo por um novo:
    1. sqlplus / as sysdba e executar shutdown
    2. lsnrctl stop
    3. oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]\database\initNEW_SID_NAME.ora
    4. oradim -delete -sid XE
    5. lsnrctl start
  3. Atualização da propriedade ambiente ORACLE_SID (Configurações do Sistema> Avançado> Ambiente)
  4. Força Oracle para registrar com ouvinte
    • sqlplus / as sysdba e executar alter 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:

  1. Parar e remover o serviço existente, se houver:

oradim -delete -sid XE

  1. Parar o ouvinte
  2. Configurar o SPFILE como explica Johannes
  3. Faça uma cópia do XE.bat script, você pode nomeá-lo o que quiser
  4. Editar a cópia do script da seguinte forma:

    1. Altere a linha "set ORACLE_SID = XE" para "set ORACLE_SID = NEW_SID_NAME"
    2. Alterar onde quer que você veja "XE -sid" para "NEW_SID_NAME -sid"
    3. 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
    4. 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 ...)
  5. 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 !!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top