Modifica di un nome di database utilizzando NEWID

House of Brick Senior Consultant

Uno dei tanti compiti che un DBA eseguirà è la clonazione di un database. Di solito questo viene fatto da un database di produzione a un database di garanzia della qualità o di test per fornire dati sul volume di produzione. Se il database si trova su una macchina virtuale, la clonazione potrebbe avvenire a livello di VM.

La clonazione fa esattamente ciò che significa, creando un duplicato esatto di un database. Sfortunatamente, questo finisce con l’avere due database con lo stesso nome e DBID nella tua rete. A volte è possibile risolverlo sufficientemente con l’aliasing a livello di TNSNAMES.

Altre volte, sarà necessario modificare il nome del database e il DBID internamente. Oracle ha un’utilità per questo, l’applicazione NEWID.

Questo documento descrive in dettaglio i passaggi necessari per eseguire la modifica del nome del database utilizzando NEWID.

Terminologia e definizioni

In questo documento verranno utilizzate la seguente terminologia e definizioni.

SID – Identificatore del sito Oracle. Questo è il nome del database che viene modificato.
File di parametri PFILE – Oracle. Situato nella cartella OR ORACLE_HOME/dbs.
SPFILE-File dei parametri del server Oracle. Si trova anche nella cartella OR ORACLE_HOME/dbs.
ORATAB-File di configurazione Oracle che associa i SID Oracle a Oracle homes. Situato a / etc / oratab.
TNSNAMES – File di configurazione di rete Oracle che associa le connessioni in entrata con Oracle SID. Situato nella cartella OR ORACLE_HOME/network/admin.

Nome del database
Il nome del database, o SID, viene modificato da prd a qa. Questo verrà fatto riferimento quando appropriato nel documento.

Panoramica del processo
Ci sono quattro passaggi da eseguire per modificare un nome di database Oracle (SID).

  1. Lavoro preliminare di preparazione
  2. Utilizzare l’applicazione NID
  3. Modificare i riferimenti SID
  4. Avviare il database e finalizzare le modifiche

1. Lavoro di preparazione preliminare

Dopo la modifica del nome del database, sarà necessario apportare modifiche al file dei parametri Oracle. Se il database utilizza un file di parametri del server (SPFILE) invece di un file di parametri (PFILE), sarà necessario convertire da un file SPF in un file PFILE prima che si verifichi la modifica del nome del database.

1.1 Determinare se SPFILE è in Uso
Eseguire la seguente query per vedere se il database è stato avviato con una PFILE o SPFILE:

Figura 1.1 Query per vedere se SPFILE è in uso

SQL> SELEZIONARE DECODE(valore, NULL, ‘PFILE’, ‘SPFILE’) “Init Tipo di File
“DA sys.v_ parameter parametro DOVE name = ‘spfile’;

Eseguire questa query per determinare se il database inizia con un file PFILE o SPFILE.

Se il database inizia con un PFILE, non sono necessari ulteriori lavori di preparazione e si può procedere al passaggio 2-Utilizzare l’applicazione NID. Altrimenti, continua con il passaggio successivo.

1.2 Creazione di un file PFILE da SPFILE
Eseguire il seguente sql per creare un file PFILE da un file SPFILE:

Figura 1.2 Creazione di un file PFILE da SPFILE.

SQL >crea file pfile da spfile;

Esegui questo comando per creare un file PFILE da un file SPFILE.

Questo creerà un file PFILE nella directory OR ORACLE_HOME/dbs. Userà il SID corrente nel nome. Poiché il SID corrente del database è prd, il nome sarà initprd.ora. Copia il file per avere il nuovo SID nel suo nome. Per questo esempio, il nuovo nome sarebbe initqa.ora. Vedere Figura 1.3 per un esempio di copia del file.

Figura 1.3 Copia del vecchio PFILE nel suo nuovo nome


$ per maggiori informazioni, consulta la nostra informativa sulla privacy e sui cookie.ora
9-rw-r– 1 oracle oinstall 1106 Ottobre 11 20: 17 initprd.ora
cp cp initprd.ora initqa.ora
$

Esempio di copia del vecchio PFILE, initdwprd.ora al nuovo PFILE, initdwqa.ora.

Utilizzare l’applicazione NID

Per utilizzare l’applicazione NID, è necessario accedere al server di database come utente oracle ed eseguire le seguenti operazioni.

  1. Arresta il database
  2. Avvia il database in modalità mount
  3. Esegui il comando NID
  4. Chiudi il database

2.1 Spegnere il Database
Avviare una sessione SQLPlus e immettere il comando shutdown immediato. La figura 2.1 illustra questo passaggio.

Figura 2.1 Chiusura del database

$ sqlplus / as sysdba

SQL * Plus: Rilascio 11.2.0.3.0 Produzione su Sat Oct 11 20:02:24 2014

Copyright © 1982, 2011, Oracle, Tutti i diritti riservati.

Collegato a:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0-Produzione
Con le opzioni di partizionamento, OLAP, Data Mining e test delle applicazioni reali

SQL> arresto immediato
Database chiuso.
Database smontato.
Istanza ORACLE chiusa.
SQL>

Esempio di output quando si spegne il database.

2.2 Avvio del database in modalità Mount

Avviare una sessione SQLPlus e immettere il comando avvio mount. La figura 2.2 mostra questo fatto.

Figura 2.2 Avvio del database in modalità mount

$ sqlplus / as sysdbaSQL * Plus: Rilascio 11.2.0.3.0 Produzione il Sab Ott 11 20: 02:24 2014Copyright © 1982, 2011, Oracle, Tutti i diritti riservati.

Connesso a un’istanza inattiva.

SQL>montaggio di avvio
Istanza ORACLE avviata.
Area globale totale del sistema 535662593 byte
Dimensione fissa 1346140 byte
Dimensione variabile 260048292 byte
Buffer di database 268435456 byte
Ripristina buffer 5832704 byte
Database montato.
SQL>

Esempio di output quando si avvia il database in modalità mount.

Immettere exit per tornare al prompt della shell.

2.3 Eseguire il comando NID
Il comando NID è il programma Oracle che modifica il SID del database. Per usarlo, avrai bisogno della password dell’account SYS e del nuovo SID per il database. Con il nuovo SID che è qa, la riga di comando sarà nid target = SYS dbname = qa. Dopo aver premuto invio, verrà richiesta la password dell’account SYS. Inserisci la password. Verrà richiesto di confermare che si desidera modificare il SID. Vedere figura 2.3.1 per la visualizzazione dello schermo.

Figura 2.3.1 Visualizzazione dello schermo del comando NID in esecuzione

$ nid target = SYS dbname = qa
DBNEWID: Rilascio 11.2.0.3.0-Produzione il sabato ottobre 11 20:05:54 2014

Copyright © 1982, 2011, Oracle e / o le sue affiliate. Tutti i diritti riservati.

Password:
Collegato al database PRD (DBID=3949194393)

Connettersi al server versione 11.2.0

File di controllo nel database:
/u01/app/oracle/oradata/prd/control01.ctl
/u01/app/oracle/oradata / prd / control02.ctl

Modifica l’ID del database e il nome del database PRD in QA? (S/) => _

Uscita dall’avvio del comando NID.

Immettere Y per eseguire il commit alla modifica del nome del database come mostrato in figura 2.3.2

Figura 2.3.2 Conferma della modifica del nome del database

$ nid target = SYS dbname = qa
DBNEWID: Rilascio 11.2.0.3.0-Produzione su Sab Ott 11 20:05:54 2014

Copyright © 1982, 2011, Oracle e / o le sue affiliate. Tutti i diritti riservati.

Password:
Collegato al database PRD (DBID=3949194393)

Connettersi al server versione 11.2.0

File di controllo nel database:
/u01/app/oracle/oradata/prd/control01.ctl
/u02/app/oracle/oradata / prd / control02.ctl

Cambia l’ID del database e il nome del database PRD in QA? (Y/) => Y

Rispondere Y alla confimazione.

Il programma apporterà le modifiche interne e visualizzerà i suoi progressi. Al termine, verrà restituito al prompt della shell come mostrato in Figura 2.3.3.

Figura 2.3.3 Uscita dal programma NID

File di dati /u02/app/oracle/oradata/prd/dw03.db-dbid cambiato, ha scritto nuovo nome
Datafile / u02 / app/oracle/oradata/prd / dw04.db-dbid cambiato, ha scritto nuovo nome
Datafile / u02 / app/oracle/oradata/prd / dw05.db-dbid cambiato, ha scritto nuovo nome
Datafile / u01 / app/oracle/oradata/prd / temp01.db-dbid cambiato, ha scritto nuovo nome
File di controllo /u01/app/oracle/oradata/prd/control01.ctl-dbid cambiato, ha scritto nuovo nome
File di controllo /u02/app/oracle/oradata/prd/control02.ctl-dbid cambiato, ha scritto nuovo nome
Istanza spento

Nome del database cambiato in QA.
Modificare il file dei parametri e generare un nuovo file di password prima di riavviare.
ID database per il QA del database modificato in 1714809981
Tutti i backup precedenti e i registri di ripristino archiviati per questo database sono inutilizzabili.
Il database non è a conoscenza dei backup previos e dei registri archiviati nell’area di ripristino.
Database hase stato chiuso, aprire il database con l’opzione RESETLOGS.
Ha modificato correttamente il nome e l’ID del database.
DBNEWID-Completato con successo.

$

Uscita dal programma NID che mostra un completamento riuscito.

2.4 Chiudere il database
Il database dovrà essere chiuso di nuovo. Ripeti l’avvio di una sessione SQLPlus e inserisci il comando shutdown immediate come mostrato nel passaggio 2.1.

3. Modifica riferimenti SID

Le modifiche dovranno essere apportate nel parametro del database, tnsnames, oratab e file di ambiente per riflettere la modifica del database SID.

  1. Il file dei parametri Oracle deve essere rinominato e modificato.
  2. Oratab deve avere il SID rinominato.
  3. il file ora ha bisogno del SID rinominato
  4. Se l’ORACLE_SID è impostato nel profilo, dovrà essere modificato.

3.1 Il file dei parametri Oracle deve essere rinominato e modificato

Il file dei parametri Oracle dovrà essere modificato e modificare due righe. Passare al punto in cui è memorizzato il file dei parametri, la cartella OR ORACLE_HOME/dbs. Vedere figura 3.1.1 per un esempio.

Figura 3.1.1 Passaggio alla cartella del file dei parametri


$ per maggiori informazioni, consulta la nostra informativa sulla privacy e sui cookie.ora
9-rw-r– 1 oracle oinstall 1106 Ottobre 11 20: 17 initqa.ora
$

Esempio di modifica alla cartella del file dei parametri per preparare la modifica del file dei parametri.

Modifica il file e individua le due righe che devono essere modificate. Le righe iniziano con dbname e instance_name. Vedere Figura 3.1.2 per un esempio di come apparirebbe il file dei parametri prima delle modifiche.

Figura 3.1.2 Query per vedere se SPFILE è in uso.


dbname=”prd”
db_recovery_file_dest_size=64424509440
db_recovery_file_dest=”/u01/app/oracle/flash_recovery_area”
fast_start_mttr_target=120
instance_name=prd

Linee che sono evidenziati bisogno di essere cambiato di nuovo nome SID.

È necessario modificare il valore SID per le due righe dal vecchio SID, prd, al nuovo SID, qa. Vedere Figura 3.1.3 per come le linee si occuperebbero delle modifiche.

Figura 3.1.3 Query per vedere se SPFILE è in uso


dbname=”qa”
db_recovery_file_dest_size=64424509440
db_recovery_file_dest=”/u01/app/oracle/flash_recovery_area”
fast_start_mttr_target=120
instance_name=qa

Parametro file mostrando SID cambia nome dopo la modifica.

Salvare il file e uscire dall’editor.

3.2 Oratab deve avere il SID rinominato

Il file ORATAB Oracle, /etc/oratab, dovrà avere il riferimento SID cambiato dal vecchio SID. prd al nuovo SID. qa. Modificare il file e cambiare la vecchia voce SID al nuovo SID. Vedere Figura 3.2.1 per un esempio.

Figura 3.2.1 Esempio di file ORATAB modificato /etc/oratab

# Voci multiple con lo stesso OR ORACLE_SID non sono consentite.
#
#
#1120:/u01/app/oracle/product/11.2.0:N
orcl:/u01/app/oracle/product/11.2.0/db_1:Y
#prd:/u01/app/oracle/product/11.2.0/db_1:Y
qa:/u01/app/oracle/product/11.2.0/db_1:Y;

Esempio file ORATAB mostrando cambiato SID riferimento da dwprd per dwqa. Il valore modificato è in grassetto.

3.3 TNSNAMES deve avere il SID rinominato

Il file Oracle TNSNANES, tnsnames.ora, sarà necessario che il riferimento SID sia cambiato dal vecchio SID. dwprd al nuovo SID. dwqa. Sarà anche necessario modificare l’indirizzo HOST per abbinare il nuovo sistema. TNSNAMES si trova nella cartella OR ORACLE_HOME / network / admin. Modificare il file e modificare la vecchia voce SID nel nuovo SID e modificare l’indirizzo HOST in modo che corrisponda al nuovo sistema. Vedere Figura 3.3.1 per un esempio.

Figura 3.3.1 Esempio di file TNSNAMES modificato OR ORACLE_HOME / network/admin / tnsnames.ora

(CONNECT_DATA =
(SID = PLSExtProc)
PRESENTAZIONE = RO)
)
)QA =
(DESCRIZIONE =
(ADDRESS_LIST =
(INDIRIZZO = (PROTOCOLLO = TCP)(HOST = 192.188.1.86)(PORTA = 1521))
)
(CONNECT_DATA =
(NOME_SERVIZIO = qa)
(UR = A)
)
)

Esempio di file TNSNAMES mostrando cambiato SID riferimento da dwprd per dwqa e l’indirizzo HOST insieme al nuovo indirizzo. Il valore modificato è in grassetto.

3.4 Se l’ORACLE_SID è impostato nel profilo, dovrà essere modificato.

Di solito, la variabile d’ambiente OR ORACLE_SID è impostata sul valore SID nello script del profilo di accesso, HOME HOME/.profilo o HOME HOME/.bash_profile. Individuare e modificare l’impostazione SID sul nuovo valore. La figura 3.4.1 mostra un esempio di visualizzazione del valore OR ORACLE_SID dalla riga di comando.

Figura 3.4.1 Visualizzazione del valore OR ORACLE_SID


$ echo_ ORACLE_SID
prd
$

Utilizzando il comando echo per visualizzare il valore OR ORACLE_SID.

È necessario disconnettersi e accedere nuovamente dopo aver modificato il valore ORACLE_SID nello script del profilo per impostarlo nel proprio ambiente.

4. Avviare il database e finalizzare le modifiche

L’ultimo passaggio che deve essere completato è avviare il database fino al livello di montaggio e aprirlo con l’opzione resetlogs. Avviare una sessione SQLPlus, avviare il database fino alla modalità di montaggio immettendo il montaggio di avvio. Se si dovesse creare un PFILE nel Passaggio 1, il comando start è startup pfile=initSID.ora mount. Quindi, per il nostro esempio, sarebbe startup pfile = initqa.ora mount. Quindi aprire il database con il comando alter database open resetlogs;. Vedere figura 4.1 per un esempio di visualizzazione dello schermo.

Figura 4.1 Avvio del database e ripristino dei log

$ sqlplus / as sysdba

SQL * Plus: Rilascio 11.2.0.3.0 Produzione su Sat Oct 11 20:02:24 2014
Copyright © 1982, 2011, Oracle, Tutti i diritti riservati.
Connesso a un’istanza inattiva.

SQL>montaggio di avvio
Istanza ORACLE avviata.
Area globale totale del sistema 535662593 byte
Dimensione fissa 1346140 byte
Dimensione variabile 260048292 byte
Buffer di database 268435456 byte
Ripristina buffer 5832704 byte
Database montato.
SQL> alter database open resetlogs;

Database alterato.

SQL>

Avvio del database in modalità mount e apertura con l’opzione resetlogs.

Se si dovesse creare un file PFILE nel Passaggio 1, sarà necessario convertire il file PFILE in un file SPFILE. Questo viene fatto usando il comando CREA SPFILE. Al prompt SQL, immettere il comando crea spfile da pfile.

Conclusione

Cambiare il nome del database di un database Oracle può sembrare complicato, ma può essere eseguito con competenze di base dei sistemi. Seguendo le procedure descritte in questo documento, un DBA può eseguire l’attività con tempi di inattività minimi per il database.

Leave a Reply

Il tuo indirizzo email non sarà pubblicato.