Felhasználói eszközök

Eszközök a webhelyen


it:oracle:nevek

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
Következő változat
Előző változat
it:oracle:nevek [2014/12/05 14:19] – [Globális név] rblstit:oracle:nevek [Unknown date] (aktuális) – külső szerkesztés (Unknown date) 127.0.0.1
Sor 1: Sor 1:
 +====== 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.<sup>*</sup> 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. 
 +
 +<sup>*</sup> 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:
 +
 +<code>
 +CONNECT <username>/<password>@<connect_identifier>
 +</code>
 +
 +ahol a ''<connect_identifier>'' lehet szolgáltatásnév vagy hálózati szolgáltatásnév.
 +
 +
 +==== Nevek lekérdezése====
 +<code sql>
 +SHOW PARAMETER db_name;
 +</code>
 +
 +
 +  NAME          TYPE        VALUE
 +  ------------- ----------- --------------
 +  db_name       string      SALES
 +
 +
 +<code sql>
 +SELECT * FROM GLOBAL_NAME;
 +</code>
 +
 +  GLOBAL_NAME
 +  ------------------
 +  SALES.US.ACME.COM
 +
 +
 +<code sql>
 +SHOW PARAMETER db_domain;
 +</code>
 +
 +  NAME          TYPE        VALUE
 +  ------------- ----------- --------------
 +  db_domain     string      US.ACME.COM  
 +
 +
 +==== DB-link ====
 +
 +DB-link létrehozása:
 +
 +<code sql>
 +CREATE DATABASE LINK hq USING 'sales'; 
 +</code>
 +
 +<code sql>
 +SELECT DB_LINK FROM USER_DB_LINKS; 
 +</code>
 +
 +  DB_LINK
 +  ------------------
 +  HQ.US.ACME.COM
 +
 +
 +A globális adatbázisnév domén részének megváltoztatása:
 +
 +<code sql>
 +ALTER DATABASE RENAME GLOBAL_NAME TO sales.jp.acme.com;
 +</code>
 +
 +<code sql>
 +
 +SELECT * FROM GLOBAL_NAME; 
 +</code>
 +
 +
 +  GLOBAL_NAME
 +  ------------------------
 +  SALES.JP.ACME.COM
 +
 +
 +A domén ellenőrzése külön is:
 +
 +<code sql>
 +SHOW PARAMETER db_domain;
 +</code>
 +
 +  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:
 +
 +<code sql>
 +CREATE DATABASE LINK supply USING 'supply'; 
 +</code>
 +
 +<code sql>
 +SELECT DB_LINK FROM USER_DB_LINKS; 
 +</code>
 +
 +  DB_LINK
 +  ------------------
 +  HQ.US.ACME.COM 
 +  SUPPLY.JP.ACME.COM