Domanda Come posso modificare il SID di un'istanza Oracle XE


Avevo bisogno di cambiare il SID di un database Oracle XE (non il nome del servizio) per abbinare un database di produzione.

Quando ho provato a cercare online, la maggior parte delle pagine descrivevano il cambiamento o l'aggiunta di un nome di servizio tramite tnsnames.ora; non è quello che dovevo fare.


11
2018-01-04 13:04


origine


risposte:


Il asktom l'articolo ha la risposta, ma la formattazione e la verbosità rendono difficile seguire, quindi ecco un riassunto:

[XE_HOME] indica dove è installato Oracle XE. Normalmente questo è C:\oraclexe\app\oracle\product\10.2.0\server.

Assicurati di avere i privilegi di amministratore o la procedura avrà esito negativo.

  1. Configura SPFILE (puoi rimuovere il vecchio file se lo desideri)
    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. modificare [XE_HOME]\database\initNEW_SID_NAME.ora: Dovrebbe contenere una singola riga come questa: SPFILE='[XE_HOME]\server\dbs/spfileNEW_SID_NAME.ora'
  2. Spegni e sostituisci il vecchio servizio con un nuovo:
    1. sqlplus / as sysdba ed esegui 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. Aggiorna la proprietà dell'ambiente ORACLE_SID (Impostazioni di sistema> Avanzate> Ambiente)
  4. Forza Oracle per registrarsi con l'ascoltatore
    • sqlplus / as sysdba ed esegui alter system register;

È possibile verificare che il SID sia stato modificato eseguendo la seguente query: select instance_name from v$instance;


12
2017-08-06 14:08



Asktom ha la risposta, Ho dovuto fare un sacco di google-fu per arrivarci.


4
2018-01-04 13:05



Ho avuto alcuni problemi con la soluzione pubblicata da Johannes, quindi ho dovuto fare alcuni passi extra. Quando si tenta di connettersi a Oracle (passaggio 4) facendo sqlplus / as sysdba Ho ottenuto:

ERROR: ORA-12560: TNS:protocol adapter error

La soluzione per questo stava eseguendo la seguente riga:

oradim -start -sid NEW_SID_NAME

Quindi collegarmi con / ha funzionato bene, ma provare a connettermi a NEW_SID_NAME con sistema o HR mi ha dato un altro problema:

ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

L'ho verificato con la query select instance_name from v$instance; che l'ascoltatore sarebbe NEW_SID_NAME, e così ha fatto. Ma correre lsnrctl status nella riga di comando o nell'interrogazione select name from dba_services; non ha mostrato NEW_SID_NAME come listener. La soluzione di questo problema era l'esecuzione della seguente frase su sqlplus:

alter system set service_names='NEW_SID_NAME';

Forse avrai bisogno di eseguire alter system register; dopo anche questo.

Dopo aver eseguito questa procedura, posso collegarmi a NEW_SID_NAME con sistema e risorse umane.

Spero che sia d'aiuto


2
2017-12-05 13:57



Nella versione 11g, tutte le soluzioni precedenti non funzionavano ... Ricevo sempre il seguente errore quando provo a fare il sqlplus / as sysdba :

ERRORE: ORA-12560: TNS: errore dell'adattatore del protocollo

Fortunatamente ho trovato uno script per fare ciò che volevo fare sotto [XE_HOME] \ config \ scripts. Lo script è denominato XE.bat e istanzia un nuovo database da zero chiedendo la password sys lungo il processo. Quindi quello che ho fatto è stato:

  1. Arresta e rimuovi il servizio esistente, se presente:

oradim -delete -sid XE

  1. Ferma l'ascoltatore
  2. Configura SPFILE come spiegato da Johannes
  3. Crea una copia dello script XE.bat, puoi chiamarlo come vuoi
  4. Modifica la copia dello script come segue:

    1. Cambia riga "imposta ORACLE_SID = XE" su "imposta ORACLE_SID = NEW_SID_NAME"
    2. Cambia dove vuoi vedere "-sid XE" in "-sid NEW_SID_NAME"
    3. Aggiorna la riga in cui chiama il comando "orapwd.exe" per selezionare un file denominato PWDNEW_SID_NAME.ora anziché PWDXE.ora
    4. Aggiorna la riga che echos lo spfileXE.ora nel initXE.ora per echo spfileNEW_SID_NAME.ora in initNEW_SID_NAME.ora (questa parte potrebbe rendere inutile il passaggio 3 ma preferisco farlo comunque, nel caso ...)
  5. Esegui lo script ... Ti verrà chiesto alcune volte la password di SISTEMA

Inserisci il valore per 1:

o

Inserisci il valore per 2:

È tutto, il nuovo database con il tuo NEW_SID_NAME è attivo e funzionante !!


0
2018-03-16 21:39