Oracle Database Link
نشر بواسطة : 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.
Comments
لايوجد تعليق حتى الان