Oracle Namespaces

Herkese Selam,

Bu yazıda sizlerle Oracle’daki objelerin nasıl isimlendirildiği ve isim uzayları hakkında bilgiler paylaşıcam.

Database üzerinde developement yaparken sıkça aldığımız hatalardan biriside yarattığımız obje adında başka bir objenin daha önce yaratıldığından dolayı karşılaşılan hatalardır. Aslında defalarca deneyimlediğimiz bu hata bizi obje isimlendirme konusunda yanlış bir algıya götürmekte ve yarattığımız objenin tipi ne olursa olsun, hepsini farklı vermek çabasına sokmakta.

Oracle’da isim uzayları farklı segmentlere ayrılmış durumdadır. Her segment kendi içinde farklı isim uzayına sahiptir ve kendi içinde ayrı değerlendirilmektedir. Şimdi Oracle’ın isim uzaylarını aşağıdaki şekilden inceleyelim.

Yukarıdaki şekilden de anlaşılacağı üzere Oracle’da obje isimlendirme altyapısı farklı isim uzaylarına ayrılmış durumdadır.

—- User, Role ve Public Synonym’ler doğrudan database bazında unique isimlere sahip olması gereken database objeleridir. Bir database’de aynı isime sahip user, role ve Public Synonym olamaz.

—- Database isim uzayının bir alt uzayı şema seviyesindeki isim uzayıdır. Bir database’de aynı isime sahip şemalar olamamaktadır.  Şemaların isim uzayları kendi içlerinde 3 ayrı alt isim uzayına ayrılmıştır.

—- Tablolar, Viewlar, Sequenceler, Private Synoymler ve Kullanıcının tanımladığı tipler aynı isim uzayındadırlar ve şema seviyesinde aynı isimlere sahip olamamaktadırlar.

—- Index’ler  şema seviyesinde ayrı bir isim uzayına sahiptirler ve bu uzayda isimlendirmeleri değerlendirilir. Aynı şemada, aynı isime sahip birden çok  index olamamaktadır. Ancak şekilden’de anlaşılacağı gibi şema seviyesinde ayrı isim uzaylarında olan objelerin isimleri aynı olabilmektedir. Örneğin aynı şemada, aynı isime ait bir tablo ve bir index’in var olmasında herhangi bir sakınca yoktur.

—-  Constraints lerde indexler gibi şema seviyesinde ayrı bir isim uzayına sahiptirler. Aynı şemada aynı isime sahip birden fazla constraint olamamaktadır. Ancak şekilden’de anlaşılacağı gibi şema seviyesinde ayrı isim uzaylarında olan objelerin isimleri aynı olabilmektedir. Örneğin aynı şemada, aynı isime ait bir view ve  bir constraint’in var olmasında herhangi bir sakınca yoktur.

Örnek: Aşağıdaki örneğin çalıştırılmasında namespaceler farklı olduğundan herhangi bir hata alınmayacaktır.

CREATE TABLE xyz (col NUMBER);
CREATE INDEX xyx ON xyz(col);
ALTER TABLE xyz add CONSTRAINTS xyz PRIMARY KEY (col);

 

Advertisements

About ... from Emrah METE

Bilgisayar Mühendisi
This entry was posted in Oracle, Root, Uncategorized and tagged , , , , , , . Bookmark the permalink.

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s