Oracle DBでORA-12170「接続タイムアウト」が出る場合の調査方法

Oracleデータベースに接続しようとした際に、ORA-12170: TNS: 接続タイムアウトが発生しました というエラーが出ることがあります。
このエラーは、クライアントからデータベースへの接続要求がタイムアウトした場合に発生します。ネットワーク障害や設定不備、ファイアウォールの影響など原因は多岐にわたります。この記事では、調査のポイントをステップごとに解説します。


1. エラーメッセージの確認

まずは実際のエラーメッセージを確認しましょう。例えば以下のように出力されます。

ORA-12170: TNS: 接続タイムアウトが発生しました

sqlplus やアプリケーションログに記録されることが多いので、詳細をログからもチェックしておきます。


2. ネットワークレベルの確認

接続タイムアウトの多くはネットワーク経路に起因します。以下を確認しましょう。

  • ping でホストに疎通できるか

  • tnsping でOracleリスナーの応答があるか

  • ファイアウォールやセキュリティグループで 1521/TCP(デフォルトポート)がブロックされていないか

  • VPNやプロキシ経由の場合、経路に問題がないか


3. Oracle Listenerの確認

データベース側でリスナーが正常に動作しているか確認します。

lsnrctl status
  • 状態が READY になっているか

  • 正しいホスト名・ポートで待ち受けているか

  • リスナーログにエラーが出ていないか


4. SQL*Net / TNS設定の確認

クライアント側の tnsnames.ora や接続文字列の設定を見直します。

  • HOST名/IPアドレス が正しいか

  • SERVICE_NAME / SID が一致しているか

  • 環境変数 ORACLE_HOMETNS_ADMIN の設定が適切か

また、サーバ側の sqlnet.ora にて SQLNET.INBOUND_CONNECT_TIMEOUTSQLNET.OUTBOUND_CONNECT_TIMEOUT が過剰に短く設定されていないかも確認します。


5. ファイアウォール / OS設定の確認

サーバOS側の設定も見直す必要があります。

  • OSファイアウォール(iptables / firewalld / Windows Defender Firewall)がポート1521を許可しているか

  • クラウド環境の場合、セキュリティグループやネットワークACL が接続をブロックしていないか

  • 複数NICやロードバランサーを経由している場合に経路の設定が正しいか


6. タイムアウト値の調整

原因が不明な場合、タイムアウト値の調整も検討できます。

  • クライアント側: sqlnet.oraSQLNET.OUTBOUND_CONNECT_TIMEOUT

  • サーバ側: sqlnet.oraSQLNET.INBOUND_CONNECT_TIMEOUT

  • Listener側: listener.oraINBOUND_CONNECT_TIMEOUT_LISTENER

ただし、根本原因がネットワークや設定不備である場合は、単なる延命策になってしまう点に注意が必要です。


まとめ

ORA-12170 が発生した場合の調査手順は以下の流れで進めると効率的です。

  1. ネットワーク疎通確認(ping / tnsping)

  2. リスナー稼働状況確認(lsnrctl status)

  3. 接続設定(tnsnames.ora / 接続文字列)の確認

  4. サーバ側ファイアウォールやクラウドセキュリティ設定の確認

  5. タイムアウト設定の調整

多くの場合、ネットワーク経路やファイアウォールが原因となるケースが多いため、まずは通信経路の確認から着手するのがポイントです。

HULFT連携:Javaからユーティリティコマンドを呼び出す実装例

HULFTには「送受信ジョブを定義して使う方法」以外に、utlsendなどのユーティリティ系コマンドを直接呼び出してファイル転送や加工を行う手段があります。
これらは事前の送受信定義が不要で、コマンド実行時に条件を指定できるため、テスト送信・スポット利用・簡易処理に非常に便利です。

本記事では、JavaでHULFTコマンドを実行する例をご紹介します。

  • utlsend : ファイル送信

  • utlrecv : ファイル受信

  • utlconcat : ファイル連結

  • utlsplit : ファイル分割


Javaから外部コマンドを実行する基本

Javaでは ProcessBuilder を使うことで、外部のHULFTコマンドを呼び出せます。
エラー出力も標準出力にまとめる設定をすれば、ログ管理が容易になります。

共通の呼び出しテンプレートは以下の通りです。

以降の例では、この runCommand を利用して各ユーティリティコマンドを実行します。


1. ファイル送信(utlsend

事前の送信定義が不要で、対象ファイルと宛先ノードを直接指定できます。

  • -f : 送信するファイルパス

  • -n : 宛先ノード名(HULFTに登録済み)


2. ファイル受信(utlrecv

受信ジョブを登録せず、コマンドだけでファイルを取得できます。

  • -f : 保存先のファイル名

  • -n : 送信元ノード名


3. ファイル連結(utlconcat

複数のファイルを1つにまとめたいときに使います。

  • -o : 出力ファイル名

  • -f : 結合対象のファイル(複数指定可)


4. ファイル分割(utlsplit

大きなファイルを分割して処理したいときに使います。

  • -f : 分割対象ファイル

  • -l : 分割する行数(例:1000行ごと)


運用上の注意点

  1. PATHの設定
    Javaから呼び出す際は、utlsend.exe などのHULFTバイナリがPATHに通っている必要があります。
    通っていない場合はフルパス指定が必須です。

  2. 終了コードの確認

    • 0 : 正常終了

    • 0以外 : エラー(詳細はHULFTマニュアルのエラーコード参照)

  3. ログ管理
    実際の業務バッチでは process.getInputStream() の内容をファイル出力してログ管理することを推奨します。


まとめ

  • utlsend でファイルを即送信できる

  • utlrecv で即時受信が可能

  • utlconcat でファイルを連結

  • utlsplit でファイルを分解

これらをJavaから呼び出すことで、柔軟なファイル連携や加工処理が実現できます。

インターネット速度測定サービス「Speedtest」と「Fast.com」の違いを比較してみた

インターネットが遅いと感じたときや、回線品質を確認したいときに便利なのが「ネット速度測定サービス」です。代表的なものに Speedtest by OoklaFast.com(Netflix提供) があります。
今回はこの2つで実際に速度を計測し、結果を比較してみました。


計測結果の比較

Speedtestの結果

  • ダウンロード:749.95 Mbps

  • アップロード:450.32 Mbps

  • Ping:26 ms

  • 接続サーバ:東京(fdcservers.net)

Fast.comの結果

  • ダウンロード:190 Mbps

  • アップロード:570 Mbps

  • レイテンシ:12〜32 ms

  • 接続サーバ:東京・大阪(KDDI/Netflix系)

👉 同じ回線を使用しているにもかかわらず、下り速度に大きな差が出ました。


なぜ結果が違うのか?

1. サーバの違い

  • Speedtest:テスト用に用意されたサーバ(東京・世界各地)を利用。

  • Fast.com:Netflixの動画配信サーバ(CDN、KDDI系など)を利用。

→ ISP(プロバイダ)のピアリング状況によって、速度差が出やすい。


2. 計測方法の違い

  • Speedtest:複数の接続を同時に行い、理論的な最大スループットを測定。

  • Fast.com:大容量データを一定時間ダウンロードし、動画ストリーミングに近い実効速度を測定。

→ そのため、Speedtestの方が「回線の性能」に近く、Fast.comの方が「動画サービス利用時の体感速度」に近い。


3. ISPの最適化

多くのプロバイダは、動画配信トラフィックを特別に扱っています。Netflixなどの動画ストリーミングでは制御が入ることがあり、Fast.comでは「実際の動画視聴環境に近い速度」が表示されるケースがあります。


どちらを信じるべき?

  • 回線の最大性能を知りたい → Speedtest

  • NetflixやYouTubeなど動画視聴の快適さを知りたい → Fast.com

両方を併用することで「理論値」と「実利用値」をバランスよく確認できます。


まとめ

  • SpeedtestとFast.comでは、計測サーバと方式の違いから結果に差が出る。

  • Speedtestは回線の理論性能を測りたいときに有効。

  • Fast.comは動画配信サービスでの実利用速度を知るのに便利。

  • ネット環境を正確に把握するには、複数のサービスで測定して比較するのがおすすめです。