نشر بواسطة : Obay Salah , November 19, 2024

في قاعدة بيانات واحدة يستطيع المستخدمون منح أذونات على الكائنات التي يملكونها لمستخدمين آخرين، ولكن إذا كان لديك أكثر من قاعدة بيانات فمن المستحيل أن يتفاعل المستخدمون بين قاعدة بيانات وأخرى إلا إذا كان لدينا  Database Link وهو الرابط بين قاعدة بيانات وأخرى، وقد تحتاج إلى هذا كثيرًا أثناء عملك، حيث قد يكون لديك أكثر من قاعدة بيانات تحتاج إلى ربطها معًا، فلنفترض أن لدينا قاعدة بيانات تسمى OBAY وأخرى تسمى ORCL.

SELECT NAME FROM V$DATABASE;


 الآن نحتاج إلى ربط قاعدة بيانات OBAY بقاعدة بيانات ORCL، ولنفترض أن المستخدم TEST في قاعدة بيانات OBAY يحتاج إلى تشغيل استعلام على جدول EMPLOYEE المملوك للمستخدم VBS في قاعدة بيانات ORCL، إذن نحتاج إلى تشغيل ارتباط قاعدة بيانات بين المستخدم TEST في قاعدة بيانات OBAY والمستخدم VBS في قاعدة بيانات ORCL.

ولكن قبل إنشاء ال Database Link، يجب ملاحظة أن المستخدم الذي يقوم بإنشاء ال Database Link يجب أن يكون لديه إذن CREATE DATABASE LINK.

الآن سيقوم المستخدم TEST في قاعدة بيانات OBAY بإنشاء Database Link بينه وبين المستخدم VBS في قاعدة بيانات ORCL.

أولاً: يقوم المستخدم TEST بالاتصال والتأكد من أنه لديه إذن CREATE DATABASE LINK.

SELECT * FROM USER_SYS_PRIVS WHERE PRIVILEGE='CREATE DATABASE LINK'; 


في الخطوة السابقة تأكدنا أولاً من أننا نعمل على قاعدة بيانات OBAY وثانياً تأكدنا من أن المستخدم TEST لديه إذن CREATE DATABASE LINK.


ثانياً: يقوم المستخدم TEST باختبار أسماء Oracle Net Service المستعارة الموجودة في ملف tnsnames.ora للتأكد من سلامة الاتصال بقاعدة البيانات الأخرى، وهي هنا ORCL.

TNSPING ORCL 


ثالثا: يقوم المستخدم TEST بإنشاء ﺍلDatabase Link.

CREATE DATABASE LINK TESTVBS CONNECT TO VBS IDENTIFIED BY VBS USING 'ORCL'; 

قام المستخدم TEST بإنشاء Database Link  يسمى TESTVBS والذي من خلاله يستطيع المستخدم TEST الاتصال بـ VBS الخاص بالمستخدم في قاعدة بيانات أخرى تسمى ORCL.


رابعاً: الآن يستطيع المستخدم TEST الاستعلام عن جدول EMPLOYEE الخاص بالمستخدم VBS في قاعدة بيانات ORCL.

SELECT * FROM EMPLOYEE@TESTVBS; 


في بعض الأحيان يكون اسم ﺍلDatabase Link مصحوبا باسم الجدول وهو طويل، ومن الأفضل إنشاء مرادف synonym  لتسهيل واختصار عبارات الكتابة خاصة تلك التي تكتب بشكل متكرر.

CREATE SYNONYM EMP FOR EMPLOYEE@TESTVBS; 


ولكن تجدر الإشارة إلى أن المستخدم يحتاج إلى امتياز CREATE SYNONYM لإنشاء المرادف.

يمكن الآن كتابة عبارة الاستعلام على النحو التالي:

SELECT * FROM EMP;


 ومن الجدير بالذكر هنا أننا نقول أنه يمكنك إجراء عمليات DML من خلال ﺍلDatabase Link وهي (DELETE & UPDATE & INSERT & SELECT)، ولكن من المستحيل إجراء عمليات DDL مثل (CREATE & ALTER & DROP).

PUBLIC DATABASE LINK:

 ما قمنا به في الخطوات السابقة هو ربط المستخدم TEST في قاعدة بيانات OBAY بالمستخدم VBS في قاعدة بيانات ORCL عبر DATABASE LINK  يسمى TESTVBS.

ولكن هل يمكن لأي مستخدم آخر في قاعدة بيانات OBAY استخدام رابط  TESTVBS DATABASE LINK ؟ الإجابة ببساطة لا، لأن ﺍل Database Link  الذي قمنا بإنشائه خاص بالمستخدم

TEST وليس بجميع المستخدمين ويسمى PRIVATE DATABASE LINK.

لكي يتمكن جميع المستخدمين في قاعدة بيانات OBAY من الاتصال بمستخدم VBS في قاعدة بيانات ORCL، نحتاج إلى إنشاء PUBLIC DATABASE LINK.

بالطبع، لإنشاء هذا النوع، نحتاج إلى إذن CREATE PUBLIC DATABASE LINK.

SQL> CONN / AS SYSDBA

SQL> GRANT CREATE PUBLIC DATABASE LINK TO TEST;

SQL> CONN TEST/TEST

SQL> CREATE PUBLIC DATABASE LINK PUBTESTVBS CONNECT TO VBS IDENTIFIED BY VBS USING 'ORCL'; 


 منح مسؤول قاعدة البيانات المستخدم TEST امتياز CREATE PUBLIC DATABASE LINK ثم قام المستخدم TEST بإنشاء PUBLIC DATABASE LINK

يسمى PUBTESTVBS، والآن يمكن لجميع المستخدمين في قاعدة بيانات OBAY استخدام PUBTESTVBS DATABASE LINK.

للاستعلام عن DATABASE LINK في قاعدة البيانات:

DBA_DB_LINKS

USER_DB_LINKS

ALL_DB_LINKS

V$DBLINK

بالطبع، يمكن حذف DATABASE LINK.

DROP DATABASE LINK TESTVBS; 


يمكنك أيضًا حذف ﺍلPUBLIC DATABASE LINK..

DROP PUBLIC DATABASE LINK PUBTESTVBS; 


بالطبع نحتاج إلى الإذن للحذف DROP PUBLIC DATABASE LINK.



علامات : Database

يمكن ان يعجبك ايضا


Comments

لايوجد تعليق حتى الان