Szüksége van Oracle segítségre?

Szüksége van Oracle segítségre?

Forduljon hozzám bizalommal e-mailben: palffy.peter@oracle.szakerto.hu. Több mint 20 éves tapasztalattal rendelkezem az Oracle adatbázisok telepítése, üzemeltetése, karbantartása, hibaelhárítása és optimalizálása terén.

Oracle DBA szolgáltatásaimról további információt itt talál.

2025. augusztus 27., szerda

Oracle 19c Standard Edition Adatbázis Hangolás Statspack-kel: Egy Régi Eszköz Újraélesztése

 Az Oracle adatbázisok teljesítményhangolása, vagy más néven tuningolása, kulcsfontosságú feladat minden adatbázis-adminisztrátor (DBA) számára. Míg az Oracle Enterprise Edition számos fejlett eszközt, mint például az Automatic Workload Repository-t (AWR) és az Active Session History-t (ASH) kínálja, addig a Standard Edition (SE) licenc sokkal korlátozottabb lehetőségeket biztosít. Ebben a bejegyzésben egy régi, de még mindig rendkívül hasznos eszközre, a Statspack-re fogunk fókuszálni, amely Oracle 19c Standard Edition alatt is hatékonyan használható a teljesítményproblémák felderítésére.

Ez a részletes, technikai útmutató végigvezet téged a Statspack telepítésén, konfigurálásán és használatán, hogy te is képes legyél a legtöbbet kihozni Oracle SE adatbázisodból. A célunk, hogy egy komplett képet adjunk arról, miként lehet ezt a klasszikus eszközt a modern Oracle 19c környezetben is hatékonyan alkalmazni, különös tekintettel azokra a buktatókra, amelyek egy régen nem frissített csomag esetében előfordulhatnak.

1. Miért a Statspack? Az Örökzöld Teljesítmény-analizátor

Az Oracle Standard Edition egyik legnagyobb kihívása a teljesítményhangoláshoz szükséges eszközök hiánya. Az Oracle szándékosan korlátozza a drágább Enterprise Edition funkcióit, így a DBA-knak kreatívnak kell lenniük. Itt jön képbe a Statspack.

A Statspack egy ingyenes, az Oracle által biztosított szkriptgyűjtemény, amely lehetővé teszi az adatbázis teljesítményadatainak időszakos rögzítését, ún. "snapshot"-ok formájában. Ezek a snapshotok az adatbázis állapotának egy-egy pillanatképét rögzítik, beleértve a rendszerstatisztikákat, várakozási eseményeket (wait events), a legtöbb erőforrást fogyasztó SQL utasításokat és még sok mást. Két snapshot között eltelt időszakról riportot készítve részletes képet kaphatunk az adatbázis terheléséről és a potenciális szűk keresztmetszetekről.

Hogyan működik?

A Statspack a PERFSTAT séma alatt hoz létre táblákat, amelyekben eltárolja a begyűjtött teljesítményadatokat. A snapshot készítésekor a statspack.snap procedúra lefut, amely összegyűjti az aktuális adatokat a dinamikus teljesítmény nézetekből (V$ nézetek) és beilleszti őket a PERFSTAT tábláiba. A riportkészítés során a spreport.sql szkript két, általad megadott snapshot adatait hasonlítja össze, és ebből generál egy elemzésre alkalmas szöveges riportot.

A Statspack nagy előnye, hogy teljesen operációs rendszer független. Legyen szó Windows-ról, Linux-ról vagy bármilyen Unix variánsról, a működése és a használata megegyezik, hiszen teljes mértékben az adatbázison belül fut. Bár az Oracle már egy jó ideje nem fejleszti aktívan, az alapvető funkcionalitása és az általa nyújtott adatok Oracle 19c alatt is rendkívül értékesek a teljesítményproblémák diagnosztizálásában.

2. A Statspack Telepítése Oracle 19c Adatbázisra

A telepítési folyamat meglehetősen egyszerű, de néhány lépésre érdemes odafigyelned a zökkenőmentes működés érdekében.

Előkészületek:

  1. Táblatér Létrehozása: Mielőtt telepítenéd, hozz létre egy dedikált táblateret a PERFSTAT felhasználó számára. Ez a bevált gyakorlat, mivel így a Statspack által gyűjtött adatok nem terhelik a SYSTEM vagy más, alkalmazások által használt táblateret.

    SQL> CREATE TABLESPACE PERFSTAT_DATA
    DATAFILE '/u01/oradata/ORCL/perfstat_data01.dbf' SIZE 500M
    AUTOEXTEND ON NEXT 100M MAXSIZE 4G;
    

Telepítés lépésről lépésre:

  1. Csatlakozás SYSDBA-ként: Nyiss egy terminált vagy parancssort, és csatlakozz az adatbázishoz SYS felhasználóként SYSDBA jogosultsággal.

  2. A Telepítő Szkript Futtatása: A telepítő szkript az $ORACLE_HOME/rdbms/admin könyvtárban található. Indítsd el a spcreate.sql szkriptet:

    sqlplus / as sysdba
    SQL> @?/rdbms/admin/spcreate.sql
    
  3. Paraméterek Megadása: A szkript futás közben több kérdést is feltesz:

    • PERFSTAT user password: Adj meg egy biztonságos jelszót a PERFSTAT felhasználónak. Jegyezd fel, mert a riportok készítéséhez erre a felhasználóra lesz szükséged.

    • Default tablespace for PERFSTAT user: Itt add meg az előzőleg létrehozott PERFSTAT_DATA táblatér nevét.

    • Temporary tablespace for PERFSTAT user: Add meg az adatbázis alapértelmezett ideiglenes táblaterét (általában TEMP).

A szkript lefutása után a PERFSTAT felhasználó és az összes szükséges tábla, nézet és csomag létrejön. A telepítés után a PERFSTAT felhasználói fiókot akár zárolhatod is (ALTER USER PERFSTAT ACCOUNT LOCK;), mivel a snapshotok készítését és a riportolást ütemezett feladatokon keresztül, vagy SYSDBA-ként is elvégezheted.

3. Snapshot Készítése: Manuálisan és Ütemezve

A snapshotok rögzítik az adatbázis teljesítményadatait egy adott időpillanatban. Készíthetsz belőlük manuálisan, vagy beállíthatsz automatikus, ütemezett adatgyűjtést.

Manuális Snapshot Készítése:

Csatlakozz a PERFSTAT felhasználóval, és futtasd a statspack.snap eljárást:

sqlplus perfstat/jelszo
SQL> EXEC statspack.snap;

Snapshot Szintek:

A statspack.snap eljárásnak megadhatsz egy i_snap_level paramétert, amellyel a gyűjtött adatok részletességét szabályozhatod. A leggyakoribb szintek:

  • Level 0: Alapvető teljesítmény-statisztikák (wait eventek, rendszerstatisztikák, stb.).

  • Level 5 (alapértelmezett): Mindent tartalmaz, amit a 0-s szint, kiegészítve a leginkább erőforrás-igényes SQL utasítások adataival. A legtöbb esetben ez a szint az ajánlott.

  • Level 10: Minden, ami az 5-ös szinten van, plusz részletes "child latch" információk. Ez a szint már jelentős többletterhelést okozhat, csak indokolt esetben használd.

Példa snapshot készítésére 5-ös szinten: EXEC statspack.snap(i_snap_level => 5);

Automatikus Snapshot Készítés dbms_scheduler-rel:

A rendszeres adatgyűjtéshez érdemes automatizálni a snapshotok készítését. Erre a dbms_scheduler a modern és javasolt megoldás. Az alábbi példa egy olyan jobot hoz létre, amely minden órában lefut.

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'STATSPACK_SNAPSHOT_JOB',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN statspack.snap; END;',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'FREQ=HOURLY; BYMINUTE=0',
    enabled         => TRUE,
    comments        => 'Hourly Statspack snapshot collection.');
END;
/

Általánosságban csúcsidőben érdemes sűrűbben, például 15-30 percenként, míg normál terhelés mellett óránként snapshotot készíteni.

4. A Régi Snapshotok Törlése és Automatizálása

A folyamatosan gyűjtött adatok idővel jelentős helyet foglalhatnak el a PERFSTAT_DATA táblatérben. A karbantartás elengedhetetlen része a régi, már nem releváns snapshotok rendszeres törlése.

Miért szükséges a törlés?

  • Tárhely-gazdálkodás: Megakadályozza a Statspack táblatér felesleges növekedését.

  • Teljesítmény: A riportok generálása gyorsabb lehet, ha a rendszernek nem kell hatalmas mennyiségű régi adaton végigmennie.

A sppurge.sql szkript segítségével manuálisan törölhetsz snapshotokat egy adott tartományban. Azonban sokkal hatékonyabb ezt is automatizálni. Az alábbi dbms_scheduler job minden nap lefut, és törli a 14 napnál régebbi snapshotokat:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'STATSPACK_PURGE_JOB',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN statspack.purge(i_num_days => 14); END;',
    start_date      => TRUNC(SYSTIMESTAMP) + INTERVAL '1' DAY, -- Holnap éjjel indul
    repeat_interval => 'FREQ=DAILY; BYHOUR=1', -- Minden nap hajnali 1-kor
    enabled         => TRUE,
    comments        => 'Daily purge of Statspack snapshots older than 14 days.');
END;
/

5. A 19c "Idle Event" Probléma és Javítása

Mivel a Statspack fejlesztése már régen leállt, nem minden esetben van felkészítve a legújabb Oracle verziók specifikumaira. Oracle 19c esetében tapasztalható, hogy a riportokban több, valójában tétlen (Idle) várakozási esemény is aktív várakozásként jelenik meg. Ez torzíthatja az elemzést, mivel a "Top Timed Events" szekcióban olyan események is előkelő helyre kerülhetnek, amelyekkel valójában nem kell foglalkoznod.

Szerencsére ezt a problémát egy egyszerű SQL utasítással orvosolhatod. Csatlakozz a PERFSTAT felhasználóval, és futtasd az alábbi INSERT parancsot. Ez az utasítás összegyűjti az adatbázis által ismert összes Idle eseményt a v$event_name nézetből, és hozzáadja őket a Statspack stats$idle_event táblájához, ha még nincsenek benne.

sqlplus perfstat/jelszo
SQL> insert into stats$idle_event
  select name from v$event_name where wait_class='Idle'
  minus
  select event from stats$idle_event;
commit;

Ezt a javítást elegendő egyszer, a Statspack telepítése után lefuttatnod, és a jövőbeni riportok már a helyes adatokat fogják mutatni.

6. Riportok Készítése

Miután összegyűjtöttél elegendő snapshotot egy vizsgálni kívánt időszakról, elkészítheted a teljesítményriportot.

  1. Csatlakozás PERFSTAT felhasználóval:

    sqlplus perfstat/jelszo
    
  2. A Riport Szkript Futtatása: Indítsd el a spreport.sql szkriptet az ORACLE_HOME/rdbms/admin könyvtárból:

    SQL> @?/rdbms/admin/spreport.sql
    
  3. Paraméterek Megadása: A szkript interaktívan bekéri a riport elkészítéséhez szükséges információkat:

    • List of Available Snapshots: Megjelenik egy lista az elérhető snapshotokról, azok ID-jával és időbélyegével.

    • Enter begin snap id: Add meg a kezdő snapshot azonosítóját.

    • Enter end snap id: Add meg a befejező snapshot azonosítóját.

    • Enter report name: Adj meg egy nevet a riport fájlnak, vagy hagyd az alapértelmezettet.

A szkript lefutása után az aktuális könyvtárban létrejön a megadott nevű .lst kiterjesztésű szöveges fájl. Ez a fájl tartalmazza a részletes teljesítményanalízist a két snapshot közötti időszakról.

A riport elemzése komoly szakértelmet igényel, és messze túlmutat ennek a bejegyzésnek a keretein. A riport felépítésének és a legfontosabb szekciók (Load Profile, Instance Efficiency, Top 5 Timed Events, SQL Statistics) értelmezésének egy jövőbeli bejegyzésben fogunk részletesen foglalkozni.

Remélem, ez a bejegyzés hasznos volt a számodra az Oracle Statspack csomaggal kapcsolatos információk megismerésében. Amennyiben további kérdésed lenne, ne habozz hozzám fordulni!

Szabadúszó vizsgázott Oracle szakértőként szívesen segítek akár az Oracle Statspack telepítésével kapcsolatban.

Oracle DBA Szolgáltatásaim a következőket tartalmazzák:

  • Telepítés és konfigurálás

  • Adatbázis migrálás

  • Hibaelhárítás és optimalizálás

  • Tanácsadás és oktatás

Vedd fel velem a kapcsolatot e-mailben a palffy.peter@oracle-szakerto.hu címen, ha bármilyen kérdésed van, vagy árajánlatot szeretnél kérni.

Segítek elérni az Oracle adatbázisokkal kapcsolatos céljaid!

2025. január 14., kedd

Nagy hír az Oracle 19c felhasználóknak! A támogatási dátum kiterjesztése és miért is fontos ez?

2029 december 31. az új dátum

Az Oracle jelentős döntést hozott a 19c verzió támogatásának meghosszabbításával kapcsolatban! A korábban 2026 április 30-ig terjedő tervezett "Premier Support" támogatási időszakot most egészen 2029 december 31-ig meghosszabbították. Ez a döntés számos előnnyel jár minden Oracle 19c verziót használó ügyfél számára.

Oracle 19c 23ai premier support date dátum ends vége


A 19c verzió előnyei és relevanciája:

  • Hosszú távú stabilitás: A meghosszabbított támogatási időszaknak köszönhetően hosszú távon számíthatunk a 19c verzió megbízható működésére és biztonságos üzemeltetésére.
  • LTS verzió: On premise verzióban a 19c jelenleg az egyetlen hosszú távú támogatással rendelkező (LTS) verzió, ami azt jelenti, hogy az Oracle kiemelt figyelmet fordít a fejlesztésére és a biztonsági javításokra.
  • 23ai verzió késése: A várva várt 23ai verzió még nem érhető el on-premise verzióban, és a megjelenésére sincs pontos dátum, "valamikor" 2025-ben. Ez azt jelenti, hogy a 19c továbbra is a legstabilabb és legbiztonságosabb választás a vállalati környezetek számára.
  • Negyedéves javítókészletek: Az Oracle rendszeresen, negyedévente kiadja a recommended patch setet a 19c verzióhoz, így mindig a legfrissebb biztonsági javításokkal és optimalizációkkal rendelkezhetünk. Ezen javítókészletek telepítésére kiemelt figyelmet érdemes fordítani.

Miért érdemes a 19c verzióra váltani?

Ha még korábbi Oracle verziókat használsz, erősen javaslom a 19c-re való migrációt. A hosszú távú támogatás, a rendszeres javítások és a stabil működés miatt ez a verzió hosszú távon is megtérülő befektetés.

Szakértői segítség:

A verzióváltás vagy a patch telepítés bonyolult feladat lehet. Szabadúszó, vizsgázott Oracle szakértőként szívesen segítek a feladatok tervezésében, kivitelezésében.

Szolgáltatásaim a következőket tartalmazzák:
  • Telepítés és konfigurálás
  • Adatbázis migrálás
  • Hibaelhárítás és optimalizálás
  • Tanácsadás és oktatás
  • Backup, recovery tervezés
Vedd fel velem a kapcsolatot e-mailben a palffy.peter@oracle-szakerto.hu címen, ha bármilyen kérdésed van, vagy árajánlatot szeretnél kérni.

Segítek elérni az Oracle adatbázisokkal kapcsolatos céljaid!