Hurriyet

5 Eylül 2013 Perşembe

Oracle Veritabanı: Database Links - Veritabanı Linkleri

Veritabanında "db link" olarak geçen database linkleri  iki database arasında bağlantı yapılmasını sağlar.

3 tip link bulunmaktadır.

  • Private database link: Berlili bir schema'ya aittir. Sadece o database'ın sahibi kullanabilir.
  • Public database link: Bütün kullanıcılar kullanabilirler.
  • Global database link: Oracle OID server'ına tanımlanır. Network'teki herkes tarafından kullanılabilinir.


İlgili Parametreler:

Spfile veya pfile'ımıza dblinklerle ilgili aşağıdaki parametreleri kullanarak değişikler yapabiliriz. Open links
parametresi link limitini belirler.


  1. global_name(opsiyonel)
  2. open_links
  3. open_links_per_instance


Yetkiler:

Database link'lerini yaratmak için çeşitli yetkiler gerekir. Bunlar:


  1. create database link
  2. create public database link 
  3. drop public database link

DBLink Yaratılması:

Database link'leri makine1'den makine2'ye bağlanılmak isteniyorsa makine1'e konulur.2'den 1'e erişmek
içinse 2. makinada yaratılır. Dblink yaratma syntax'ı aşağıdaki gibidir.


 CREATE [PUBLIC] DATABASE LINK berke_link  
 CONNECT TO --Karşı taraftaki kullanıcı  
 IDENTIFIED BY -Karşı taraftaki kullanıcı şifresi  
 USING 'Berke2';   
 -- tnsnames.ora eklenmiş connect datalı bilgi  


ya da tnsping 'makina_adı' diyip karşımıza çıkan bilgileri 'Berke2' denen yere koyarız.

CREATE [PUBLIC] DATABASE LINK berke_link   
  CONNECT TO --Karşı taraftaki kullanıcı   
  IDENTIFIED BY -Karşı taraftaki kullanıcı şifresi   
  USING '(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=10.87.24.128)(PORT=1521)))'; 


Yukarıdaki gibi bir dblink yarattıktan sonra yukarıda belirttiğimiz gibi "Using '' " diye belirttiğimiz
yere denk gelicek bilgileri tnsnames.ora dosyamızın içine koymalıyız. tnsnames.ora dosyamız $ORACLE_HOME/network/admin altında bulunmaktadır. Bu noktaya gelip eğer 1. makineden 2. makineye bağlanacaksak makine2'nin tnsnames'in de bilgilerini yazarız.

 Berke2 =   
  (DESCRIPTION =   
   (ADDRESS_LIST =   
   (ADDRESS = (PROTOCOL = TCP)  
    (Host =berke_laptop )  
    (Port =1521))   
   )   
  (CONNECT_DATA =   
   (SERVICE_NAME = Berke2)   
  )   
  )  


Yukarıdaki bilgileri de tnsnames'imiz içine attıktan sonra dblink'imiz kullanıma hazır hale gelir.


DBLink'ten Nasıl Bilgi Çekilir?
DBLink'imizi test etmek için aşağıdaki gibi kolay bir sorguyu deneyebiliriz. Yukarıdaki örneklere göre düzenlenmiştir. Bu link denemesiyle birinci makinadan 2. makinaya erişebiliriz. Bu şekilde 2.makinadaki bilgileri diğer database'lere de paylaşmış oluruz.


 select * from dual@berke_link 
   
 veya  
   
 select sysdate from dual@berke_link 


Database de Var Olan Database Linkleri:

 select * from dba_db_links;  
 select * from all_db_links;


Linklerin Durumları:

 select * from v$dblink;  


Database Linklerin Statüleri

select * from dba_objects where object_type='DATABASE LINK' and object_name='berke_link';  

Database Link'leri Nasıl Drop Edilir?

Database linklerini drop etmek için  ilk önce  select * from dba_db_links diyip sorgumuzu gönderdikten sonra database link'imizin tipine göre eğer public ise 'public' denerek ya da hangi kullanıcıya aitse o kullanıcıya bağlanarak aşağıdaki sorgu gönderilir.

drop [public] database link 'link_ismi';  



Database Link Hatası - Ora-02019:

Ora-02019 Hatası dblink'i yaratan kullanıcıyla dblink açmama durumunda karşılaşılan bir hatadır.
Eğer yaratılan dblink public değilse, dblink mutlaka yaratılan kullanıcısıyla birlikte kullanılmalıdır.



Hiç yorum yok:

Yorum Gönder