هل يمكن للاستعلام من Oracle إلى DB2 من خلال dblink حظر جدول DB2؟

StackOverflow https://stackoverflow.com/questions/1033046

  •  06-07-2019
  •  | 
  •  

سؤال

لدي استعلام متوسط ​​الحجم يحتوي على 500.000 سجل من Oracle إلى نظام DB2 من خلال DBLink.هل يمكن لهذا الاستعلام حظر جدول DB2 بحيث يمكن تحديثه حتى أغلق DBLink أو حتى أنهي المهمة مع الاستعلام (تحديد إدراج في جدول Oracle)

هل كانت مفيدة؟

المحلول 2

يبدو أنه من الممكن حظر الجداول ذات التحديدات من خلال Oracle dblinks، لأنه لا يمكن تعريف DBLINK على أنه "قراءة غير ملتزم بها"، ولكن يمكن حل المشكلة باستخدام نظام قاعدة بيانات آخر يدعم هذه الميزة، مثل SQLServer.وهذا ما يقوله آخر مشاركة في هذا المنتدى:

المنتدى

"لا توجد طريقة لتعيين أو خداع Oracle في التحديد باستخدام قراءة غير ملتزم بها حتى عند تحديد البيانات من قاعدة بيانات خارجية عبر DB_LINK

ما فعلناه للتغلب على هذا هو تجاوز برنامج تشغيل odbc من Oracle للتقدم معًا حيث أن أي أعمدة مقفلة في جانب التقدم تفشل بالنسبة لنا عند تحديد DB_LINK حتى مع تعييننا لقراءة المعاملة فقط.

بدلاً من ذلك، استخدمنا SQLServer كمخزن مؤقت بين ORACLE وProgress.باستخدام SQLServer، يمكنك ضبط مستوى العزل للقراءة المتاحة.لذلك قمنا بإنشاء عروض SQLServer لجداول التقدم عبر خادم SQLServer مرتبط ثم نختار من تلك العروض من DB_Link من Oracle إلى SQLServer.

يبدو أن هذا يعمل بشكل جيد"

نصائح أخرى

سوف يرى محرك DB2 DBLink كتطبيق بعيد يقوم بتنفيذ عبارة تحديد.إذا كان هذا التطبيق يستخدم استقرار المؤشر (CS) أو مستوى عزل معقول مماثل، فيجب ألا تقوم قاعدة بيانات DB2 بتأمين أي صفوف لفترة طويلة جدًا.على الأكثر قد يكون هناك سلسلة من الأقفال القصيرة جدًا على مستوى الصف حيث يتكرر المؤشر من DBLink خلال مجموعة نتائج استعلام DB2.إذا كان DBLink لا يغير الأشياء من جانب DB2، فلا ينبغي أن يكون هناك أي قفل مهم يحدث في DB2، لذلك يجب أن تكون التطبيقات الأخرى قادرة على الاتصال بـ DB2 لإجراء التحديثات.يرجى إعلامي إذا أخطأت في فهم شيء ما بخصوص سؤالك وسأوضح إجابتي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top