schimbarea unui nume de bază de date folosind NEWID

House of Brick Senior Consultant

una dintre numeroasele sarcini pe care le va efectua un DBA este clonarea unei baze de date. De obicei, acest lucru se face de la o bază de date de producție la o bază de date de asigurare a calității sau de testare pentru a furniza date privind volumul producției. Dacă baza de date se află pe o mașină virtuală, clonarea ar putea avea loc la nivelul VM.

clonarea face exact ceea ce înseamnă, creând un duplicat exact al unei baze de date. Din păcate, care se termină cu tine având două baze de date cu același nume și DBID în rețea. Uneori îl puteți rezolva suficient cu aliasing la nivelul TNSNAMES.

alteori, va trebui să schimbați numele bazei de date și DBID intern. Oracle are un utilitar pentru aceasta, aplicația NEWID.

acest document va detalia pașii necesari pentru a efectua schimbarea numelui bazei de date folosind NEWID.

terminologie și definiții

următoarea terminologie și definiții vor fi utilizate în acest document.

identificatorul site – ului Sid-Oracle. Acesta este numele bazei de date care este schimbat.
PFILE – fișier parametru Oracle. Situat în $ ORACLE_HOME / DBS dosar.
SPFILE-fișier parametru Server Oracle. De asemenea, situat în $ORACLE_HOME/DBS dosar.
ORATAB – fișier de configurare Oracle care asociază Oracle SIDs cu Oracle homes. Situat la / etc / oratab.
TNSNAMES – fișier de configurare Oracle network care asociază conexiunile primite cu Oracle SIDs. Situat în folderul $ ORACLE_HOME/network / admin.

Nume bază de date
numele bazei de date, sau SID, este schimbat din prd în qa. Acest lucru va fi menționat atunci când este cazul în document.

Prezentare generală a procesului
există patru pași de efectuat pentru a schimba un nume de bază de date Oracle (Sid).

  1. lucru Prep preliminar
  2. utilizați aplicația NID
  3. schimbați referințele SID
  4. începeți baza de date și finalizați modificările

1. Lucrări preliminare de pregătire

după schimbarea numelui bazei de date, vor trebui făcute modificări în fișierul parametrilor Oracle. Dacă baza de date utilizează un fișier parametru server (SPFILE) în loc de un fișier parametru (PFILE), va trebui să convertiți dintr-un fișier SPFILE într-un PFILE înainte ca schimbarea numelui bazei de date să aibă loc.

1.1 determinarea dacă SPFILE este în uz
rulați următoarea interogare pentru a vedea dacă baza dvs. de date a fost pornită cu un PFILE sau SPFILE:

figura 1.1 interogare pentru a vedea dacă SPFILE este în uz

SQL> selectați DECODE(value, NULL, ‘PFILE’, ‘SPFILE’) „Init File Type
„sys.V_ $ parametru unde name = ‘spfile’;

rulați această interogare pentru a determina dacă baza de date începe cu un PFILE sau SPFILE.

dacă baza de date începe cu un PFILE, nu mai este necesară nicio lucrare de pregătire și puteți trece la Pasul 2 – Utilizați aplicația NID. În caz contrar, continuați cu pasul următor.

1.2 crearea unui PFILE din SPFILE
rulați următorul sql pentru a crea un PFILE dintr-un SPFILE:

figura 1.2 crearea unui PFILE din SPFILE.

SQL> creare pfile din spfile;

rulați această comandă pentru a crea un PFILE dintr-un SPFILE.

aceasta va crea un PFILE în directorul $ORACLE_HOME/dbs. Acesta va folosi actualul SID în nume. Deoarece SID-ul actual al bazei de date este prd, numele va fi initprd.ora. Copiați fișierul pentru a avea noul SID în numele său. Pentru acest exemplu, noul nume ar fi initqa.ora. A se vedea figura 1.3 Pentru un exemplu de copiere a fișierului.

figura 1.3 copierea vechiului PFILE la noul său nume


$ cd $ ORACLE_HOME / dbs
$ pwd
/u01/app/oracle/produs/11.2.0/db_1/dbs
$ este –LS initped.ora
9 –rw-r– 1 oracle oinstall 1106 octombrie 11 20:17 initprd.ora
$ cp initprd.ora initqa.ora
$

exemplu de copiere a vechiului PFILE, initdwprd.ora la noul PFILE, initdwqa.ora.

utilizați aplicația NID

pentru a utiliza aplicația NID, va trebui să vă conectați la serverul de baze de date ca utilizator oracle și să efectuați următorii pași.

  1. oprirea bazei de date
  2. porniți baza de date în modul de montare
  3. rulați comanda NID
  4. închideți baza de date

2.1 oprirea bazei de date
porniți o sesiune SQLPlus și introduceți comanda shutdown imediat. Figura 2.1 demonstrează acest pas.

Figura 2.1 închiderea bazei de date

$ SQLPLUS / as sysdba

SQL*plus: lansare 11.2.0.3.0 producție pe Sat Oct 11 20:02:24 2014

drepturi de autor 1982, 2011, Oracle, Toate drepturile rezervate.

conectat la:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – producție
cu opțiunile de partiționare, OLAP, Data Mining și Real Application Testing

SQL> închidere imediată
baza de date închisă.
baza de date demontată.
ORACLE instanță Închide.
SQL>

exemplu de ieșire la închiderea bazei de date.

2.2 pornirea bazei de date pentru a monta modul

porniți o sesiune SQLPlus și introduceți comanda startup mount. Figura 2.2 arată acest lucru.

figura 2.2 pornirea bazei de date în modul de montare

$ sqlplus / as sysdbaSQL * Plus: lansare 11.2.0.3.0 producție pe Sat Oct 11 20: 02: 24 2014copyright 1982, 2011, Oracle, Toate drepturile rezervate.

conectat la o instanță inactivă.

SQL> startup mount
ORACLE instanță a început.
Total System Global Area 535662593 bytes
dimensiune fixă 1346140 bytes
Dimensiune variabilă 260048292 bytes
tampoane de baze de date 268435456 bytes
refaceți tampoane 5832704 bytes
baza de date montată.
SQL>

exemplu de ieșire la pornirea bazei de date pentru a monta modul.

introduceți exit pentru a reveni la promptul shell.

2.3 rulați comanda NID
comanda Nid este programul Oracle care modifică SID-ul bazei de date. Pentru ao utiliza, veți avea nevoie de parola contului SYS și de noul SID pentru baza de date. Cu noul Sid fiind qa, linia de comandă va fi NID target=SYS dbname=qa. După ce apăsați enter, vi se va solicita parola contului SYS. Introduceți parola. Vi se va solicita să confirmați că doriți să schimbați SID. A se vedea figura 2.3.1 pentru afișarea pe ecran.

figura 2.3.1 afișarea pe ecran a comenzii NID care rulează

$ NID target = SYS dbname=qa
DBNEWID: Release 11.2.0.3.0-producție pe Sat Oct 11 20:05:54 2014

drepturi de autor: 1982, 2011, Oracle și/sau afiliații săi. Toate drepturile rezervate.

parolă:
conectat la baza de date PRD (DBID=3949194393)

Conectați-vă la server versiunea 11.2.0

fișiere de Control în baza de date:
/u01/app/oracle/oradata/prd/control01.ctl
/u01/app/oracle/oradata/prd / control02.ctl

schimbați ID-ul bazei de date și numele bazei de date PRD în QA? (Y/) => _

ieșire de la pornirea comenzii NID.

introduceți Y pentru a vă angaja să schimbați numele bazei de date așa cum se arată în figura 2.3.2

figura 2.3.2 confirmând schimbarea numelui bazei de date

$ NID target = SYS dbname = qa
DBNEWID: Release 11.2.0.3.0-producție pe Sat Oct 11 20:05:54 2014

drepturi de autor: 1982, 2011, Oracle și/sau afiliații săi. Toate drepturile rezervate.

parolă:
conectat la baza de date PRD (DBID=3949194393)

Conectați-vă la server versiunea 11.2.0

fișiere de Control în baza de date:
/u01/app/oracle/oradata/prd/control01.ctl
/u02/app/oracle/oradata/prd / control02.ctl

schimbați ID-ul bazei de date și numele bazei de date PRD în QA? (A/) = > a

răspunde la confimare.

programul va face modificările interne și va afișa progresul acestuia. Când este terminat, veți fi returnat la promptul shell așa cum se arată în figura 2.3.3.

figura 2.3.3 ieșire din programul NID

fișier de date /u02/app/oracle/oradata/prd/dw03.db-dbid schimbat, a scris nume nou
Datafile /u02/app/oracle/oradata/prd/dw04.db-dbid schimbat, a scris nume nou
Datafile /u02/app/oracle/oradata/prd/dw05.db-dbid schimbat, a scris nume nou
Datafile /u01/app/oracle/oradata/prd/temp01.db-dbid schimbat, a scris nume nou
fișier de Control /u01/app/oracle/oradata/prd/control01.ctl-dbid schimbat, a scris nume nou
fișier de Control / u02/app/oracle/oradata/prd / control02.ctl-dbid schimbat, a scris nume nou
instanță Închide

numele bazei de date schimbat la QA.
modificați fișierul de parametri și generați un nou fișier de parolă înainte de a reporni.
ID-ul bazei de date pentru baza de date QA modificat la 1714809981
toate copiile de rezervă anterioare și jurnalele de refacere arhivate pentru această bază de date sunt inutilizabile.
baza de date nu este conștient de backup previos și jurnalele arhivate în zona de recuperare.
baza de date a fost închisă, baza de date deschisă cu opțiunea RESETLOGS.
a schimbat cu succes numele bazei de date și ID-ul.
DBNEWID-finalizat cu succes.

$

ieșire din programul NID care arată o finalizare cu succes.

2.4 închiderea bazei de date
baza de date va trebui închisă din nou. Repetați începerea unei sesiuni SQLPlus și introduceți comanda shutdown imediat așa cum se arată în pasul 2.1.

3. Modificați referințele SID

modificările vor trebui făcute în parametrii bazei de date, tnsnames, oratab și fișierele de mediu pentru a reflecta modificarea bazei de date Sid.

  1. fișierul parametrilor Oracle trebuie redenumit și editat.
  2. Oratab trebuie să aibă Sid redenumit.
  3. fișierul ora are nevoie de SID redenumit
  4. dacă ORACLE_SID este setat în profil, va trebui să fie schimbat.

3.1 fișier parametru Oracle trebuie să fie redenumit și editat

fișierul parametru Oracle va trebui să fie editat și să aibă două linii modificate. Schimbați locul în care este stocat fișierul parametru, folderul $ORACLE_HOME/dbs. A se vedea figura 3.1.1 Pentru un exemplu.

figura 3.1.1 Schimbarea la folderul fișier parametru


$ cd $ ORACLE_HOME / dbs
$ pwd
/u01/app/oracle/produs/11.2.0/db_1/dbs
$ este –LS initqa.ora
9-rw-r– 1 oracle oinstall 1106 octombrie 11 20: 17 initqa.ora
$

exemplu de schimbare în folderul fișier parametru pentru a vă pregăti pentru editarea fișierului parametru.

editați fișierul și localizați cele două linii care trebuie schimbate. Liniile încep cu dbname și instance_name. A se vedea figura 3.1.2 pentru un exemplu de modul în care fișierul parametru ar arăta înainte de modificările.

figura 3.1.2 interogare pentru a vedea dacă SPFILE este în uz.


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

liniile care sunt evidențiate trebuie schimbate în nume Sid nou.

va trebui să modificați valoarea SID pentru cele două linii de la old Sid, prd, la new Sid, qa. A se vedea figura 3.1.3 Pentru modul în care liniile ar avea grijă de modificări.

figura 3.1.3 interogare pentru a vedea dacă SPFILE este în uz


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

fișier parametru care arată modificările de nume SID după editare.

salvați fișierul și ieșiți din editor.

3.2 Oratab trebuie ca SID să fie redenumit

fișierul Oratab Oracle, /etc/oratab, va avea nevoie de modificarea referinței SID din vechiul Sid. prd către noul SID. qa. Editați fișierul și schimbați intrarea Sid veche în noul Sid. A se vedea figura 3.2.1 pentru un exemplu.

figura 3.2.1 exemplu de fișier oratab modificat /etc/oratab

# intrări Multiple cu același $ORACLE_SID nu sunt permise.
#
#
#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;

exemplu de fișier ORATAB care arată referința SID modificată de la dwprd la dwqa. Valoarea modificată este cu caractere aldine.

3.3 TNSNAMES trebuie să aibă SID redenumit

fișierul Oracle Tnsnanes, tnsnames.ora, va avea nevoie de referința Sid schimbată de la vechiul Sid. dwprd către noul SID. dwqa. De asemenea, va trebui schimbată adresa gazdei pentru a se potrivi cu noul sistem. TNSNAMES se află în folderul $ORACLE_HOME/network/admin. Editați fișierul și modificați intrarea Sid veche la noul SID și schimbați adresa gazdă pentru a se potrivi cu noul sistem. A se vedea figura 3.3.1 pentru un exemplu.

figura 3.3.1 exemplu de fișier TNSNAMES modificat $ORACLE_HOME/network/admin/tnsnames.ora

(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)QA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.188.1.86)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = qa)
(UR = A)
)
)

exemplu de fișier TNSNAMES care arată referința SID modificată de la dwprd la dwqa și adresa gazdă setată la o nouă adresă. Valoarea modificată este cu caractere aldine.

3.4 dacă ORACLE_SID este setat în profil, va trebui să fie schimbat.

de obicei, variabila de mediu $ORACLE_SID este setată la valoarea SID din scriptul profilului de conectare, $HOME/.profil sau $ acasă/.bash_profile. Localizați și modificați setarea SID la noua valoare. Figura 3.4.1 prezintă un exemplu de afișare a valorii $ORACLE_SID din linia de comandă.

figura 3.4.1 Afișarea valorii $ ORACLE_SID


$ ecou $ ORACLE_SID
prd
$

folosind comanda echo pentru a afișa valoarea $ ORACLE_SID.

va trebui să vă deconectați și să vă conectați din nou după modificarea valorii ORACLE_SID din scriptul de profil pentru a o seta în mediul dvs.

4. Porniți baza de date și finalizați modificările

ultimul pas care trebuie finalizat este să porniți baza de date până la nivelul de montare și să o Deschideți cu opțiunea resetlogs. Porniți o sesiune SQLPlus, porniți baza de date până la modul mount introducând startup mount. Dacă a trebuit să creați un PFILE la Pasul 1, comanda start este startup pfile=initSID.ora mount. Deci, pentru exemplul nostru, ar fi startup pfile=initqa.ora mount. Apoi deschideți baza de date cu comanda alter database open resetlogs;. A se vedea figura 4.1 pentru un exemplu de afișare a ecranului.

figura 4.1 pornirea bazei de date și resetarea jurnalelor

$ SQLPLUS / as sysdba

SQL*plus: lansare 11.2.0.3.0 producție pe Sat Oct 11 20:02:24 2014
drepturi de autor 1982, 2011, Oracle, Toate drepturile rezervate.
conectat la o instanță inactivă.

SQL> startup mount
ORACLE instanță a început.
Total System Global Area 535662593 bytes
dimensiune fixă 1346140 bytes
Dimensiune variabilă 260048292 bytes
tampoane de baze de date 268435456 bytes
refaceți tampoane 5832704 bytes
baza de date montată.
SQL> alter DATABASE open resetlogs;

baza de date modificată.

SQL>

pornirea bazei de date în modul de montare și deschiderea cu opțiunea resetlogs.

dacă a trebuit să creați un PFILE în pasul 1, va trebui să convertiți PFILE înapoi la un SPFILE. Acest lucru se face folosind comanda CREATE SPFILE. La promptul SQL, introduceți comanda Creați spfile din pfile.

concluzie

schimbarea numelui bazei de date a unei baze de date Oracle poate părea complicată, dar poate fi efectuată cu abilități de bază ale sistemelor. Urmând procedurile descrise în acest document, un DBA poate efectua sarcina cu un timp minim de oprire pentru baza de date.

Leave a Reply

Adresa ta de email nu va fi publicată.