B Oracle DatabaseのJSONに関する制限事項

ここでは、Oracle Database内のJSONデータに対するOracleのサポートに関連する制限事項について説明します。

異なる指定がないかぎり、指定された制限事項が順守されない場合には、エラーが発生します。

  • 全般

    • JSONオブジェクトまたは配列のネスト・レベルの数: 1000(最大)

    • JSONフィールド名の長さ: 32767バイト(最大)

  • SQL/JSONファンクション

    • パスの長さ: 4Kバイト(最大)

    • パス・ステップ数: 65535(最大)

  • 簡略化されたJSON構文

    • パスの長さ: 4Kバイト(最大)

    • パス・コンポーネントの長さ: 128バイト(最大)

      SQLドット表記法構文およびSQL識別子の詳細は、Oracle Database SQL言語リファレンスを参照してください。

  • JSON検索索引

    • フィールド名の長さ: 255バイト(最大)文書に255バイトよりも長いフィールド名が含まれている場合、完全に索引付けされない可能性があります。その場合、エラーがデータベース・ビューCTX_USER_INDEX_ERRORSに記録されます。

      注意:

      名前が64バイトを超えるオブジェクト・フィールドが含まれるJSONデータを索引付けする場合、Oracle Database 18cより前に作成された任意のJSON検索索引およびOracle Text索引を再構築する必要があります。詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。

  • JSONデータ・ガイド

    • パスの長さ: 4000バイト(最大)4000バイトよりも長いパスは、データ・ガイドで無視されます。

    • 親ノードにある子の数: 1024(最大)子が1024を超えるノードは、データ・ガイドで無視されます。

    • フィールド値の長さ: 32767バイト32767バイトよりも長い値がJSONフィールドに含まれる場合、データ・ガイドはその長さを32767として報告します。

    • 長さが0(ゼロ)のフィールド名: 長さが0(空)のオブジェクトのフィールド名("")は、JSONデータ・ガイドではサポートされません。このような名前が含まれるJSONデータに対しては、データ・ガイドの動作は定義されていません。

  • OSONとJSONデータ型

    OSONは、Oracle DatabaseサーバーとOracle Databaseクライアントの両方で問合せおよび更新を迅速に行うための、オラクル社による最適化されたバイナリJSON形式です。

    • すべてのフィールド名の合計サイズ: 65535バイト(最大)。

    • (各)フィールド名の長さ: 255バイト(最大)。

    • 重複フィールドの不使用: フィールド名が重複したJSONオブジェクトがネイティブなバイナリ形式を使用して表されている場合、これらのフィールドの1つだけが残されます。

    • 合計サイズ: 32 MB (最大、JSON型インスタンスの場合)。

    • 圧縮しない: JSON型インスタンスは圧縮できません。そのような値は、キャッシュされた未圧縮のSecureFile LOBを使用して実装されます。

    • 比較しない: JSON型インスタンスは、=>などの演算子を使用して直接比較できません。これは、ORDER BYまたはGROUP BYとともにそれらを使用できないことを意味します。ただし、json_valueまたは単純なドット表記法構文を使用して問合せを行い、データ型変換項目メソッドを適用すると、比較可能なSQLスカラー値を抽出できます。

    • 一意制約に使用しない: JSON型の列には一意制約を適用できません。(ただし通常は、そのような列に制約を使用できます。たとえば、json_valueなどのファンクションに基づく制約を使用できます。)

    • 結合に使用しない: JSON型の列は結合に使用できません。かわりに、json_valueまたは単純なドット表記法構文をデータ型変換項目メソッドとともに使用して抽出されたSQLスカラー値に対して結合を実行できます。

    • 索引、パーティション化またはシャーディングのキーとして使用しない: JSON型インスタンスは、索引キー、パーティション・キーまたはシャーディング・キーとして使用できません。かわりに、json_valueまたは単純なドット表記法構文をデータ型変換項目メソッドとともに使用して抽出されたSQLスカラー値を使用できます。

  • PL/SQL getterメソッドJSON_OBJECT_T.get_keys()は、指定されたJSONオブジェクトに対し、最大32767のフィールド名を返します。32767を超えるフィールドを持つオブジェクトが指定されると、エラーが発生します。