Home / MAKALELER / Veri Tabanı / DB Link Kullanmak

DB Link Kullanmak

Veritabanları arasında veri iletişimi sağlanan köprü nesneleridir.

 

Dblink, Databaseler arasında köprü kuran  database objelerdir. Oracle database yada farklı tür databaseler arasında remote köprüler oluşturarak hedef database üzerindeki şema nesnelerine  erişmek için kullanılır. Farklı türk databaseler arasında iletişim kurmak için ise oracle heterojen servislerin kurulup ayarlanması gerekir.

Oluşturulması:

CREATE [PUBLIC] [PRIVATE][SHARED]DATABASE LINK dblink_name

Connect to target_user_name,

İdentified by Target_user_password

USING ’tns_name’;

 

Erişeceğiniz database üzerindeki bir kullanıcı ve onun şifresini girmen ve database  tnsname.ora dosyasındaki service_name ‘ i belirtilmesi gerekir.

PUBLIC  database üzerindeki tüm herkesin uzak  database’ erişmesi için kullanılır.

PRIVATE ise sadece belirlediğin dblink oluşturucu hesab sahibinin uzak database’ e erişmesi için kullanılır.

SHARED: oluşturulan database herkes tarafından paylaşılmasını sağlar. Ama burada authenticated user ans pasword’ un güvenlik açısından girilmesi gerekir. Sonuçta herkese açık bir dblink oluşturursak bunun güvenlik tarafını da düşünmemiz gerekecektir.

Örnek: shared DBLINK oluşturulması;

CREATE SHARED PUBLIC DATABASE LINK db_lnk
CONNECT TO scott IDENTIFIED BY tiger
AUTHENTICATED BY sec_usr IDENTIFIED BY sec_pass
USING ‘ORCL’;

 

Dblink oluşturabilecek bir kullanıcının

private database link oluşturabilmesi için :  CREATE DATABASE LINK ,

public database link oluşturabilmesi için :  CREATE PUBLIC DATABASE LINK

haklarına sahip olması gerekir.

Current user kullanarakta dblink oluşturabilirsin. Current user, Remote database kullanıcısı ile dblink oluşturduğun user’la aynı olmak zorundadır. O yüzden Curretn user ekini kullacaksak her iki database tarafındada global bir user olması gerekir.

CREATE PUBLIC DATABASE LINK remote_connect

CONNECT TO CURRENT_USER

USING ‘ORCL’;

 

Örnek:

CREATE PRIVATE DATABASE LINK remote_connect

CONNECT  TO hr IDENTIFIED BY  hr

USING ‘ORCL’;

 

 

Örnek  using  satırında belirtmiş olduğumz yerel database’ deki ORCL service name(tnsnames.ora) :

ORCL = (DESCRIPTION = (ADDRESS =
(PROTOCOL = TCP) (Host = XX.oracle.com) (Port = 1521))
(CONNECT_DATA = (SID = orcl) (GLOBAL_NAME = orcl.oracle.com)
(SERVER = DEDICATED)))

Dblink oluştutulurken de GLOBAL_NAME girilebilir. GLOBAL_NAME öğrenmek için

Remote server’da

SELECT GLOBAL_NAME FROM GLOBAL_NAME;

GLOBAL_NAME
———–
orcl.oracle.com

 

ile öğrenilebilir. Bir GLOBAL_NAME database_name+domain’ den oluşur.

Local tarafta global name erişimine izin vermek için  initdbname.ora dosyasında ise ;

global_names=true;

yada

ALTER SYSTEM SET GLOBAL_NAME=true;

eklenir.

Remote tarafta ise initdbname.ora dosyasına db_domain set edilmelidir. Dikkat edilmesi gereken nokta database ‘ler aynı domainde olması gerekir.

Örnek  local database   ora.oracle.net

remote  database ise    orcl.oracle.com

ise farklı ise Dblink oluşturulur ama erişim sağlanamaz.

Çözüm ,

oluşturacağın dblink ismini remote database yani  orcl.oraclecom  verilir

yada remote database’ in global_name değiştirilir.

ALTER DATABASE RENAME global_name to orcl.oracle.net;

İle aynı domaine sahip olunur. Sorun çözülmüş olur.

Ve global isimli bir dblink oluşturak için;

CREATE PUBLIC DATABASE LINK orcl.oracle.com

CONNECT  TO hr IDENTIFIED BY  hr

USING ‘ORCL’;

 

Bir view oluşturarak;

CREATE VIEW vw_emp_orcl

AS

SELECT * FROM employees@orcl.oracle.com;

 

Yada bir synonym oluşturarak;

CREATE PUBLIC SYNONYM sn_emp_orcl

FOR

employees@ orcl.oracle.com;

 

yada bir tablo oluşturarak;

CREATE TABLE tbl_emp_orcl

AS

SELECT * FROM employees@orcl.oracle.com;

 

Lokal database ‘de nesne olarak kullanımı yaygınlaştırılabilir.

DDL işlemelerini desteklemez. DML ve Query işlerini rahatlıkla yapabilirsiniz.

 

Update  işlemi

Kullanımı

UPDATE employees@remote_connect

SET salary=salary*1.1

WHERE last_name = ‘King’;

 

 

INSERT işlemi

Kullanımı:

INSERT INTO employees@remote_connect(salary)

VALUES(salary*1.1);

WHERE last_name = ‘King’;


DELETE İşlemi

DELETE FROM employees@remote_connect ;
   WHERE employee_id = 100;


SELECT:

 

SELECT * from  employees@remote_connect ;

 


Database üzerinde tüm dblinkleri görmek için

SELECT * FROM all_db_links ;

 

yada

 

SELECT * FROM dba_db_links;

 

kullanılır.

 

DBLinkleri silmek için ise

 

DROP DATABASE LINK dblink_name

Dbinkleri close etmek için

 

ALTER SESSION CLOSE DATABASE LINK remote_connect;

 

Kullanılır.

About Muhammet Ucar

2005 Selçuk Üniversitesi Teknik eğitim Fakültesi Bilgisayar Sistemleri Öğretmenliğinden mezun olduktan sonra İstanbul 'da yaşamaya başladım. 2009 yılından beri Oracle yönetimsel anlamda çalışıp makale paylaşımı yapmaktayım. OCP 11gR2 ve OCA 11gR2 sertifikalarına sahibim. Daha çok kişisel projelerde çalıştım. Free Veritabanı Danışmanlığı ve Eğitmenliği yapıyorum.

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın