Ha már tudunk szépen Oracle-t installálni, és belépni rá, akkor tudunk kellene, hogy indítsuk el, illetve illetve állítsuk le. Illetve, mivel nem kívánjuk ezt minden egyes alkalommal kézzel elkövetni, jó lenne azt is tudni, hogyan automatizálhatjuk a leállítást illetve a leállást a rendszerhez. Akkor nézzük a szükséges utóműveleteket az rendszerünkön és az Oracle-el.
Oracle rendszer script létrehozása Solarishoz
Oratab editálása
Első lépésként meg kell ismerkednünk az oratab file-al. Hasonlókép a crontab, (v)fstab, filehoz, ez egy szöveges file, ami ez esetben az Oracle instance-okról ad információt, és az Oracle maga is ezt használja fel indulásnál, működésnél.
Az oratab file tartalma általában három részből áll, amit kettőspontok választanak el egymástól. Az első az instance neve, majd az instance PATH, majd egy Y, vagy N betű. Ez az utolsó igen vagy nem azért felel, hogy kívánjuk-e, hogy az adatbázis indulásakor, ez az instance is elinduljon automatikusan vagy nem. Mi most akarni fogjuk, úgyhogy Y-ra írjuk át.
RC (rendszer indító) script létrehozása
Létre kell, hoznunk a megfelelő Oracle inicializáló egyszerű rc-scriptet. Akár milyen bonyolultságú lehet, de én ajánlom a következőt:
# vi /etc/init.d/dbora
-
ORA_HOME=/ora10g/oracle/product/10.2.0/db_1
ORA_OWNER=oracle
if [! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME]
then
echo „Oracle startup:cannot start”
exit
fi
case „$1” in
‘start’)
# Start the Oracle databases:
su – $ORA_OWNER -c $ORA_HOME/bin/dbstart
su – $ORA_OWNER -c „$ORA_HOME/bin/lsnrctl start”
;;
‘stop’)
#Stop the Oracle databases:
su – $ORA_OWNER -c $ORA_HOME/bin/dbshut
su – $ORA_OWNER -c „$ORA_HOME/bin/lsnrctl stop”
;;
esac
A scriptben természetesen a ORA_HOME és ORA_OWENR változókat a rendszerünk szerint kell specifikálnunk.
Állítsuk be a megfelelő jogosultságait
# chgrp dba dbora
# chmod 750 dbora
Symlinkek készítése a megfelelő futási szintekhez:
# ln -s /etc/init.d/dbora /etc/rc3.d/K01dbora
# ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora
Ezt követően a rendszert újraindítva az Oracle adatbázisunknak, és a definiált instance-nak szintén el kell tudnia indulnia automatikusan.
Oracle rendszer process-ek
Egy alap Oracle adatbázis esetén alap esetben a következő processeket kellene látnunk:
Íme pár információ és funkció a sokat nem mondó process nevekről:
- ora_pmon_orcl [–] Process monitor
- ora_smon_orcl [–] Systen Monitor
- ora_mman_orcl, ora_mmon_orcl, ora_mmnl_orcl [–] Memory manager, Monitor, Monitor Lite
- ora_arc0_orcl, ora_arc1_orc, ora_arc2_orc [–] Archive log writer
- tnslsnr LISTENER –inherit [–] Listener
Oracle instance kezelése parancssorból
Terminálból az SQLPlus alkalmazás az, amivel könnyen gyorsan hozzáférhetünk az Oracle adatbázisunkhoz.
Az SQLPlusnak szüksége van néhány környezeti változóra a működéshez. Amennyiben ezek nincsenek definiálva úgy errort kaphatunk. Ajánlatos a beállított oracle userünket használni erre a célra:
Ezek után a következő parancsal tudunk csatlakozni egy Oracle Adatbázisban lévő userrel az adatbázishoz:
> CONNECT [username] AS SYSDBA
Instance elindítása:
> STARTUP
Normál indítás. Az adatbázis instance elindul, felmountoldik, és nyitottá válik.
> STARTUP NOMOUNT
Az adatbázis instance elindul, de nem mountolódik fel. Tipikusan akkor használjuk, ha adatbázist hozunk létre.
> STARTUP MOUNT
Adatbázis instance elindul, fel is mountolódik, de nem lesz nyitott. Különböző karbantartási műveletekhez ajánlott.
> STARTUP RESTRICT
Tipikusan recovery módban való indítás
Instance leállítása:
> SHUTDOWN NORMAL
Normál leállítás, semmilyen új kapcsolat nem lesz engedélyezett, de az instance meg fogja várni az összes aktuális kapcsolat végét. Hosszadalmas.
> SHUTDOWN IMMEDIATE
Új kapcsolatok nem jöhetnek létre, de a meglévő kapcsolatok se kezdhetnek új tranzakciókat. Minden nem commitált tranzakció vissza lesz vonva (roll back), majd az Oracle nem várja meg az felhasználók lecsatlakozását, bontja magától a kapcsolatokat. Leginkább használatos, ha a felhasználók nem elérhetőek.
> SHUTDOWN TRANSACTIONAL
Nem lehetnek új kapcsolatok, nem lehetnek új tranzakciók, viszont a meglévő tranzakcióknak commitálódnia kell. Ennyiben különbözik tehát az IMMEDIATE-től.
> SHUTDOWN ABORT
Semmire se vár, egy az egybe lekapcsol mindent, sajnos ez sok esetben inkonzisztens adatbázisokhoz vezethet.
En a SID-et is meg szokom adni biztos ami biztos alapon.
Illetve szeretnem felhivni a figyelmedet a cikkben egy apro tevedesre. A kornyezeti valtozok prefixe ORACLE_ es nem ORA_
Az SID az teljesen jogos!
A scriptben viszont ott az nem shell kornyezeti valtozo lenne, azt csak a script hasznalja. Ergo macskafule is lehet, mert a parancs kiadasanal helyetesitodik be.
Koszi a kommentet!
Igen, ezt egy kicsit beneztem. Ugyanakkor az a tapasztalat, hogy az Oracle cuccok szeretik, ha az ORACLE_HOME es az ORACLE_SID valtozok indulaskor ki vannak exportalva, ugyanis a su -c nem mindig veszi fel.
A bevalt gyakorlat nalunk egyfelol ezen valtozok init scripbe beemelese, illetoleg a ~oracle alatt egy .profile fajl elhelyezese, ahol ezen valtozok kiexportalasra kerulnek, es az adatbazist elindito parancsok sh-val valo meghivasa (su – ${ORACLE_OWNER} – „sh -c ‘$ORACLE_HOME/bin/dbstart'”). Igy ugyanis minden rendszeren valamilyen uton-modon kiexportalasra kerulnek az oracle valtozoi, melyekre szukseg lehet.
Ehh, a masodik – jel a su parancsnal egy -c akart lenni, csak lemaradt.