Tartalomjegyzék
Oracle adatbázishoz kapcsolódó nevek
Ez a leírás az adatbázissal kapcsolatos különböző neveket (SID, DB_NAME, SERVICE_NAMES, GLOBAL_NAME, TNSNAME stb.) kívánja tisztázni.
Adatbázis és adatbázispéldány
Adatbázis vs. adatbázispéldány (instance): az Oracle terminológiában az adatbázis leegyszerűsítve magát az adathalmazt jelenti, az adtbázispéldány (instance) pedig az adatbázist kezelő folyamatokat (PMON, SMON, DBW, LOGW stb.), valamint a folyamatok által használt egyedi (PGA) és közös (SGA) memóriastruktúrákat jelenti. A példány indításkor hozzárendelődik a megadott adatbázishoz (mount), és így együtt alkotják az adatbáziskezelő-rendszert (RDBMS).
Egy példány csak egy adatbázishoz tartozik, egy adatbázishoz viszont tartozhat több példány (lásd RAC).
SID
A SID az „Oracle System Identifier” rövidítése . A system szó helyett pontosabb lenne az instance szó használata, mivel a SID az adatbázis instance (példány) egyedi neve: az INSTANCE_NAME inicializációs paraméter értéke.
Egy gépen nem lehet két példány azonos SID-del.
Mivel egy adatbázishoz legalább egy példány tartozik, így minden adatbázishoz legalább egy SID tartozik. Single instance esetén egyértelmű megfeleltetés van az SID és az adatbázis között, RAC estén viszont egy adatbázishoz több példány, és így több különböző SID tartozik.
Adatbázisnév
A DB_NAME a példányhoz tartozó inicializációs paraméter, használata nem kötelező, de bevett gyakorlat.* A DB_NAME paraméter értéke meg kell hogy egyezzen az adatbázis nevével, vagyis azzal a névvel, amely az adatbázis létrehozásakor szerepel a CREATE DATABASE
parancsban, és amely lekérdezhető a v$database
nézetből: SELECT name from v$database
.
Ha több adatbázis van egy gépen, akkor érdemes a SID-del megegyező DB_NAME-et beállítani.
RAC esetén kötelező beállítani, és összes instance-hoz ugyanazt az értéket kell beállítani.
Dataguard esetén a készenléti és az éles oldalon ugyanazt az értéket kell beállítani.
* Ha a DB_NAME paraméter nincs beállítva, akkor a STARTUP
és az ALTER DATABASE … MOUNT
parancsoknál meg kell adni az adatbázis nevét is.
Adatbázisdomén
A DB_DOMAIN a példányhoz tartozó inicializációs paraméter, amely a példány logikai helyét adja meg egy hálózatban.
Az internetes doménnevek konvencióját követi: a szintek ponttal vannak elválasztva, és a szintek balról jobbra nőnek.
Ha be van állítva, akkor egy cég különböző szervezeti egységei használhatják ugyanazt a DB_NAME beállítást.
Ha DB linkben nincs benne a DB_DOMAIN, akkor az Oracle az adatszótárból automatikusan hozzáilleszti azt.
Globális név
A GLOBAL_NAME az adatbázishoz tartozó beállítás, az adatbázis globális neve. A DB_NAME és a DB_DOMAIN paraméterek értékéből ponttal képzett összetétel, pl. sales.au.oracle.com
, sales.us.oracle.com
, ahol a sales
a DB_NAME, az au.oracle.com
, ill. az us.oracle.com
két DB_DOMAIN.
A globális név lekérdezhető a következő módón: SELECT * FROM GLOBAL_NAME;
Fontos, hogy létezik GLOBAL_NAMES is, a példányhoz tartozó inicializációs paraméter, amely megadja, hogy kötelező-e globális nevet használni. Ha igen, akkor az adatbázisra mutató DB link neve meg kell, hogy egyezzen az adatbázis globális nevével. Ezt az Oracle maga intézi. Érdemes TRUE-ra állítani elosztott környezetbe, hogy konzinsztens nevezéket lehessen használni.
Egyedi adatbázisnév
A DB_UNIQUE_NAME a példányhoz tartozó inicializációs paraméter, amely az adatbázis egyedi neve egy tartományon (DB_DOMAIN) belül.
Ha két példány ugyanabba a DB_DOMAIN-be tartozik, és ugyanaz a DB_NAME van beállítva benne, akkor kötelezően eltérő DB_UNIQUE_NAME értéket kell beállítani. Erre tipikus példa a Dataguard: az éles és a készenléti adatbázispéldányhoz külön DB_UNIQUE_NAME beállítás tartozik.
RAC esetén az összes példányhoz azonos a DB_UNIQUE_NAME értéket kell beállítani (ez esetben a DB_NAME egyezik, a SID viszont eltér.)
Szolgáltatásnév
A service (adatbázis-szolgáltatás) az adatbázisrendszer logikai egysége. Szeveroldalról a terhelés kezelésére (workload management) szolgál: minden service-hez egyedi attribútumok, küszöbértékek és prioritások rendelhetők. Kliensoldalról az adatbázis logikai reprezentációja.
Egy adatbázishoz több service is létrehozható. A SERVICE_NAMES a példányhoz tartozó inicializációs paraméter, amely megadja, hogy a példányon mely service-ekhez csatlakozhat a kliens.
RAC esetén egy service több instance-on is futhat (ez az általános).
Az instance PMON folyamata automatikusan beregisztrálja az instance-t, és az aktív service-eket az alapértelmezett listener folyamatba (lásd lsnrctl services
). (A listener.ora
fájlban ezek explicite is megadhatók.)
Az adatbázishoz történő csatlakozáskor megadható a kívánt szolgáltatás neve. Ha ez nincs megadva, akkor az alapértelemzett (a SID-del megegyező nevű) service-hez kapcsolódik a kliens.
Hálózati szolgáltatásnév
A hálózati szolgáltatásnév (net service name) egy olyan név, amely egy kapcsolatleíróra (connect descriptor) oldódik fel.
A kapcsolatleíró egy hálózati célt azonosít: egyrészt a szolgáltatást (SID vagy szolgáltatásnév formájában), másrészt a szerver hálózati elérhetőségét (hálózati protokoll, hálózati cím és port).
A hálózati szolgáltatásnév és a kapcsolatleíró általában egy helyi konfigurációs fájlban, a tnsnames.ora
fájlban van definiálva, ezt nevezi az Oracle local naming method-nak. A tnsnames.ora
használata esetén a hálózati szolgáltatásnévre mint TNS-név hivatkoznak. (A TNS (Transparent Network Substrate) az Oracle saját, egységes hálózati megoldása az adatbázishoz történő csatlakozáshoz, amely elfedi az alsóbb hálózati rétegeket, pl. TCP/IP. Az SQL*Net (amelynek legfontosabb eleme a TNS Listener) erre épül.)
A hálózati szolgáltatásnév valamilyen címtárszolgáltatásból is jöhet, de ez jóval ritkább megoldás.
Példák
Csatlakozás az adatbázishoz
Az adatbázishoz történő csatlakozás a következőképpen történik:
CONNECT <username>/<password>@<connect_identifier>
ahol a <connect_identifier>
lehet szolgáltatásnév vagy hálózati szolgáltatásnév.
Nevek lekérdezése
SHOW PARAMETER db_name;
NAME TYPE VALUE ------------- ----------- -------------- db_name string SALES
SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME ------------------ SALES.US.ACME.COM
SHOW PARAMETER db_domain;
NAME TYPE VALUE ------------- ----------- -------------- db_domain string US.ACME.COM
DB-link
DB-link létrehozása:
CREATE DATABASE LINK hq USING 'sales';
SELECT DB_LINK FROM USER_DB_LINKS;
DB_LINK ------------------ HQ.US.ACME.COM
A globális adatbázisnév domén részének megváltoztatása:
ALTER DATABASE RENAME GLOBAL_NAME TO sales.jp.acme.com;
SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME ------------------------ SALES.JP.ACME.COM
A domén ellenőrzése külön is:
SHOW PARAMETER db_domain;
NAME TYPE VALUE ------------- ----------- -------------- db_domain string US.ACME.COM
A DB_DOMAIN nem változott meg, mivel független a GLOBAL_NAME paraméter értékétől. A domént az utóbbi határozza meg. (A DB_DOMAIN paraméter értékét szinkronba kell hozni a GLOBAL_NAME paraméterben megadott doménnel.)
Az új doménbeállítások tesztelése:
CREATE DATABASE LINK supply USING 'supply';
SELECT DB_LINK FROM USER_DB_LINKS;
DB_LINK ------------------ HQ.US.ACME.COM SUPPLY.JP.ACME.COM