ändra ett databasnamn med NEWID
House of Brick Senior Consultant
en av de många uppgifter som en DBA kommer att utföra är kloning av en databas. Vanligtvis görs detta från en produktionsdatabas till en kvalitetssäkring eller testdatabas för att tillhandahålla produktionsvolymdata. Om databasen finns på en virtuell maskin kan kloning ske på VM-nivå.
kloning gör exakt vad det betyder, vilket skapar en exakt kopia av en databas. Tyvärr slutar det med att du har två databaser med samma namn och DBID i ditt nätverk. Ibland kan du lösa det tillräckligt med aliasing på TNSNAMES-nivån.
andra gånger måste du ändra databasnamnet och DBID internt. Oracle har ett verktyg för detta, newid-applikationen.
det här dokumentet beskriver de steg som krävs för att utföra databasnamnändringen med NEWID.
terminologi och definitioner
följande terminologi och definitioner kommer att användas i detta dokument.
Sid-Oracle Site Identifier. Detta är databasnamnet som ändras.
Pfile – Oracle Parameterfil. Beläget i $ ORACLE_HOME/DBS mapp.
SPFILE – Oracle Server Parameterfil. Finns också i mappen $ORACLE_HOME/dbs.
ORATAB – Oracle konfigurationsfil som associerar Oracle SIDs med Oracle homes. Ligger på / etc / oratab.
Tnsnames – Oracle network configuration file som associerar inkommande anslutningar med Oracle SIDs. Beläget i $ ORACLE_HOME/nätverk/admin mapp.
databasnamn
databasnamnet, eller SID, ändras från prd till qa. Detta kommer att refereras när det är lämpligt i dokumentet.
översikt över processen
det finns fyra steg att utföra för att ändra ett Oracle-databasnamn (Sid).
- preliminärt förberedande arbete
- använd nid-applikation
- ändra Sid-referenser
- starta databasen och slutföra ändringar
1. Preliminärt prep-arbete
efter ändringen av databasnamnet måste ändringar göras i Oracle-parameterfilen. Om databasen använder en serverparameterfil (SPFILE) istället för en parameterfil (PFILE) måste du konvertera från en SPFILE till en PFILE innan databasnamnändringen sker.
1.1 bestämma om SPFILE används
kör följande Fråga för att se om din databas startades med en PFILE eller SPFILE:
figur 1.1 Fråga för att se om SPFILE används
”från sys.V_ $ parameter WHERE name = ’spfile’;
kör den här frågan för att avgöra om databasen börjar med en PFILE eller SPFILE.
om databasen börjar med en PFILE, ingen ytterligare prep arbete är nödvändigt och du kan gå vidare till steg 2 – Använd nid ansökan. Annars fortsätter du med nästa steg.
1.2 skapa en PFILE från SPFILE
kör följande sql för att skapa en PFILE från en SPFILE:
figur 1.2 skapa en PFILE från SPFILE.
kör detta kommando för att skapa en PFILE från en SPFILE.
detta skapar en PFILE i katalogen $ORACLE_HOME/dbs. Det kommer att använda nuvarande SID i namnet. Eftersom databasens nuvarande SID är prd kommer namnet att vara initprd.ora. Kopiera filen för att få det nya SID i sitt namn. För det här exemplet skulle det nya namnet vara initqa.ora. Se figur 1.3 för ett exempel på kopiering av filen.
figur 1.3 kopiera den gamla PFILE till sitt nya namn
…
$ cd $ ORACLE_HOME / dbs
$ pwd
/u01/app/orakel/produkt/11.2.0/db_1/dbs
$ är –ls initped.ora
9-rw-r– 1 orakel oinstallera 1106 Oktober 11 20:17 initprd.ora
$ cp initprd.ora initqa.ora
$
…
exempel på att kopiera den gamla PFILE, initdwprd.ora till den nya PFILE, initdwqa.ora.
använd nid-programmet
för att använda nid-programmet måste du logga in på databasservern som oracle-användare och utföra följande steg.
- Stäng av databasen
- starta databasen i monteringsläge
- kör nid-kommandot
- Stäng av databasen
2.1 Stäng av databasen
starta en sqlplus-session och ange kommandot avstängning omedelbart. Figur 2.1 visar detta steg.
Figur 2.1 Stäng av databasen
$ sqlplus / as sysdba
SQL * Plus: släpp 11.2.0.3.0 produktion på lör okt 11 20:02:24 2014
Copyright Brasilien 1982, 2011, orakel, Alla rättigheter förbehållna.
ansluten till:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – produktion
med partitionering, OLAP, data Mining och verkliga Applikationstestalternativ
SQL> avstängning omedelbar
databas stängd.
databasen demonteras.
ORACLE instans stängs av.
SQL>
…
exempel på utdata när du stänger av databasen.
2.2 starta databasen till Monteringsläge
starta en sqlplus-session och ange kommandot startup mount. Figur 2.2 visar att detta görs.
figur 2.2 starta databasen till monteringsläge
$ sqlplus/som sysdbaSQL * Plus:släpp 11.2.0.3.0 produktion på lör Oktober 11 20:02: 24 2014copyright 2982, 2011, orakel, Alla rättigheter förbehållna.
ansluten till en ledig instans.
SQL> startfäste
ORACLE-instans startade.
totalt System globalt område 535662593 byte
fast storlek 1346140 byte
variabel storlek 260048292 byte
databas buffertar 268435456 byte
gör om buffertar 5832704 byte
databas monterad.
SQL>
…
exempel på utmatning när databasen startas till monteringsläge.
ange exit för att återgå till skalprompten.
2.3 kör nid-kommandot
nid-kommandot är Oracle-programmet som ändrar databasens Sid. För att använda det behöver du SYS-kontolösenordet och det nya Sid för databasen. Med det nya SID som qa kommer kommandoraden att vara nid target=SYS dbname=qa. När du trycker på enter kommer du att bli ombedd att ange SYS-kontolösenordet. Ange lösenordet. Du uppmanas att bekräfta att du vill ändra SID. Se figur 2.3.1 för skärmdisplayen.
figur 2.3.1 skärmvisning av körande nid-kommando
$ nid target=SYS dbname=qa
DBNEWID: släpp 11.2.0.3.0-produktion på lör okt 11 20:05:54 2014
Copyright 1982, 2011, Oracle och/eller dess dotterbolag. Alla rättigheter förbehållna.
lösenord:
ansluten till databasen PRD (DBID=3949194393)
Anslut till server version 11.2.0
kontrollfiler i databasen:
/u01/app/oracle/oradata/prd/control01.ctl
/u01/app/oracle/oradata / prd / control02.ctl
ändra databas-ID och databasnamn PRD till QA? (Y/) => _
…
utgång från att starta nid-kommandot.
ange Y för att åta sig att ändra databasnamnet som visas i figur 2.3.2
figur 2.3.2 bekräfta ändringen av databasnamnet
$ nid target=SYS dbname=qa
DBNEWID: släpp 11.2.0.3.0-Produktion På lör okt 11 20:05:54 2014
Copyright 1982, 2011, Oracle och/eller dess dotterbolag. Alla rättigheter förbehållna.
lösenord:
ansluten till databasen PRD (DBID=3949194393)
Anslut till server version 11.2.0
styr filer i databasen:
/u01/app/oracle/oradata/prd/control01.ctl
/u02/app/oracle/oradata / prd / control02.ctl
ändra databas-ID och databasnamn PRD till QA? (Y/) = > Y
…
svara Y till confimation.
programmet kommer att göra de interna ändringarna och visa dess framsteg. När det är klart kommer du att returneras till skalprompten som visas i Figur 2.3.3.
figur 2.3.3 utgång från nid program
Datafile /u02/app/oracle/oradata/prd/dw03.db-dbid ändras, skrev nytt namn
Datafile /u02/app/oracle/oradata/prd/dw04.db-dbid ändras, skrev nytt namn
Datafile /u02/app/oracle/oradata/prd/dw05.db-dbid ändras, skrev nytt namn
Datafile /u01/app/oracle/oradata/prd/temp01.db-dbid ändras, skrev nytt namn
Kontrollfil / u01/app/oracle/oradata/prd / control01.ctl-dbid ändras, skrev nytt namn
Kontrollfil / u02/app/oracle/oradata/prd / control02.ctl-dbid ändras, skrev nytt namn
instans stänga
databasnamn ändras till QA.
ändra parameterfilen och generera en ny lösenordsfil innan du startar om.
databas-ID för Databas QA ändrats till 1714809981
alla tidigare säkerhetskopior och arkiverade gör om loggar för denna databas är oanvändbara.
databasen är inte medveten om previos säkerhetskopior och arkiverade loggar i återställningsområdet.
databas hase stängts, öppna databas med RESETLOGS alternativ.
har ändrat databasnamn och ID.
DBNEWID – slutfördes framgångsrikt.
$
…
utgång från NID program som visar ett framgångsrikt slutförande.
2.4 Stäng av databasen
databasen måste stängas av igen. Upprepa att starta en sqlplus-session och ange kommandot avstängning omedelbart som visas i steg 2.1.
3. Ändra Sid-referenser
ändringar måste göras i databasparametern, tnsnames, oratab och miljöfiler för att återspegla ändringen av databasens SID.
- Oracle-parameterfilen måste bytas om och redigeras.
- Oratab måste ha Sid bytt namn.
- ora-filen behöver SID-namnet
- om ORACLE_SID är inställt i profilen måste det ändras.
3.1 Oracle-parameterfilen måste bytas om och redigeras
Oracle-parameterfilen måste redigeras och två rader ändras. Byt till var parameterfilen är lagrad, mappen $ ORACLE_HOME / dbs. Se figur 3.1.1 för ett exempel.
figur 3.1.1 Ändra till parameterfilmappen
…
$ cd $ ORACLE_HOME / dbs
$ pwd
/u01/app/oracle/produkt/11.2.0/db_1/dbs
$ är –ls initqa.ora
9-rw-r– 1 orakel oinstallera 1106 Oktober 11 20:17 initqa.ora
$
…
exempel på att byta till parameterfilmappen för att förbereda för redigering av parameterfil.
redigera filen och leta reda på de två raderna som behöver ändras. Raderna börjar med dbname och instance_name. Se figur 3.1.2 för ett exempel på hur parameterfilen skulle se ut före ändringarna.
figur 3.1.2 Fråga för att se om SPFILE används.
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
…
linjer som är markerade måste ändras till nytt SID-namn.
du måste ändra SID-värdet för de två raderna från gammalt SID, prd, till det nya SID, qa. Se figur 3.1.3 för hur linjerna skulle se efter ändringarna.
figur 3.1.3 Fråga för att se om SPFILE används
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
…
Parameterfil som visar Sid-namnändringar efter redigering.
spara filen och avsluta redigeraren.
3.2 Oratab måste ha SID bytt namn
Oracle ORATAB-filen, /etc/oratab, behöver ha Sid-referensen ändrad från den gamla SID. prd till den nya SID. qa. Redigera filen och ändra den gamla Sid-posten till den nya SID. Se figur 3.2.1 för ett exempel.
figur 3.2.1 exempel på modifierad ORATAB-fil / etc / oratab
#
#
#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;
exempel ORATAB-fil som visar ändrad SID-referens från dwprd till dwqa. Det ändrade värdet är i fetstil.
3.3 TNSNAMES måste ha SID bytt namn
Oracle tnsnanes-filen, tnsnames.ora, kommer att behöva ha Sid-referensen ändrad från den gamla SID. dwprd till den nya SID. dwqa. Det kommer också att behöva värdadressen ändras för att matcha det nya systemet. TNSNAMES finns i mappen $ORACLE_HOME/network/admin. Redigera filen och ändra den gamla Sid-posten till den nya SID och ändra värdadressen så att den matchar det nya systemet. Se figur 3.3.1 för ett exempel.
figur 3.3.1 exempel på modifierad tnsnames fil $ORACLE_HOME/nätverk/admin / tnsnames.ora
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)QA =
(beskrivning =
(ADDRESS_LIST =
(adress = (protokoll = TCP)(värd = 192.188.1.86) (PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = qa)
(UR = A)
)
)
exempel tnsnames fil som visar ändrad SID referens från dwprd till dwqa och värdadress inställd på ny adress. Det ändrade värdet är i fetstil.
3.4 om ORACLE_SID är inställd i profilen måste den ändras.
vanligtvis är miljövariabeln $ORACLE_SID inställd på sid-värdet i inloggningsprofilskriptet, $HOME/.profil eller $ hem/.bash_profile. Leta reda på och ändra Sid-inställningen till det nya värdet. Figur 3.4.1 visar ett exempel på att visa $ ORACLE_SID-värdet från kommandoraden.
figur 3.4.1 visar värdet $ ORACLE_SID
$ echo $ ORACLE_SID
prd
$
…
använd kommandot echo för att visa värdet $ORACLE_SID.
du måste logga ut och logga in igen efter att ha ändrat ORACLE_SID-värdet i profilskriptet för att få det inställt i din miljö.
4. Starta databasen och slutföra ändringar
det sista steget som måste slutföras är att starta databasen upp till monteringsnivå och öppna den med alternativet resetlogs. Starta en sqlplus-session, starta databasen upp till monteringsläge genom att ange startup mount. Om du var tvungen att skapa en PFILE i steg 1 är startkommandot startup pfile=initSID.ora mount. Så för vårt exempel skulle det vara start pfile=initqa.ora mount. Öppna sedan databasen med kommandot alter database open resetlogs;. Se figur 4.1 för ett exempel på skärmdisplayen.
figur 4.1 starta databasen och återställa loggar
$ sqlplus / as sysdba
SQL * Plus: släpp 11.2.0.3.0 produktion på lör okt 11 20:02:24 2014
Copyright Brasilien 1982, 2011, orakel, Alla rättigheter förbehållna.
ansluten till en ledig instans.
SQL> startfäste
ORACLE-instans startade.
totalt System globalt område 535662593 byte
fast storlek 1346140 byte
variabel storlek 260048292 byte
databas buffertar 268435456 byte
gör om buffertar 5832704 byte
databas monterad.
SQL> ändra databas öppna resetlogs;
databasen ändras.
SQL>
…
starta databasen i monteringsläge och öppna med alternativet resetlogs.
om du var tvungen att skapa en PFILE i steg 1 måste du konvertera PFILE tillbaka till en SPFILE. Detta görs med kommandot Skapa SPFILE. Vid SQL-prompten anger du kommandot Skapa spfile från pfile.
slutsats
att ändra databasnamnet på en Oracle-databas kan låta komplicerat, men kan utföras med grundläggande systemkunskaper. Genom att följa procedurerna i det här dokumentet kan en DBA utföra uppgiften med minimal nedtid för databasen.