Koskee seuraavia:
Oracle-tietokanta – Oracle 12cR1 12.1.0.1.0 Enterprise Edition
Käyttöjärjestelmät – Oracle Linux 6.4 ja ydin 2.6.39-400.109.17.1.el6uek.x86-64 sekä
Red Hat Enterprise Linux ja ydin 2.6.32-431.el6.x86_64
Tallennusympäristöt – Dell EqualLogic PS 5000 ja Dell EqualLogic PS 6110
Ongelma:
Miten muodostan yhteyden Oracle RAC 12cR1:n liitettäviin tietokantoihin?
Ratkaisu:
Liitettäviin tietokantoihin voidaan muodostaa yhteys neljällä tavalla.
- käyttämällä liitettävän tietokannan kanssa samannimistä oletuspalvelua, jonka tietokantaohjelmisto luo automaattisesti
- käyttämällä käyttäjän määrittämiä palveluja, jotka on luotu liitettävän tietokannan ominaisuudella SRVCTL-apuohjelmalla ja jotka yhdistävät palvelun liitettäviin tietokantoihin
- käyttämällä alter-istuntokomentoa ja asettamalla säilöksi haluamasi säilön
- käyttämällä Enterprise Manager Expressiä.
1. Oletuspalvelun käyttäminen yhdistettäessä liitettävään tietokantaan
Jotta yhteys liitettävään tietokantaan voidaan muodostaa oletuspalvelua käyttämällä, seuraavat toimet on suoritettava.
- tnsnames.ora-tiedostoon on tehtävä merkintä, joka määrittää tietokantojen osoitteet, joiden avulla tietokantaan voidaan muodostaa yhteys.
- Liitettävän tietokannan tila on muutettava asennetusta luku- ja kirjoitustilaan.
tnsnames.ora-tiedostoon tehtävät merkinnät:
Vaikka tietokanta-ohjelmisto luo Oracle RAC 12c:ssa automaattisesti oletuspalvelun, jolla on sama nimi kuin liitettävällä tietokannalla, luotavassa tnsnames.ora-tiedostossa on kuitenkin vain yksi yleistä tietokantaa koskeva merkintä. Jos kyseessä on esimerkiksi kaksilaitteinen Oracle RAC 12c, jossa cpdb on yleinen tietokanta, pdb1 ja pdb2 ovat kaksi liitettävää tietokantaa ja cpdb1 ja cpdb2 ovat kaksi esiintymää, tnsnames.ora-tiedoston oletusmerkintä näkyy alla:
CPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cpdb.dbase.lab)
)
)
Liitettävien tietokantojen oletuspalvelun nimelle on siis luotava tnsnames.ora-tiedostossa merkinnät alla osoitetulla tavalla:
PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1.dbase.lab)
)
)
PDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb2.dbase.lab)
)
)
Liitettävän tietokannan tilan muuttaminen:
Kun liitettävät tietokannat luodaan, open_mode on oletusarvoisesti vain asennettu. Tämä voidaan vahvistaa seuraavasti:
SQL> select name, open_mode from v$pdbs;
NAME OPEN_MODE
PDB$SEED READ ONLY
PDB1 MOUNTED
PDB2 MOUNTED
Seuraava komento avaa kaikki liitettävät tietokannat luku- ja kirjoitustilassa.
SQL> Alter pluggable database all open;
Tämän jälkeen
tietokantaan voidaan muodostaa yhteys sqlplus:lla seuraavasti:
[oracle@node1 bin]$ sqlplus sys/oracle@pdb1 as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Tue Oct 8 11:23:32 2013
Copyright (c) 1982, 2013, Oracle. Kaikki oikeudet pidätetään.
Yhteydessä:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing
2. Käyttäjän määrittämän palvelun käyttäminen yhdistettäessä liitettävään tietokantaan
Edellä määritettyä oletuspalvelua tulee käyttää ainoastaan hallinnollisiin tarkoituksiin. Sitä ei saa käyttää sovelluksissa. Käyttäjän määrittämiä palveluja on aina käytettävä sovelluksissa, sillä käyttäjän määrittämiä palveluja voidaan mukauttaa sovellusten vaatimusten mukaisiksi. Yhteyden muodostaminen käyttäjän määrittämillä palveluilla sisältää seuraavat vaiheet:
- Luo tietokantapalvelu PDB-ominaisuudella käyttämällä SRVCTL-apuohjelmaa.
- Luo luodulle palvelulle merkintä tnsnames.ora-tiedostoon.
- Käynnistä palvelu
- Muodosta yhteys tietokantaan palvelulla ja pdb-ominaisuudella, jotka on luotu vaiheessa a
a. Luo tietokantapalvelu PDB-ominaisuudella käyttämällä SRVCTL-apuohjelmaa
Seuraavat komennot SRVCTL-apuohjelmassa luovat kaksi tietokantapalvelua (hr1 ja sales1), jotka yhdistetään liitettävään tietokantaan pdb1:
[[oracle@node1 bin]$ srvctl add service -db cpdb -service hr1 -pdb pdb1 -preferred cpdb1 -available cpdb2
[oracle@node1 bin]$ srvctl add service -db cpdb -service sales1 -pdb pdb1 -preferred cpdb1 -available cpdb2
pdb-ominaisuutta voidaan tarkastella tietohakemiston näkymässä all_services.
SQL> SELECT NAME, PDB FROM all_services;
NAME PDB
pdb1.dbase.lab PDB1
hr1 PDB1
sales1 PDB1
Komento $ srvctl config service –db luetteloi myös käytettävissä olevat palvelut.
b. Luo luodulle tietokantapalvelulle merkintä tnsnames.ora-tiedostoon
Voimme luoda HR_PDB1:n ja SALES_PDB1:n verkkopalvelunimet, joita hr- ja myyntisovellus voivat käyttää, jotta yhteys liitettävään pdb1-tietokantaan voidaan muodostaa seuraavasti:
HR_PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hr1.dbase.lab)
)
)
SALES_PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales1.dbase.lab)
)
)
c. Käynnistä palvelu
[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1
Palvelu hr1 ei ole käynnissä
[oracle@nsnode1 bin]$ srvctl start service -db cpdb -service hr1
Liitettävään tietokantaan yhdistetyn palvelun käynnistäminen avaa automaattisesti liitettävän tietokannan luku- ja kirjoitustilassa.
d. Muodosta yhteys tietokantapalveluun
Käyttäjä muodostaa yhteyden liitettävään tietokantaan käyttämällä liitettävän tietokannan ominaisuuden sisältävää tietokantapalvelua.
Esimerkiksi SYS-käyttäjä voi muodostaa yhteyden pdb1-tietokantaan käyttämällä siihen yhdistettyä HR_PDB1-tietokantapalvelua:
SQL> connect sys/oracle@HR_PDB1 AS SYSDBA
Connected.
SQL> SHOW CON_ID;
CON_ID
3
SQL> SHOW CON_NAME;
CON_NAME
PDB1
3. Alter-istuntokomennon käyttäminen yhdistettäessä liitettävään tietokantaan
Kun muodostat RAC-yhteyden, muodostat oletusarvoisesti CDB$ROOT-yhteyden. Jokainen RAC-esiintymä avaa liitettävän tietokannan kokonaisuudessaan, ja yksi järjestelmän näköistiedosto on käytettävissä. Jos haluat muuttaa istunnon liitettäväksi tietokannaksi, voit tehdä sen muuttamalla istuntoa ja asettamalla säilöksi haluamasi säilön. Nykyisen säilön nimi voidaan tarkistaa kyselyllä show con_name.
[oracle@node1 bin]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Oct 9 13:56:27 2013
Copyright (c) 1982, 2013, Oracle. Kaikki oikeudet pidätetään.
Yhteydessä:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing
SQL> show con_name;
CON_NAME
CDB$ROOT
SQL> ALTER SESSION SET CONTAINER = PDB1;
Session altered.
SQL> SHOW CON_NAME;
CON_NAME
PDB1
SQL> ALTER SESSION SET CONTAINER = PDB2;
Session altered.
SQL> SHOW CON_ID;
CON_ID
4
SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;
Session altered.
SQL> SHOW CON_NAME;
CON_NAME
CDB$ROOT
Säilön tunnisteen kuvaukset ovat seuraavat:
Säilön tunniste |
Kuvaus |
0 |
Whole CDB |
1 |
CDB$ROOT |
2 |
PDB$SEED |
3–254 |
PDBs |
Taulukko 1: säilön tunnisteen kuvaukset
Esimerkissä con_id 3 on pdb1 ja con_id 4 on pdb2.
[grid@node1 bin]$ echo $ORACLE_HOME
/u01/app/12.1.0/grid
[grid@node1 bin]$ echo $ORACLE_SID
+ASM1
[grid@node1 bin]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Oct 9 13.51.39 2013
Copyright (c) 1982, 2013, Oracle. Kaikki oikeudet pidätetään.
Yhteydessä:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management
SQL> show con_id;
CON_ID
0
SQL> show con_name;
CON_NAME
Ei yhdistetty
4. Enterprise Manager (EM) Expressin käyttäminen yhdistettäessä liitettävään tietokantaan
Jos tietokanta luodaan Database Configuration Assistantilla (DBCA), DBCA toimittaa EM Expressin URL-osoitteen. URL-osoitteen muoto on http://:portnumber/em ja portin oletustunnus on 5500.
Ennen kuin kyseiseen URL-osoitteeseen voidaan siirtyä EM Expressin käyttämistä varten, seuraava SQL-lauseke on annettava portin vahvistamiseksi EM Expressille:
SQL> SELECT dbms_xdb_config.gethttpsport from dual;
GETHTTPSPORT
5500
Jos syöte on edellä määritetyn kaltainen, DBCA:n näyttämään URL-osoitteeseen voidaan muodostaa yhteys.
Jos syöte on kuitenkin nolla, kuten
GETHTTPSPORT
PL/SQL-menetelmä DBMS_XDB_CONFIG.SETHTTPSPORT on suoritettava, jotta HTTPS-portti voidaan asettaa EM Expressille. Esimerkki:
SQL> exec dbms_xdb_config.sethttpsport(5500);
PL/SQL-menetelmä on suoritettu.
Tämän jälkeen EM Expressiä voidaan kokeilla käyttää URL-osoitteella.
HTTP-portti voidaan myös määrittää EM Expressille seuraavasti:
SQL> select dbms_xdb_config.gethttpport from dual;
SQL> exec dbms_xdb_config.sethttpport(8080);
Jotta EM Express -portti voidaan määrittää liitettäville tietokannoille, säilö on muutettava kyseiseen liitettävään tietokantaan ja PL/SQL-menetelmä on suoritettava kyseisen säilön portin asettamiseksi.
Tämän jälkeen HTTP-portti voidaan tarkistaa kohteille cpdb,pdb1 ja pdb2 seuraavasti:
SQL> select dbms_xdb_config.gethttpport from dual;
GETHTTPPORT
8080
SQL> alter session set container = pdb1;
Session altered.
SQL> select dbms_xdb_config.gethttpport from dual;
GETHTTPPORT
8081
SQL> alter session set container = pdb2;
Session altered.
SQL> select dbms_xdb_config.gethttpport from dual;
GETHTTPPORT
8082
HUOMAUTUS: jos et voi vieläkään muodostaa yhtyettä EM Expressin URL-osoitteeseen, lataa Listener Control grid-käyttäjänä ja yritä uudelleen.