私は過去に同様の問題を抱えていました。次に、基本的にOracleのdbリンクは、単純なSQL型以外では「壊れている」という結論に達しました(特にUDT、CLOBには問題がある可能性があり、XMLTypeにも問題がある可能性があります)。 OIDソリューションを機能させることができれば、幸運を祈ります。
私が頼った解決策は、DBリンクの代わりにJavaストアドプロシージャを使用することでした。
Javaストアドプロシージャの特徴:
- 「豊富なタイプのセット」を返すことができます。ほぼすべての複雑なタイプ(UDT、テーブル/配列/変数)を返すことができます。Oracleオンラインドキュメント 詳細については。 Oracleは、DBLinkからよりも、Javaから複雑な(またはリッチな)型をマーシャリングするというはるかに優れた仕事をします。
- 保存されたJavaは「デフォルト接続」を取得できます(データベースへのSQL接続と同じセッションで実行されます-認証の問題はありません)。
- 格納されたJavaはリモートDB上のPL/SQL procを呼び出し、JavaJDBCレイヤーはリモートDBからのマーシャリングを実行します。
- 格納されたJavaは結果をパッケージ化し、結果をSQLまたはPL/SQLレイヤーに返します。
少し手間がかかりますが、Javaが少しあれば、Oracleのドキュメントとサンプルからソリューションを「カットアンドペースト」できるはずです。
これがお役に立てば幸いです。