SDS — fejlesztői dokumentáció
Szabványos, dokumentált, visszakövethető és automatizált keretrendszer Oracle adatbázis-javító scriptek biztonságos futtatásához — minimális emberi beavatkozással, maximális átláthatósággal.
01
Az üzemeltetett rendszerben időről időre szükségessé válik adatbázis-szintű közvetlen beavatkozás. Ezek három fő forrásból erednek:
Korábban ezeket a javításokat manuálisan, ad-hoc módon, dokumentálatlanul hajtották végre. Egy-egy egyedi adatjavítás akár 45 percet is igénybe vehetett, nem volt nyoma, ki mikor mit futtatott, és nem volt közvetlen kapcsolat a jegykezelő rendszerrel.
Cél: szabványos, dokumentált, visszakövethető és automatizált keretrendszer kialakítása az adatbázis-javító scriptek biztonságos futtatásához — minimális emberi beavatkozással, maximális átláthatósággal.
02
Az SDS rendszer két különálló adatbázis-rétegből épül fel, amelyek egy DB linken keresztül kommunikálnak egymással.
a kezelői réteg sosem nyúl közvetlenül az üzleti adatokhoz — mindig a végrehajtó réteg dispatcherén keresztül
Végrehajtó séma
Kezelői réteg (APEX)
03
Egy feladat végrehajtása hat lépésből áll:
A felhasználó elkészíti a futtatandó tételek listáját CSV fájlban. Minden sor egy eljárás-hívást jelent a szükséges paraméterekkel.
CSV feltöltése az APEX felületen. A rendszer azonnal feldolgozza: soronként beolvassa, staging táblába tölti, batch azonosítót rendel hozzá.
A feltöltött sorok megtekinthetők és ellenőrizhetők indítás előtt. Hibás sorok már itt jelzésre kerülnek.
Egy gombnyomásra minden PENDING sor elküldésre kerül a végrehajtó adatbázisba. Az audit táblában rögzül az indító felhasználó, időpont és session.
A végrehajtó réteg Oracle Scheduler job-okat hoz létre. Ezek egymástól függetlenül futnak le.
Az APEX felületen lekérdezhető az eredmény: sikeres-e, mennyi ideig futott, mit írt vissza az eljárás.
04
A rendszer kétszintű naplózást alkalmaz — a kezelői és a végrehajtó rétegen egyaránt.
audit lánc — bármely időpontban visszakereshető: ki indította, milyen paraméterekkel, mi volt az eredmény
05
Egyedi javítás
Tömeges feldolgozás
Dokumentálás
06
Az SDS keretrendszer generikus — bármilyen Oracle tárolt eljárás meghívható rajta keresztül. A következő javítási típusok kerültek eddig implementálásra:
6.1
Szülő-gyermek kapcsolatban lévő adatok módosítása: lezárás dátummal, aktív jelző kezeléssel, új kapcsolat létrehozása duplikátum védelemmel.
6.2
Adott rekord meghatározott mezőjének módosítása. Duplikátum védelem: ha a módosítás már megtörtént, a rendszer kihagyja és naplózza.
6.3
Adott entitás tiltólistára helyezése vagy a tiltás feloldása, teljes validációval. Tömeges feldolgozáshoz XLSX/CSV konverter script áll rendelkezésre.
07
Oracle nem engedélyezi, hogy DB linken keresztül hívott eljárás a hívó tranzakciójában adatmódosítást (DML) végezzen.
MegoldásMinden érintett adatmódosítás önálló tranzakcióba (PRAGMA AUTONOMOUS_TRANSACTION) került, külön segédeljárásokkal az atomikus végrehajtáshoz.
DB linken keresztül nem lehet CLOB típusú OUT paramétert átadni.
MegoldásVARCHAR2(32767) típusú wrapper eljárás készült, amely a kezelői réteg számára olvasható formában adja vissza az eredményt.
Tömeges feldolgozásnál párhuzamosan futó job-ok körkörösen egymásra vártak, ami holtpontot (deadlock) okozott.
GyökérokIdegen kulcs (FK) oszlopokon hiányzó indexek — ezek nélkül Oracle a DELETE műveletnél az egész gyermektáblát zárolja, ami párhuzamos futásnál kölcsönös blokkolást okoz.
AzonosításRendszer-katalógus lekérdezéssel meghatározásra kerültek az indexeletlen FK oszlopok.
MegoldásHiányzó indexek létrehozása ONLINE opcióval (leállás nélkül), plusz a package-szintű globális változók lokális változókra cserélése a párhuzamos futások közötti adatkeveredés megelőzésére.
A végrehajtó motor kódvédelmét (Oracle wrap) követően az ékezetes karakterek elvesztek a napló üzenetekben.
MegoldásA wrap futtatása előtt UTF-8 karakterkészlet beállítása (NLS_LANG), illetve a napló üzenetek ékezet nélküli szövegekre cserélése robusztusabb megoldásként.
08
A jelenlegi egycélrendszeres architektúra bővíthető további adatbázisok bekötésével — az APEX felületen célrendszer-választóval, a háttérben regisztrált DB linkekkel.
A rendszer tesztkörnyezetben validált és éles üzemre kész. Élesítéshez szükséges: DB linkek létrehozása az éles adatbázisokhoz, a végrehajtó csomag telepítése az éles sémába.
Az SDS keretrendszer bővíthető új javító eljárásokkal programozói beavatkozás nélkül — elegendő az eljáráscsomag és a hozzá tartozó CSV minta elkészítése.
A meglévő XLSX/CSV konverter script tovább általánosítható, hogy tetszőleges eljárást kezeljen, ne csak egy specifikus típust.
09
Az SDS rendszer egy szabványos, biztonságos és teljes mértékben dokumentált keretrendszert biztosít az Oracle adatbázis-javító eljárások futtatásához. Bevezetésével az egyedi javítások ideje 45 percről 2–3 percre csökkent, a dokumentálás automatikussá vált, és a teljes folyamat visszakereshető a jegykezelő rendszer batch azonosítóján keresztül. A rendszer éles üzemre kész.
Hatékonyság
95%-os időmegtakarítás egyedi javításoknál; tömeges feldolgozásnál arányosan több.
Biztonság
Kétlépéses, jóváhagyásos folyamat — véletlen futtatás kizárva.
Nyomon követés
Teljes audit lánc a kezelői felülettől a végrehajtó adatbázisig, minden futás archiválva.
Szabványosítás
Egységes eljárásrend minden javításhoz, CSV alapú tömeges feldolgozással.
Bővíthetőség
Új scriptek bevezetése programozói beavatkozás nélkül, pusztán eljáráscsomag + CSV elkészítésével.
Kapcsolódás
Jegykezelő rendszerhez azonnal illeszthető batch azonosítón keresztül.