0

プロシージャを含むSQLスクリプトがあります。を使用して実行します sqlplus -s @script.sql logfile.log myparam1 myparam2 しかし、〜2時間10分後、スクリプトは次で終了します

ERROR:
ORA-03114: not connected to ORACLE 


DECLARE
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel 
Process ID: 12345 
Session ID: 33 Serial number: 54321 

次のtcp設定があります

-bash-4.1$ cat /proc/sys/net/ipv4/tcp_keepalive_time (which is two hours)
7200
-bash-4.1$ cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75
-bash-4.1$ cat /proc/sys/net/ipv4/tcp_keepalive_probes
9

スクリプトの実行中に、TCP 接続が確立されていることを確認しましたが、データベース側 (データベース サーバー マシン) にはそのような接続はありませんでした。

私の理論では、何らかの形でデータベース サーバーが接続を切断しているということです。そして、システムが 2 時間 (7200 秒) 後に最初のキープアライブ プローブを送信すると、接続がアクティブでなくなったことを検出し、接続を閉じてスクリプトが戻ります。

なぜデータベース システムが接続を切断するのか理解できません。冗長性を高めるためにデータベースの最後に設定はありますか? それとも、これはいくつかのファイアウォール設定に関連している可能性がありますか? また、2 時間 10 分では、2 時間部分が tcp_keepalive_time から来ていると推測できます。これは 10 分部分になります。データベース側の再試行はありますか?

編集:DBAと私は問題を調べました.TCP接続が私の側で確立されているのを見て、彼は私の側からの接続を見ていませんでした.

4

4 に答える 4