■98195 / inTopicNo.1) |
処理毎にコネクション確立する? |
□投稿者/ furu (128回)-(2021/10/12(Tue) 10:48:43)
|
分類:[データベース全般]
サーバー:Oracle 12c → Oracle Cloud 19c クライアント:Windows10 SQL*Plus,C#など
DBサーバーをOracle Cloudに移行するにあたり SQL*Plusでの作業やC#プログラムで困っています。
Oracle Cloudでは セッションのアイドルタイムが5分以上になるとリソースを有効活用するため セッションが切断されることがあるということがわかりました。 テストでは100%切断されました。 トランザクションが実行中でも切断されます。
https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/idle-tile-limits.html#GUID-241F4C85-24E5-4F8A-B9EE-E3FCEF566D36
オラクルサポートへ何度か問い合わせし サーバーからクライアントへの定期的な 異常監視(SQLNET.EXPIRE_TIMEパラメータ)することにより 切断を防止できることはわかりました。 しかし、本来の目的とは使用方法が違うし、 WEBでもこのような方法はあまり見つかりませんでした。
コネクションやプログラムでのトランザクションの使い方が 一般的な方法と違っているのかと悩んでいます。
1.C#プログラム(Windows Forms)で 起動時にコネクションをオープンし、 プログラム終了までコネクションは張りっぱなしにしています。 通常、処理毎にコネクションをオープンするものですか? マスタ修正プログラムだと 表示するためselectでコネクション 更新するためupdateでコネクション ですか?
2.C#プログラム(Windows Forms)で トランザクションの最後に処理件数など表示し メッセージボックスにてCommitしていいかの確認をしています。 この時、電話やトイレなどで5分以上「OK」ボタンを押せないと セッションが切断され、Rollbackされてしまいます。 トランザクション中にオペーレーターの確認などしてはいけないものですか?
3.SQL*PlusなどでのSQL作業はCommitするまで 電話や調べものなど時間がかかるものはしないようにしていますか?
長文になり、申し訳ございません。 デフォルトでは5分で切断されるということに釈然としないものがありますが 自分のやり方に疑問は生じ、質問させていただきました。
|
|