はじめに
EC2 に Oracle Client を入れて RDS for Oracle に接続しようとしたところ、ORA-12643 が出て接続できませんでした。
このエラー、とにかく日本語・英語ともに情報が少なく、メッセージも抽象的で切り分けの取っ掛かりがありません。ChatGPT や Gemini に聞いても定番の確認項目しか出てこず、そのどれも該当しませんでした。
結論から言うと、Oracle Client にバンドルパッチ(Patch 35348034)を当てたら直りました。
ネット上でこの解決パターンを見かけなかったので、同じところで詰まった人向けに残しておきます。
この記事は「当てたら直った」という事実の共有であり、根本原因を Oracle Support で確定させたものではありません。原因の考察はあくまで推測です。
結論
-
ORA-12643は、sqlnet.oraや RDS 側の設定が正常でも発生することがある - クライアント側にパッチを当てていないことが原因のケースがある
- 自分の場合は Patch 35348034 の適用で解消した
環境
| 項目 | 内容 |
|---|---|
| クライアント | Amazon EC2(Windows Server) |
| Oracle Client | 19c(パッチ未適用の状態) |
| 接続先 | Amazon RDS for Oracle |
| 適用したパッチ | Patch 35348034(Windows Database Bundle Patch 19.20.0.0.230718) |
発生したエラー
ORA-12643: Client received internal error from server
公式ドキュメントの説明はこちらです。
読んでも「サーバーから内部エラーを受け取った」以上のことが書いておらず、どこを直せばいいのか分かりません。
試したこと(効果がなかったもの)
1. エラーコードでひたすら検索
まずは ORA-12643 で検索しましたが、そもそもヒット数が少ないうえに、出てくる情報も原因がバラバラで、決定打がありませんでした。
2. 生成AI(ChatGPT / Gemini)に相談
以下のような一般的な確認項目が提示されました。
-
sqlnet.oraの記述が壊れていないか - RDS のオプショングループの暗号化設定(Oracle Native Network Encryption)が正しいか
- セキュリティグループ・サブネットなど、RDS 側のネットワーク構成に問題がないか
一通り確認しましたが、いずれも正常でした。
なお、この時点で「パッチが原因では?」と聞いてみたところ、可能性は低いという回答でした。結果的にはここが正解だったので、AI の回答を鵜呑みにせず候補として残しておいてよかったです。
解決した方法:Patch 35348034 の適用
暗号化まわりが怪しいと踏んで調べていくうちに、クライアント側のパッチレベルが関係しそうだという当たりがつきました。
そこでいくつかパッチを試したところ、Patch 35348034 を適用した時点でエラーが消え、RDS に接続できるようになりました。
適用は OPatch ユーティリティで行います。
# OPatch のバージョン確認(古いと適用に失敗することがあります)
$ORACLE_HOME/OPatch/opatch version
# 適用
cd <patch_dir>/35348034
$ORACLE_HOME/OPatch/opatch apply
# 適用後の確認
$ORACLE_HOME/OPatch/opatch lsinventory
「OPatch」はパッチを適用するためのツール名で、パッチそのものではありません。混同しやすいので、探すときは パッチ番号(35348034) で検索するのが確実です。
なぜ直ったのか(推測)
Patch 35348034 は Windows Database Bundle Patch(19.20.0.0.230718) で、その四半期時点までのセキュリティ修正やバグ修正を累積的に含むパッチです。
RDS for Oracle との通信では、オプショングループの設定によって Native Network Encryption による暗号化通信が行われます。パッチ未適用のクライアントでは、この暗号化アルゴリズムのネゴシエーションがうまく成立せず、サーバー側で発生した内部エラーが ORA-12643 としてクライアントに返っていたのではないか、と考えています。
「サーバーからの内部エラー」という抽象的なメッセージのせいで、原因が RDS 側にあるように見えてしまうのがこのエラーの厄介なところです。実際にはクライアント側に原因がありました。
繰り返しになりますが、これは Oracle Support で裏取りしたものではなく、症状と適用内容からの推測です。
まとめ
-
ORA-12643は情報が少なく、メッセージも抽象的で仮説を立てづらいエラー - 設定ファイルやネットワークが正常なら、クライアントのパッチレベルを疑う価値がある
- 海外の技術サイトを見ても「パッチ適用で解消した」という事例は見つけられなかったので、レアケースかもしれません
- とはいえ、行き詰まったら可能性が低いと言われた選択肢も試してみるものだというのが今回の学びでした
同じエラーで詰まっている方の切り分けの一助になれば幸いです。