Hurriyet

20 Haziran 2012 Çarşamba

Şema Nesnelerinin Yönetimi

Şema nesneleri; önceki konularda bahsedildiği üzere table, index, sequence gibi nesneleriydi. O zaman ilk olarak table değişiklikleriyle başlayalım.

Table üzerinde yeni sütunlar eklenebilinir, sütunlar silinebilinir veya sütunlara sabit bir değer atanabilinir. Bunların syntax'ını göstermek istersek:

Sütun eklemek ---- Alter table tablo_adı add ( kolon_adı veri_tipi [default değer]);  


Sütun çıkarnak ---- Alter table tablo_adı drop ( kolon_adı); 


Sütun değiştirmek için ----  Alter table tablo_adı modify ( kolon_adı veri_tipi [default değer];

Sütun adını değiştirmek ----Alter table tablo_adı rename column eski kolon adı to yeni kolon adı; 


KISITLAR

Kısıtlar bizim tablolarımız üzerinde belirli kurallara uymamızı sağlar. Bu kurallara örnek verirsek; bir kolonun "null" değerler içermemesi, "unique" olması yani değerlerin birbirinden ayrı olması  gibi  kurallar olabilir.

Kısıt eklenmesi:

alter table tablo_adı modify kolon_adı kısıt;  
 (alter table employees modify employee_id primary key;)

 alter table tablo_adı add kısıt_adı foreign key sütun adı references referans yaptığımız tablo ve sutun adı; 

Bu kısıtların kontrol edilidiği bir zaman var bulunmakta mıdır?

Bunun için de ayrı bir özellik konulmuştur. Bunlar: initially deferred  veya initially immediate.
Initially deferred : "transaction" bitimini bekler. Yani bir commit veya rollback gibi bir ifade ile sonlanır.
Initially immediate : Her sorgu sonunda kontrol edilir.


Kısıt çıkarılması:

 alter table tablo_ad; drop constraint kısıt_adı;  

Kısıt devre dışı bırakılması ve devreye sokulması:

 alter table tablo_adı (disable|| enable) constraint kısıt_adı; 


Tablo silinmesi:

 Drop table tablo_adı purge;  

Bir tablonun "drop" edilmesi o tabloyu hemen yok etmez. Onun yerine tablo sadece yeniden adlandırılır ve çöp kutusuna atılır. Ancak purge ifadesi kullanılırsa o tablo çöp kutusundan da silinir.

 Delete tablo_adı;  

Bu sorguyla birlikte tablo içeriği silinir. Tablo yapısı sabit kalır.

Flashback Table Kullanılması:

Öncelikle söylenmesi gereken şey, bir nesne eğer çöp kutusunda ise; o nesne geri getirilebilinir. Peki bu nasıl gerçekleştirilir?

Flashback table ifadesi ile birlikte gerekli veriler sunularak yanlışlıkla veya bilinçli bir şekilde silinmiş veriler geri getirilebilinir.

 flashback table tablo_adı to (timestamp|| scn);  

ya da çöp kutusu sorgulanarak aşağıdaki ifade çalıştırılabilinir.

flashback table tablo_adı to before drop; 

Çöp kutusu nasıl sorgulanır?

 select * from recyclebin; 


Scn nasıl bulunur ve nedir?


 select current_scn from v$database;

Scn açılımı system change number'dır. Scn'ler her sistem değişikliğinde verilirler.


External Tables

External tables yani veritabanı dışında bulunan tablolar sadece okunabilir olan , üzerine DML ( Data modification language) transaction'ları yapılamayan yapılardır. Şirketlerde veriler sadece veritabanında bulunmayıp aynı zamanda text dosyalarında, müzik dosyalarında ya da daha farklı formatlarda tutulabilinmektedir.

Şimdi bu tabloların oluşturulması için gereken adımları görelim. Bu tabloların veritabanı tarafından görülmesi için directory( dosya) tanımlanması gerekir.

Create or replace directory dosya_adı as dizin;  
 (Create or replace directory dosya as '/home/oracle/Desktop/Dosya';) 

Şimdi de dosyalarımızı içerecek external table yaratmamız lazım.

 create table tablo (sütun adı data_tipi)  
 organization external  
     (type Oracle_Loader  
      default directory <dosya>  
      access parameters  
           (records delimeted by newline nobadfile nologfile fields terminated by ','  
                (sütun adı (1..20) veritipi)  
     location('lokasyon');-- dosyanın bulunduğu yer  
   
   
     )



 create table tablo (sütun adı data_tipi)  
 organization external  
     (type Oracle_Loader  
      default directory dosya  
      
     location('lokasyon');-- dosyanın bulunduğu yer  
   
   
     )  
 as select * from dosya_adı;  



Hiç yorum yok:

Yorum Gönder