6.5 Oracle Data RedactionおよびJSON

リダクションされたデータでJavaScript Object Notation (JSON)を使用できます。

  • 表の列にis json制約を作成できます。

    ただし、is json制約のある表の列にOracle Data Redactionポリシーを作成することはできません。これを試みると、ORA-28073 - The column column_name has an unsupported datatypeエラーが発生します。回避策として、JSONオブジェクトの上にJSON_TABLE行ソース演算子使用するリレーショナル・ビューを作成し、このビューに対してデータ・リダクション・ポリシーを適用することをお薦めします。

    次の例は、json_tableを使用してリレーショナル・ビューを作成し、このビューにデータ・リダクション・ポリシーを追加する方法を示しています。

    create table tab1
            (c1 varchar2(4000) check (c1 is json))
    
    insert into tab1 values
    ('{"id" : 4,
       "name" : "Large blue soda cup",
       "price" : 12,
       "tags" : ["large1", "green"],
       "phone" : "1-415-555-0100"}'
    )
    
    create or replace view json_view1 as
     select t.* from tab1,
      json_table(c1, '$' columns
           id number path '$.id',
           name varchar2(20) path '$.name',
           price number path '$.price',
           phone varchar2(20) path '$.phone') t ;

    ビューの所有者が列phoneを問い合せた場合、この列はリダクションされません。これで、ビュー内の任意の列(phonepriceなど)にリダクション・ポリシーを追加できます。

  • リダクションされたデータの上にJSON二面性ビューを作成できます。

    ただし、この機能には制限があります。リダクションが有効な列は主キーにできず、二面性ビューのエンティティ・タグ(ETAG)の一部にもできません。