Posso modificare il SID di un database Oracle?


18

Il server è Oracle Database 11g Enterprise Edition versione 11.1.0.7.0 - 64 bit

Esiste un modo semplice e rapido per modificare i SID dei database di test sul server?

Eliminare e ricreare il database è un'opzione per me. Ma sto cercando qualcosa che richieda meno tempo.

L'altra opzione per assegnare nomi nei client tnsnames.ora è soggetta a errori, perché non sono amministrati centralmente.

Rispetto al tempo di rilascio e creazione di un database su SQL Server, il tempo necessario per creare un nuovo database Oracle è eccessivamente maggiore. Inoltre su SQL Server è possibile rinominare le istanze di SQL Server. [Di solito si rinomina il server su cui è in esecuzione SQL Server e si riscontrano alcuni problemi fino a quando non si rinomina anche il server].


Si dice che è possibile eliminare e ricreare i database. Hai accesso al database di produzione e ai suoi backup? È possibile utilizzare RMAN e il comando duplicato per ricreare il database e modificare SID contemporaneamente.
Sumnibot,

No, lavoro come DBA per i database Oracle di sviluppo e alcuni test.
bernd_k,

2
Quando si utilizza un database in SQL Server, in genere si utilizza uno schema (= utente) in Oracle. Lo stesso nome non significa la stessa cosa in quei due mondi
a_horse_with_no_name

Risposte:


13

Poiché l'utilità 9i dbnewid (nid) può essere utilizzata per modificare il nome del database (e DBID, se necessario). Se il nome del database viene modificato solo, resetlogs non è richiesto:

  • 1 database di avvio in modalità mount

    shutdown immediate
    startup mount
  • 2 esegui nid per modificare il nome del database:

    nid target=sys/syspassword@dbtns dbname=newname setname=YES
  • 3 arresto e avvio del database in modalità montaggio:

    shutdown immediate
    startup mount
  • 4 modifica db_namein spfile (o in pfile che modifica il file):

    alter system set db_name=newname scope=spfile;
  • 5 ricrea file password:

    orapwd file=orapwnewname password=syspassword
  • 6 avviare il database

    startup
  • 7 passaggi post rinomina:

    change SID in listener.ora
    correct tnsnames.ora
    remove old trace directories
    change /etc/oratab (UNIX) or rename windows service using oradim

1
In questo modo ho rinominato 4 database Oracle su un server Windows. Cercando l' utilità dbnewid ho trovato oracle-base.com/articles/9i/DBNEWID.php che ha fornito ulteriori spiegazioni.
bernd_k,

1
questa è una buona risposta quando la domanda era: come rinominare un database. La domanda è: come modificare un SID.
ik_zelf,

17

È necessario ricreare il file di controllo

Questo post di Kaunain Ahmed descrive i passaggi necessari:

  1. do: modifica il file di controllo del backup del database per tracciarlo;
  2. estrarre il comando "crea controlfile" dal file di traccia background-dump-destination.
  3. spegnere il DB.
  4. Cambia il DB-Name in init.ora e cambia init.ora
  5. Modificare il SID in / etc / oratab o / var / opt / oracle / oratab
  6. Modifica il SID nel tuo ambiente e procuralo
  7. Avviare il database per montare lo stato avvio mount
  8. Ricreare il file di controllo con l'istruzione dalla posizione 2.
  9. Fare un database alterare rinominare global_name in 10.Cambiare la configurazione TNS di conseguenza $ ORACLE_HOME / network / admin / *. Ora Cercare SID e GLOBAL_NAME

Esistono altri strumenti a cui si fa riferimento nel thread.

Ecco un post di AskTom che fa riferimento al processo in modo più dettagliato. Mentre è per 10 g, dovrebbe ancora funzionare.


5
Da notare per gli utenti di Windows, sarà inoltre necessario utilizzare l'utilità "oradim" per configurare il nuovo servizio.
REW,

9

Sì, puoi ed è anche abbastanza facile.

In Oracle, ORACLE_SID è solo il nome dell'istanza Oracle e non ha molto a che fare con DBNAME. Un database con il nome PROD, può essere servito usando Istanze con qualsiasi nome valido. Non esiste una connessione diretta tra SID e DBNAME. Questa connessione viene effettuata utilizzando i parametri.

Il file dei parametri è identificato come init $ {ORACLE_SID} .ora o spfile $ {ORACLE_SID} .ora Nel file dei parametri è il parametro nome_db. È qui che viene stabilita la connessione tra l'istanza Oracle e il database.

Quindi, non è necessario ricreare un file di controllo, non è necessario utilizzare nid, è sufficiente assicurarsi che il file di parametri abbia il nome corretto, eliminare la vecchia istanza Oracle e avviare la nuova istanza Oracle dopo aver impostato ORACLE_SID al nuovo nome dell'istanza Oracle. Il file dei parametri e il file della password si trovano entrambi utilizzando $ {ORACLE_SID} come parte del loro nome.

Ricreare il file di controllo è necessario solo quando DBNAME deve cambiare. nid è necessario dopo un'operazione di clonazione in cui è necessario modificare il DBID per evitare incidenti che potrebbero danneggiare i backup del database di origine.


+1 Ma non sono ancora sicuro di voler cambiare anche DB_NAME.
bernd_k,

Se vuoi: certo, puoi, le altre risposte spiegano correttamente come farlo. Per quale motivo lo faresti? Db_name è molto fisico. Conoscere il nome_db è buono per un dba ma per la maggior parte degli altri è irrilevante. In un normale approccio consolidato hai un database che serve molti servizi. Un servizio - applicazione - non dovrebbe avere bisogno di preoccuparsi di quale database stia funzionando.
ik_zelf,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.