Tüm Ayrıntılarıyla Oracle Database Link
Database link databaseler arasında bağlantı kurmaya yarayan oracle nesneleridir.Veri taşımalarında,canlı ortam ile test ortamı karşılaştırmalarında,test verisi almak gibi bir çok alanda kullanabiliriz.Hangi database’e ulaşmak istiyorsak o database’in bilgilerini kaynak database makinesinde TNSNAMES.ora dosyasına tanımlamamız gerekiyor,yani kaynaktan hedefe tnsping atıyor olmamız gerekir.
Bir örnek ile pekiştirelim..
TEST ortamından PROD database’ine bir link kuralım.Select ve Update işlemleri yapalım.
1- Öncelikle TEST sunucusunda TNSNAMES.ora dosyasına PROD database’ini tanımlayalım.
PROD_LINK =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = PROD)
)
)
2- TNS ayarlarımızın doğru olduğundan emin olmak için;
C:Usersomer>tnsping PROD
3- Sonrasında db linki create edelim.
Hedefteki User:IFSAPP Şifresi:12345 olsun..
SQL> Create database link PRODDBLINK connect to IFSAPP identified by 12345 using ‘PROD_LINK′;
4- Linkimiz hazır,test edelim.
SQL> SELECT * from customer_order@PRODDBLINK;
SQL> UPDATE customer_order_tab@PRODDBLINK SET order_date=order_date+1;
nesneadi@dblinkadi şeklinde bir syntaxla prod database’in nesnelerine ulaşabiliriz.
Public Database Link:
Tüm database userlarının hedef database’e erişebilmesini sağlar.
SQL> Create Public database link PRODDBLINK connect to IFSAPP identified by 12345 using ‘PROD_LINK′;
Private Database Link:
Sadece oluşturan userın hedefe bağlanabildiği link türüdür.
SQL>Create Private database link PRODDBLINK connect to IFSAPP identified by 12345 using ‘PROD_LINK;
Shared Database Link:
Db link kullanıcılara paylaştırılır,ama girişte user ve şifre girilmesi gerekir.
SQL> CREATE SHARED DATABASE LINK PRODDBLINK CONNECT TO scott IDENTIFIED BY tiger
AUTHENTICATED BY sec_usr IDENTIFIED BY sec_pass USING ‘PROD’;
-Create ederken SHARED,PUBLIC,PRIVATE belirtilmezse defaultu PRIVATE’dır.
Create Database Link….. — Private link oluşturur.
Bir kullanıcının Db link oluşturabilmesi için:
private database link için: CREATE DATABASE LINK
public database link için: CREATE PUBLIC DATABASE LINK
yetkilerine sahip olması gerekir.Eğer yetkisi yoksa aşağıdaki gibi yetki verebilirsiniz.
SQL> GRANT create database link TO DENEMEUSER;
SQL> GRANT create Public database link TO DENEMEUSER;
Mevcut database linklerini görmek:
SQL> select * from dba_db_links;
SQL> select * from all_db_links;
Mevcut database linklerinin statüsünü görmek:
SQL> SELECT owner,object_name,object_type,status FROM dba_objects WHERE object_type=’DATABASE LINK’;
Database link drop etmek:
SQL> Drop Database Link PROD_LINK;
Mevcut sessiondaki link bağlantısını kapatmak için:
SQL> alter session close database link PROD_LINK;