it-swarm.it

Posso modificare il SID di un database Oracle?

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

18
bernd_k

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/[email protected] dbname=newname setname=YES
    
  • 3 arresto e avvio del database in modalità montaggio:

    shutdown immediate
    startup mount
    
  • 4 cambio db_name in spfile (o nel file 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
    
13
Andrey Goryunov

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

17

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.

Pertanto, 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 usando $ {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.

9
ik_zelf