12.2のデータベースから下位バージョンのデータベースへのDBLINKを介してVARCHAR2列へのINSERTを実行すると、OCIアプリケーションがORA-01483/ORA-01461で失敗する
(Doc ID 2494626.1)
Last updated on NOVEMBER 14, 2019
適用範囲:
Oracle Database Exadata Express Cloud Service - バージョン N/A 以降Oracle Database Cloud Exadata Service - バージョン N/A 以降
Oracle Database Cloud Service - バージョン N/A 以降
Oracle Database - Enterprise Edition - バージョン 12.2.0.1 以降
Oracle Database Cloud Schema Service - バージョン N/A 以降
この文書の内容はすべてのプラットフォームに適用されます。
*** Checked for relevance on 26th Sep 2017 ***
本文書利用上のご注意
本文書は英語の文書 <Document 2309285.1> (最終メジャー更新日: 2019年03月05日) の日本語翻訳版です。
英語の文書の最終メジャー更新日が新しい場合は本文書に適宜反映いたします。
本文書は英語の文書 <Document 2309285.1> (最終メジャー更新日: 2019年03月05日) の日本語翻訳版です。
英語の文書の最終メジャー更新日が新しい場合は本文書に適宜反映いたします。
*本文書で記載されている BUG 情報は My Oracle Support では公開されていない場合があります。
現象
12.2.0.xまたは18cのデータベースに接続するOCIアプリケーションが、下位バージョンのデータベースへのDBLINKを介してVARCHAR2列へのINSERTを実行すると、後述するいずれかのエラーで失敗します。
このエラーは次の条件で発生します:
1) VARCHAR2型のバインド変数がNUMBER型のバインド変数あるいは他のVARCHAR2のバインド変数に後続している
2) OCI環境ハンドルがOCI_UTF16IDモードで初期化されている (*)
3) バインド値の長さが2kbytesを超えている (*)
(*) 上記はOCIのテストケースを基に確認された条件ですが、JDBCのテストケースでは次の条件で発生する事例が報告されています。
2) クライアントのNLS_LANGとデータベースのNLS_CHARACTERSETに異なるキャラクタセットが設定されている
※ すべての異なるキャラクタセットの組み合わせで該当するわけではありませんが、少なくともAL32UTF8とJA16EUCの組み合わせでは該当することが確認されています。
3) バインド値の長さが1060bytes以上である
2) クライアントのNLS_LANGとデータベースのNLS_CHARACTERSETに異なるキャラクタセットが設定されている
※ すべての異なるキャラクタセットの組み合わせで該当するわけではありませんが、少なくともAL32UTF8とJA16EUCの組み合わせでは該当することが確認されています。
3) バインド値の長さが1060bytes以上である
例として、次の構造をもつテーブルを考えて見ます:
変更点
データベースを12.2.0.1.0または18cにアップグレードした、またはそのバージョンの新規アプリケーション。
原因
To view full details, sign in with your My Oracle Support account. |
|
Don't have a My Oracle Support account? Click to get started! |
本書の内容
現象 |
変更点 |
原因 |
解決策 |
参照情報 |