Data Dictionary nedir?

“Sistem katoloğu(system catalogue)” olarakta bilinen “Data Dictionary” ,veritabanında tutulan her türlü objenin metadata’sının (veri hakkında verinin) tutuldugu yerdir.Aynı zamanda DBMS hakkında bilgilerde burada tutulmaktadır.Peki bu metadata(veri hakkında veri) ile kastedilen nedir? Bir tablomuz oldugunu düşünerek özetlemek gerekirse bir tablonun “data dictionary” de tutulan metadata’sı :

adı
ne zaman oluşturulduğu
en son ne zaman ulaşıldıgı
sahibi, izin bilgileri
datanın tutuldugu yer hakkında fiziksel bilgiler
………….. gibi bilgilerdir.

Data Dictionary Yapısı : Dictionary –> User tables –> All tables –> DBA tables (izin gerektirir) –> V$ tables (izin gerektirir)“dictionary” iki seviyeden oluşur.Bir tanesi aslında “SYS” nin altında bulunan bir view olan “dictionary” dir ve iki kolondan olusur :“TABLE_NAME” ve “COMMENTS”
Bu view’ı sorguladığımız zaman aşağıdaki gibi veriler gelecektir :

table_name comments

USER_RESOURCE_LIMITS Display resource limit of the user
USER_PASSWORD_LIMITS Display password limits of the user
USER_CATALOG Tables, Views, Synonyms and Sequences owned by the user
ALL_CATALOG All tables, views, synonyms, sequences accessible to the user
USER_CLUSTERS Descriptions of user’s own clusters
ALL_CLUSTERS Description of clusters accessible to the user
USER_COL_PRIVS Grants on columns for which the user is the owner, grantor or grantee
USER_DB_LINKS Database links owned by the user
ALL_DB_LINKS Database links accessible to the user
USER_INDEXES Description of the user’s own indexes
V$SESSTAT Synonym for V_$SESSTAT
V$MYSTAT Synonym for V_$MYSTAT
V$STATNAME Synonym for V_$STATNAME
V$VERSION Synonym for V_$VERSION
………………………… ……………………………
İkinci seviye ise 4 ayrı tablo grubundan olusur :
USER tables : Kullanıcının sahip olduğu objeler hakkında bilgi bulunur.(User’s schema objects)
ALL tables : Ulaşılabilen tüm kullanıcıların objeleri hakkında bilgi bulunur.
DBA tables : DBA lerin ulaşması gereken bilgiler bulunur.
V$ tables : Daha çok DBA lerin işine yarayan ve DBMS hakkında o anki bilgilere ulaşılabilen tablolardır.

Başka bir deyişle “base tables” ve “user-accessible views” olmak üzere 2 farklı yapıdan da bahsedilebilir.Her ikisinin sahibi de SYS’dir.(Tüm table ve view lar “SYSTEM” tablespace’inde tutulmaktadir.)Baska hiçbir kullanıcı hiçbir şekilde data dictionary’nin yapısına müdahele etmemeli ,edememelidir.Çünkü burada veritabanı işlemlerinin temelini oluşturan objelerin her türlü yapısal bilgileri ile DBMS in kendi bilgileri tutulmaktadır.Bunlardaki bir değişiklik geri dönelemez hataların oluşmasına neden olabilir.
Data Dictionary Kullanımı :Oracle ve kullanıcı başlıca 3 amaç için kullanır :1) Oracle; kullanıcılar, şema ve objeler hakkında bilgi almak için kullanır.2) Oracle; gerçekleşen her DDL(Data Definition Language) işlemi sonunda Data Dictionary i düzenler.3) Kullanıcılar sadece bilgi amaçlı olarak kullanırlar.
Bunu bir örnek ile açıklamak gerekirse bir tablo oluşturduğumuzu düşünelim.Bu tablonun hangi kolonlardan oluştuğu, kolonların tipleri, tablonun segment, extents ve kullanıcı hakları gibi bilgileri Oracle tarafından bilinmeliki oluşturma aşamasından sonra gerçekleşecek tabloyu ilgilendiren operasyonlar sağlıklı biçimde gerçekleştirilsin.Bu amaçla ornekte geçen tüm bilgiler ve fazlası Data Dictionary e yazılır ve oluşturma yapıldıktan hemen sonra dictionary sorgulandığında bu bilgiler görülebilir.Bu bilgiler sadece Oracle a değil kullanıcılara da lazım(dır) olabilir.Bu amaçla genel olarak data dictionary bilgileri kullanıcılara açıktır bazıları ise özel kullanıcı hakkı ister.
Bu kadar sık kullanılan bir yapının memory de tutulması mantıklı olcaktır, nitekim Oracle bu bilgileri SGA(System Global Area)’da “dictionary cache” denilen yerde tutar.(Sadece dictionary nin “comment” kolonu bilgileri cache de tutumaz.Ama çok sık kullanım olursa zaten cache e atılır.)Data Dictionary bilgilerine klasik SQL sorgularıyla ulaşılır.Yukarıda da bahsedildiği üzere bazısına tüm kullanıcılar erişebilirken bazısı için özel kullanım hakları tanımlanmalıdır.USER prefix i ile başlayanlar ALL prefix i ile başlayanların alt kümesi denilebilir.Örnek :
select * from user_objects
select * from all_objects
select * from SYS.DBA_OBJECTS;
DBA prefix i ile başlayan data dictionary bilgilerine ulaşmak için bunların başına “SYS” getirilmelidir.Ama genel olarak DBA ile başlayan dicrionary bilgilerine ulaşmayı kısıtlamak gereklidir.Bunun için ANY kullanım hakkı verilmiş kullanıcılarla , SYS şeması ve SYSDBA ile bağlanan herhangi diğer kullanıcıların data dictionary’e erişimi “dictionary protection” kullanıma geçirilerek engelenebilir / engellenebilmelidir.

Dynamic Performans Tables and Views:Oracle’ın işlemler gerçekleştirirken gerekli bilgileri ve o anki veritabanı aktivitelerini tutmak için kullandığı tablolardır.”Fixed Views” da denir, DBA tarafından bile değiştirilemez ya da silinemezler.SYS altında bulunurlar ve isimleri “V_$” ile başlar.Bunlara verilen synonym isimleri ise “V$” ile başlar.Örneğin V$DATAFILE veritabanının datafile’ları hakkında bilgileri içerir ve örneğin V$FIXED_TABLE veritabanının kullandığı “Dynamic Performans” tabloları ve View’ları hakkında bilgi verir.NOT : DBMS_METADATA paketi veritabanında bulunan objelerin tanımları hakkında detay bilgilere ulaşmak için gerekli metodları içerir.
Sık kullanılan bazı data dictionary objeleri ve acıklamaları :

USER_TABLES ; All tables with their name, number of columns, storage information, statistical information etc. (TABS)
USER_CATALOG ; tables, views, and synonyms (CAT)
USER_COL COMMENTS ; comments on columns
USER_CONSTRAINTS ; constraint definitions for tables
USER_INDEXES ; All information about indexes created for tables (IND)
USER_OBJECTS ; All database objects owned by the USER_(OBJ)
USER_TAB COLUMNS ; columns of the tables and views owned by the user(COLS)
USER_TAB COMMENTS ; comments on tables and views
USER_TRIGGERS ; triggers defined by the user
USER_USERS ; information about the current user
USER_VIEWS ; views defined by the user
ALL_CATALOG ; owner, name and type of ALL_accessible tables, views, and synonyms
ALL_TABLES ; owner and name of ALL_accessible tables
ALL_OBJECTS ; owner, type, and name of accessible database objects
DBA_TABLES ; tables of ALL_users in the database
DBA_CATALOG ; tables, views, and synonyms defined in the database
DBA_OBJECTS ; object of ALL_users
DBA_DATA_FILES ; information about data files
DBA_USERS ; information about ALL_users known in the database

Hiç yorum yok: