DB2コネクトのJDBC T4ドライバーとのz / OSの下にいくつかの制限を打ちます
質問
私たちは、z / OSの下でDB2に接続し、アプリケーションを持って、しばらくした後、メインフレーム側でヒットされているいくつかのリソース制限があるように思われます。我々はBIRTを使用しているので、我々がJDBCコードの上に持っている唯一のコントロールは、URL自体のスタンザであるようです。それはレポートのデザインの中にJavascriptを使用して可能かもしれないが、我々は(もちろんのSQL自体を除く)接続またはステートメントを直接Javaコントロールを持っていません。だから私たちのようなものでデバッグをオンにすることができます:
jdbc:db2://machine.com:1234/INSTANCE:traceFile=c:/db2.txt;traceLevel=-1;
最終的にはJDBCを使用するアプリケーションは、単純に停止し、それ以上のデータがログファイルに書き込まれません。メインフレーム上のTSO NETSTAT
を行うとESTABLISHED
状態で約50のセッションを示しています。
今、私たちは、これがそのインスタンスへのメインフレーム側以来、それが起こるとき、の無のJDBC接続に問題がある知っていること(任意ののクライアントから)動作します。その時点で、我々は継続してデータベースを再起動する必要があります。
私はあなたがセッションを閉じる前に、のクエリのをコミットする必要があるかもしれないことを示していると思われるそのうちのいくつかは、スタッフのかなり多くをGoogleで検索しました。 BIRT近いコードで間違った何かがありますので、それは(少なくともDB2が期待するものの面で)セッションがオープンされてできることかもしれません。
は、誰もが前に、このような何かを経験していますか? (すべての場合)、あなたはそれをどのように解決しましたか?レポートのデザインの中だけでJDBCのURLスタンザやJavascriptのコードを使用して、それを解決する方法はありますか?
FWIW、私たちは、DB2 9.1とBIRT 2.2.1を使用しています。
解決
これは実際には別のフォーラムで解決された、私は後世のためにここに解決策をコピーしています。
これは、我々の場合にはゼロに設定された(あなたの設定が異なるかもしれないが、一般的にのdb2prefix のIDTHTOIN
)DB2パラメータアセンブリ/リンクジョブのDSN6FAC
セクションで.SDSNSAMP(DSNTIJUZ)
と呼ばれるパラメータがありますが判明しました。このパラメータは、IDLE TIME OUT
スレッドのDDF
で、ゼロは「タイムアウトなし」を意味します。
180にこれを設定する私たちの問題を解決しました。彼らはそれらの3分のいずれかの活性を有していなかった場合はロックを保持したスレッドがシャットダウンされました。 120未満に設定すると、スレッドが(少なくともDB2のV9に)とにかく2分ごとにのみチェックされますので、便利ではありません。
また、(すべてのリソースのロックをリリースしているが、それでもスレッドのオープンを保持しているもの)が行儀のスレッドを保護するためにCMTSTAT=INACTIVE
を設定する必要があります。
のスレッドがレポートのためだったので、これは私たちの特定の問題のために大丈夫だった覚えておいてください。彼らの行動は、セッションを開いた報告のためのデータを得、その後、任意のより多くのセッションを必要としなかったようなものでした。あなたは長時間実行中のセッションを持っている場合(3分以上のためのロックを保持しているすべてのセッションがとにかく疑わしいですが)、あなたは注意する必要があります。
あなたは、その後、ジョブを実行し、DSNTIJUZ
メンバーを編集いずれかのDB2インスタンスをリサイクルまたはSET SYSPARM
を実行する必要があります。
私のためにこれを出しナッティングのためのIBMオーストラリア(西パース・ラボ)の親切BODSに感謝します。