Oracle vs SQL Server – Sesti dio

System Metadata

Oracle i Microsoft SQL Server baze podataka imaju veliki broj tabela i drugih objekata kao što su pogledi, funkcije, bazne procedure koji se automatski kreiraju kada se instalira softver za upravljanje bazom podataka i kada se kreira baza podataka. Ove tabele na sistemskom nivou sadrže metapodatke o logičkim i fizičkim atributima o instanci i o bazama podataka koje se hostuju preko njih. U Oracle terminologiji skup ovih tabela se naziva data dictionary dok su u SQL Server terminologiji ove tabele poznate pod imenom system tables.

U SQL Serveru verzija 2005 ili novijoj, većina objekata sistemskog nivoa je smješteno u resource bazu podataka a manji dio se nalazi i u master bazi podataka. Kod Oracle-a, tabele data dictionary-a se nalaze u tablespace-ovima SYSTEM i u SYSAUX svake od baza podataka. Od SQL Server verzije 2005, direktan pristup sistemskim tabelama baze podataka je zabranjen. Umjetsto toga, formiran je određeni skup view-ova koji su poznati pod nazivom catalogue views. Njihova namjena je da obezbjede jedinstven interface prema sistemskim meta podacima. Kod Oracle-a su tabele koje pripadaju data dictionary kriptovane čime je onemogućen direktan pristup ili modifikovanje njihovog sadržaja od strane korisnika. Kao i kod SQL Servera, i kod Oracle-a je kreiran skup view-ova preko kojih je dozvoljeno da DBA i developeri vrše upite nad ovim skupom podataka. U Oracle terminologiji ovi view-ovi se nazivaju data dictionary views.

Definicije kataloških view-ova se čuvaju u SQL Server resource bazi podataka. Ovi sistemski view-ovi pripadaju posebnoj šemi koja se naziva sys schema i može im se pristupiti iz svake baze podataka. Npr.  da bi izlistali sve baze podataka koje imamo na SQL Server instanci, DBA može izvršiti naredni upit iz bilo koje baze podataka:

SELECT * FROM sys.databases

Za listu svih objekata koji postoje u bilo kojoj bazi podataka treba koristiti sys.objects katalog view. I on se može koristiti bez ograničenja:

SELECT * FROM sys.objects

Kod Oracle-a, data dictionary je u vlasništvu SYS korisnika.  Za razliku od SQL Server-a, svaki data dictionary view može postojati u tri različita oblika i svaki od ovih oblika će davati različit skup informacija. Dictionary view-ovi su zbog toga podjeljeni u tri različita tipa. Prefiksi u imenu view-a će indicirati koji tip informacija treba biti prezentovan korisniku:

  • View-ovi sa prefiksom USER_ će dozvoliti korisnicima da pregledaju informacije o db objektima koje su oni sami krirali.
  • View-ovi sa prefiksom ALL_ će dozvoliti korisnicima da pregledaju informacije o db objektima koje su oni sami krirali  i o objektima kod kojih je dozvoljeno da im konkretni korisnik pristupa.
  • DBA_ view-ovi su view-ovi za administratore baze podataka. Ovi view-ovi prikazuju kompletan set informacija o svim objektima u bazi podataka. Obični korisnik nema prava pristupa DBA_ view-ovima.

Npr, dva upita koja su ispisana u nastavku daju kao rezultat različite skupove podataka:

SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TABLES;

SELECT TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES;

Prvi upit će vratiti listu tabela koje je kreirao korisnik koji je pokrenuo ovaj upit dok će drugi upit vratiti skup svih tabela koje postoje u bazi podataka.

Dynamic Views

Pored data dictionary view-ova, Oracle posjeduje i odredjeni skup view-ova koji se nazivaju Dynamic Performance Views koji omogućavaju uvid u stanje memorijskih struktura instance i u sadržaj kontrolnog fajla baze podataka. Dynamic performance view-ovi se razlikuju od data dictionary view-ova po tome što oni iza sebe nemaju nikakvu fiksnu tabelu u bazi podataka. Umjesto toga, oni vraćaju informacije u realnom vremenu o stanju memorije na serverima u kojoj se nalazi instanca. Ovi podaci se kumuliraju od trenutka kada se instanca pokrene, dogradjuju se tokom životnog vijeka instance i nestaju iz sistema kada se instanca ugasi ili kada se instanca restartuje. Druga razlika u odnosu na data dictionary view-ove je da DBA može pristupiti  data dictionary view-ovima samo kada je baza podataka otvorena za normalno korištenje. Dynamic performance view-ovima se može pristupiti čim se instanca pokrene, dakle i prije nego što se pokrenu baze podataka. Nekim od dynamic performance view-ova se može pristupiti samo ako je baza podataka u statusu “mounted”.

Ovi view-ovi se često nazivaju V$ views zato što im ime počinje prefiksom V$. Kao primjer, upit koji je dat u nastavku prikazuje inicijalne parmetre koji se koriste od strane Oracle instance:

SELECT NAME, DESCRIPTION, VALUE FROM v$system_parameter

Sljedeći upit će prikazati informacije koje se odnose na stanje tekuće sesije:

SELECT USERNAME, COMMAND, SCHEMANAME, OSUSER, MACHINE FROM V$SESSION

Kod SQL Server 2005, Dynamic Management Views ili DMV obezbjeđuju veliki broj informacija o stanju memorije instance. Kao i kod Oracle-a dynamic performance views, DMV za svoj rad u pozadini nemaju konkretne fizičke tabele. Ovi view-ovi se formiraju svaki put od početka kada se izvrši resetovanje servera ili instance. DMV-ovi pripadaju sys šemi i imaju ime koje počinje sa prefiksom “dm_”. U primjeru koji je dat u nastavku dobijamo podatke o tekućim sesijama na SQL Server instanci:

SELECT * FROM sys.dm_exec_requests

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s