Oracle 12c Veri Tabanı - Invisible Column

Oracle 12c veri tabanı ile invisible columns (görünmez kolon) özelliğini bizlerle tanıştırdı. Adından da anlayabileceğimiz üzere bu yeni özellik bize tablolar üzerinde sadece bilen kişilerin erişebileceği veriler depolayıp görüntüleme esnekliği sağlıyor.
12c den önce görünmesini istemediğimiz kolonlar için bir tablo ve view i bir arada kullanmak durumunda kalıyorduk. Tablo üzerine tüm veriyi yazıp aynı tablonun uygun kolonlarını içeren bir view yaratıp, kullanıcımızın tablo yerine view i select etmesini sağlıyorduk.
12c ile birlikte bir kolon ilk oluşturulduğunda ya da sonradan istendiğindeINVISIBLE etiketi ile görünmez hale getirilebilecek. Örneğin iki kolondan oluşan bir tablo yaratalım.
SQL> create table t
  2  ( x int,
  3    y int
  4  )
  5  /
Table created.
Bu tabloya yeni bir kayıt ekleyelim.
SQL> insert into t values ( 1, 2 );
1 row created.
Daha sonra aynı tabloya Z adında görünmez bir kolon ekleyelim.
SQL> alter table t add 
    ( z int INVISIBLE ); 
Table altered.



SQL*Plus üzerinden DESC komutu ile tabloyu kontrol ediyoruz.
SQL> desc t
 Name  Null      Type
————— ———————— ——————————
X NUMBER(38)
Y NUMBER(38)
COLINVISIBLE ON ayarını yaptıktan sonra DESC komutu ile tabloyu tekrar kontrol ediyoruz.
SQL> set colinvisible on

SQL> desc t

 Name           Null?    Type
 —————————————  ———————— ——————————
 X                       NUMBER(38)
 Y                       NUMBER(38)
 Z (INVISIBLE)           NUMBER(38)
Kolonun görülebilir hale gelmesi SELECT *  ile görülebileceği anlamına gelmiyor aşağıda görüleceği üzere.
SQL> select * from t;

      X          Y
———————————— ———————————
      1          2
      3          4
Tabloya bir kayıt daha ekleyelim.
SQL> insert into t values ( 3, 4 );
1 row created.
Invisible kolon da dahil olmak üzere tabloya bir kayıt daha ekleyip kolon isimleri ile tekrar select edelim.
SQL> insert into t (x,y,z)  values ( 5,6,7 );
1 row created.
SQL> select x,y,z from t;
     X         Y         Z
——————————— ———————— ——————————
     1         2 
     3         4
     5         6         7
Z kolonunu görünür olarak değiştirip tekrar SELECT edelim.
SQL> alter table t modify z visible;
Table altered.
SQL> select * from t;

     X         Y         Z
——————————— ———————— ——————————
     1         2
     3         4
     5         6         7
Yukarıda invisible colomn özelliğini kullanımına ilişkin örnekleri gördük. Bu özellik bize Tom abimizin söylediğine göre çok farklı bir yetenek daha kazandırıyor. Tablodaki kolonların SELECT edildikleri sıralarının değiştirilebilmesi.
4 kolonlu şöyle bir tablo oluşturalım.
SQL> create table t
  2  ( a int,
  3    b int,
  4    d int,
  5    e int
  6  );

Table created.

NŞA’ da (normal şartlar altında) bu tabloya bir c kolonu ekleyip SELECTedersek, sıralama a,b,d,e,c şeklinde olacaktır. 12c öncesinde a,b,c,d,e şeklinde bir sıralama yakalayabilmemiz için bir kaç yöntemimiz vardı. Bir tanesi d ve e kolonlarını drop edip, c kolonunu oluşturup, d ve e kolonlarını tekrar tabloya eklemek elbette. Diğer bir yöntem ise doğru sıralamayı veren bir view oluşturup onu kullanmaktı. Ancak bunların hepsi bize ek iş yükü getirmektedir.
12c ile birlikte gelen invisible coloumn özelliği ile d,e kolonlarını saklayıp c kolonunu tabloya ekleyip sonra d ve e kolonlarını görünür yapmamız bu ihtiyacı hızlıca karşılıyor. Şöyle ki,
SQL> alter table t modify
  2  ( d invisible, e invisible );
Table altered.
SQL> alter table t add c int;
Table altered.
SQL> alter table t modify
  2  ( d visible, e visible );
Table altered.
SQL> desc t
 
 Name           Null?    Type
 ——————————— ——————————— ———————————
 A                       NUMBER(38)
 B                       NUMBER(38)
 C                       NUMBER(38)
 D                       NUMBER(38)
 E                       NUMBER(38)
Not: Disk üzerinde kolonlar a,b,d,e ve c sırasıyla saklanmaktadırlar.
Kaynak: http://www.oracle.com/technetwork/issue-archive/2014/14-may/o34asktom-2162246.html

Comments

Popular posts from this blog

Oracle Fusion : SQL Query to Retrieve Shopping Category Hierarcy

Automatic Generation of Charge Account in Requisition Import

MUBI 1 milyon üyeye ulaştı