Ce trebuie sa urmărească un administrator de baze de date Oracle?

Author: Bit Software
Date: 25- 02- 2014

E o vorbă care spune că “este mult mai ușor să previi decât să tratezi”. Acest lucru se aplică cam în toate domeniile, inclusiv în IT și este valabil și pentru orice administrator: de aplicație, de baze de date, etc.

Ce ar trebui sa facă administratorul de baze de date Oracle pentru a asigura o exploatare optimă a acesteia? O definiție foarte sumară s-ar rezuma la următoarele atribuții:

Să asigure buna funcționare a acesteia, mai exact:

  • o încărcare optimă a resurselor pe server-ul de Oracle: procesorul să nu fie ocupat 80- 90% din timp, memoria să nu fie ocupată peste 90%, să fie suficient spațiu astfel încât să permită creșterea bazei de date cu cel puțin 25%;
  • un timp cât mai bun de răspuns al bazei de date pentru activitățile curente: introducere de documente, rapoarte financiare, balanțe contabile, etc.;

  • diagnosticarea și rezolvarea cât mai rapidă a incidentelor apărute, în baza de date, astfel încât utilizatorii să fie afectați cât mai puțin;

Să creeze și să implementeze o strategie de backup cât mai robustă:

  • să repună în funcțiune cât mai repede și cu pierderi minime baza de date în caz de corupere de fișiere, ștergere accidentală de date, pierderea bazei de date, etc;
  • să programeze execuția job-urilor de backup și mentenanță a bazei de date astfel încăt utilizatorii să fie cât mai puțin afectați de execuția acestora;să se asigure, în mod recurent, că backup-ul bazei de date se poate restaura fără erori pe un mediu de test;
  • să se asigure că mediul de stocare este unul sigur, este asigurată redundanța datelor și are disponibil un spațiu suficient;

Să verifice periodic dacă în logurile bazei de date nu au apărut incidente sau erori:

  • dacă infrastructura permite, să creeze notificări pe mail în cazul în care apar erori la nivelul bazei de date;
  • să verifice periodic logul bazei de date;
  • în cazul în care apar mesaje de eroare Oracle ( ORA - [nr. erorii]) să trimită aceste incidente către Oracle Support și să urmeze indicațiile primite;

Să monitorizeze în mod constant indicii de performanță ai bazei de date:

  • să modifice parametrii Oracle astfel încât să îmbunătățească timpul de răspuns al bazei de date;
  • să monitorizeze alertele primite în logul de Oracle, de exemplu, pe cele legate de spațiul disponibil pentru execuția backup-urilor, fișierelor de archivelog, etc;
  • să anticipeze pe cât posibil creșterea bazei de date și să prevină situațiile în care server-ul poate fi afectat de lipsa de resurse: spațiul pe disc, memorie alocată, încărcarea procesorului sau influența altor aplicații asupra bazei de date;
  • să creeze și să urmărească în mod constant execuția job-urilor de mentenanță a bazei de date: job de actualizare al statisticilor, defragmentare a bazei de date, gradul de încărcare a fișierelor bazei de date, etc.

Ce trebuie să urmărească un DBA pentru o exploatare optimă a unei baze de date Oracle?

Este o intrebare care ar trebui să răspundă următoarelor cerințe:

  • utilizatorii să nu fie afectați de activitatea curentă a DBA-ului:

    • execuția joburilor de mentenanță să nu influențeze activitatea curentă a utilizatorilor. Cu alte cuvinte un DBA ideal este cel pe care il simți cât mai puțin, dar asigură o bază de date sigură, care răspunde nevoilor utilizatorilor;

    • să nu necesite oprirea bazei de date pentru executarea anumitor activități recurente: backup-ul bazei de date, instalarea anumitor patch-uri, respectiv actualizări ale bazei de date. De regulă aceste operațiuni trebuie programate în afara programului de lucru;

    • să nu aștepte plângeri din partea utilizatorilor cu privire la timpul mare de răspuns al bazei de date, ci dimpotrivă să ia măsuri care să prevină acest lucru;

  • să aplice modificări ale bazei de date numai după ce acestea au fost testate și validate pe un mediu de test:

    • aplicarea de patch-uri și hotfix-uri să fie făcută obligatoriu înainte pe un mediu de test, iar după validarea acestora de către utilizatori să fie aplicate pe mediul de producție;

    • să aibă posibilitatea de a reveni la setările respectiv versiunea anterioară fără pierderi de date;

    • să aibă în vedere că aplicarea unor soluții de moment poate avea atât părți bune cât și părti rele, și să aleagă soluția optimă;

  • să țină cont de caracteristicile hardware ale server-ului pe care este instalată baza de date:

    • ca și regulă generală într-o bază Oracle datele trebuie stocate pe un mediu cât mai rapid și care să ofere redundanță: cât mai multe HDD-uri, 6 sau 8, cât mai rapide, cu o rată de transfer cât mai bună, montate într-un RAID 10;

    • controller-ul de hard disc este recomandat să aibă baterie de backup, care să permită salvarea datelor, în cazul în care se întrerupe alimentarea cu energie electrică;

    • o recomandare ar fi ca server-ul pe care este instalată baza de date să aibă UPS ( Sursă neîntreruptibilă ) care să asigure închiderea în mod corect a bazei de date.

Măsuri preventive

  • Urmărirea activității pe baza de date și gradul de încărcare al acesteia, identificarea în timp real a blocajelor care pot apărea și eliminarea cauzelor:

  • Anticiparea creșterii bazei de date, alocarea din timp a spațiului necesar, astfel încât să nu apară blocaje la nivel de bază de date din acest motiv;

  • Actualizarea statisiticilor în funcție de fiecare caz în parte. Actualizarea statisticilor ar trebui făcută numai în cazul în care crește volumul de date foarte mult într-un timp foarte scurt sau acestea nu mai sunt actuale. Dacă am o bază de date care are o creștere moderată a volumului de date, nu se justifică actualizarea zilnică a statisticilor. În acest caz o bună practică este actualizarea săptămânală a acestora.

  • Crearea de indecși în funcție de specificul fiecărei baze de date. Teoretic este bine ca o bază de date Oracle să aibă câte un index pe fiecare foreign key. Aceasta nu este o regulă generală, introducerea de indecși trebuie făcută treptat și verificat impactul pe care îl au aceștia asupra bazei de date.

  • Separarea datelor în funcție de importanță și modul în care sunt accesate. Dacă am o bază de date care folosește o tabelă foarte mare, ideal ar fi să pot stoca această tabelă pe un RAID separat de celelalte date. Teoretic punerea indecșilor pe un mediu de stocare separat asigură un timp de răspuns al bazei de date mai bun.