Posso cambiare il SID di un database Oracle?
-
16-10-2019 - |
Domanda
Il server è Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit
C'è un modo semplice e veloce per modificare i SID dei database di test sul server?
& Dropping ricreando del database è un'opzione per me. Ma io sto cercando qualcosa che richiede meno tempo.
L'altra opzione per i nomi assegnare dei clienti tnsnames.ora è soggetto a errori, perché non sono amministrati centralmente.
In confronto con il tempo di cadere e creare un database in SQL-Server, la quantità di tempo necessario per creare un nuovo database Oracle è eccessivamente grande. Più avanti SQL-Server è possibile rinominare istanze di SQL-Server. [Di solito si rinominare il server in cui SQL-Server è in esecuzione e avere qualche problema fino a quando si rinomina il server troppo].
Soluzione
Dal 9i utilità dbnewid (NID) può essere utilizzato per cambiare il nome del database (E DBID se necessario). Se il nome del database viene modificato solo allora RESETLOGS non è necessaria:
-
1 database di avvio in modalità mount
shutdown immediate startup mount
-
2 run nid al cambio di nome del database:
nid target=sys/syspassword@dbtns dbname=newname setname=YES
-
3 arresto e iniziare a database in modalità di montaggio:
shutdown immediate startup mount
-
4 cambiamento
db_name
in spfile (o in pfile modificando il file):alter system set db_name=newname scope=spfile;
-
file delle password 5 Ricrea:
orapwd file=orapwnewname password=syspassword
-
6 di avvio del database
startup
-
7 passi pubblicare Rinomina:
change SID in listener.ora correct tnsnames.ora remove old trace directories change /etc/oratab (UNIX) or rename windows service using oradim
Altri suggerimenti
È necessario ricreare il file di controllo
messaggio da Kaunain Ahmed descrive i passi necessari:
- fare: Alter control, backup del database alla traccia;
- estrarre il comando "creare control" dal background-discarica-destinazione tracefile.
- spegnere il DB.
- Modificare il DB-nome nella init.ora e cambiare il init.ora
- Cambia il SID nel file / etc / oratab o / var / opt / oracle / oratab
- Cambia il SID nel proprio ambiente e la fonte è
- Avvio del database per montare-status startup mount
- ricreare il control con l'istruzione dalla posizione 2.
- un alter global_name banca dati Rinomina per 10.Modificare il TNS-configurazione di conseguenza $ ORACLE_HOME / network / admin / *. Ora Cercare SID e global_name
Ci sono altri strumenti di cui si fa riferimento nel thread.
Ecco un inviare da AskTom che fa riferimento al processo in modo più dettagliato. Mentre è di 10g, si deve ancora lavorare.
Sì, è possibile ed è abbastanza facile anche.
In Oracle, l'ORACLE_SID è solo il nome per l'istanza Oracle e non ha molto a che fare con la DBNAME. Un database con il nome PROD, può essere servita utilizzando istanze con qualsiasi nome valido. Non v'è alcun collegamento diretto tra il SID e il DBNAME. Questo collegamento viene effettuato utilizzando i parametri.
Il file dei parametri è identificato come init $ {ORACLE_SID} .ora o SPFILE $ {ORACLE_SID} .ora nel file dei parametri è il parametro db_name. Questo è dove viene fatto il collegamento tra l'istanza Oracle e il database.
Quindi, non c'è bisogno di ri-creare una control, non è necessario per l'uso nid, basta assicurarsi che il vostro parameterfile ha il nome giusto, abbattere la vecchia istanza Oracle e iniziare la nuova istanza Oracle dopo aver impostato ORACLE_SID per il nuovo nome istanza Oracle. Il parameterfile e il file delle password sono entrambi trovati usando i $ {ORACLE_SID} come parte del loro nome.
Ricreare il control è necessaria solo quando il DBNAME deve cambiare. nid è necessario dopo un'operazione di clonazione in cui è necessario cambiare il DBID per prevenire incidenti che potrebbero danneggiare i backup del database di origine.