سؤال

لدينا تطبيق يتصل ب DB2 ضمن Z / OS، وبعد فترة من الوقت، يبدو أن هناك بعض الحد من الموارد التي يتم ضربها على جانب الوظيفة المركزية. نظرا لأننا نستخدم Birt، إلا أنه يبدو أن التحكم الوحيد لدينا عبر رمز JDBC هو مع Stanzas في عنوان URL نفسه. ليس لدينا تحكم مباشر Java التحكم في الاتصال أو البيانات (باستثناء SQL نفسه بالطبع) على الرغم من أنه قد يكون من الممكن باستخدام JavaScript ضمن تصميم التقرير. حتى نتمكن من تشغيل تصحيح الأخطاء مع شيء مثل:

jdbc:db2://machine.com:1234/INSTANCE:traceFile=c:/db2.txt;traceLevel=-1;

في النهاية، سيتوقف التطبيق باستخدام JDBC ببساطة ولا يتم كتابة المزيد من البيانات إلى ملف السجل. القيام TSO NETSTAT في الإطار الرئيسي يظهر حوالي 50 جلسات في ESTABLISHED حالة.

الآن نحن نعرف أن هذه مشكلة على جانب الوظيفة المركزية منذ ذلك الحين، عندما يحدث ذلك، رقم اتصال JDBC بهذا المثيل سيعمل (من أي زبون). في هذه المرحلة، علينا إعادة تشغيل قاعدة البيانات للمتابعة.

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

هل شهد أي شخص أي شيء مثل هذا من قبل؟ كيف قمت بإصلاحها (إذا كان ذلك على الإطلاق)؟ هل هناك طريقة لحلها باستخدام فقط JDBC URL Stanzas أو رمز JavaScript داخل تصميم التقرير؟

FWIW، نحن نستخدم DB2 9.1 و Birt 2.2.1.

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

المحلول

تم حل هذا بالفعل في منتدى آخر، فأنا نسخ الحل هنا للأجيال القادمة.

اتضح أن هناك معلمة تسمى IDTHTOIN في ال DSN6FAC قسم من DB2 معلمات التجميع / الوظيفة الرابط (عموما DB2PREFIX..SDSNSAMP(DSNTIJUZ) على الرغم من أن برنامج الإعداد قد يكون مختلفا) تم تعيينه إلى الصفر في علمنا. هذه المعلمة هي IDLE TIME OUT بالنسبة DDF المواضيع والصفر يعني "لا مهلة".

وضع هذا إلى 180 حل مشكلتنا. تم إغلاق المواضيع التي كانت تعقد الأقفال إذا لم يكن لديهم أي نشاط في تلك الدقائق الثلاث. إن إعداده إلى أقل من 120 غير مفيد لأن المواضيع يتم التحقق منها فقط كل دقيقتين على أي حال (في DB2 V9 على الأقل).

يجب عليك أيضا تعيين CMTSTAT=INACTIVE لحماية المواضيع حسن التصرف (تلك التي أصدرت جميع أقفال الموارد، ولكن لا تزال تحمل الخيط مفتوحا).

ضع في اعتبارك أن هذا كان بخير لمشكلنا الخاص منذ أن كانت المواضيع للتقارير. كان سلوكهم بحيث تفتح جلسة، حصلت على بيانات الإبلاغ، ثم لم تكن بحاجة إلى الجلسة بعد الآن. إذا كانت لديك جلسات طويلة المدى، فأنت بحاجة إلى توخي الحذر (على الرغم من أن أي جلسة تحمل أقفال لأكثر من ثلاث دقائق هي المشبوهة على أي حال).

يجب عليك تحرير DSNTIJUZ عضو، تشغيل المهمة، إما إعادة تدوير مثيل DB2 أو تنفيذ SET SYSPARM.

بفضل الدعارة المفيدة في IBM Australia (West Perth Lab) لتدوينها.

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