A SODAコレクションの再定義
オンライン再定義を使用して、既存のコレクションのメタデータまたはその他のプロパティを変更できます。特に、アップグレード後にデータベース初期化パラメータのcompatible
を20
以上にすると、新しいデフォルト・メタデータを反映するようにコレクションを移行できます。
compatible
初期化パラメータが20
以上のデータベースのデフォルトのコレクション・メタデータのメタデータ・フィールドcontentColumn.sqlType
の値は、"JSON"
です。また、メタデータ・フィールドversionColumn.method
の値は"UUID"
です。compatible
設定が20
以上の場合、Oracleでは、これらの値を使用するように、オンライン再定義を使用して既存のコレクションのメタデータを変更することをお薦めします。
SODAコレクションのオンライン再定義は、データベース表のオンライン再定義に似ています。コレクションに使用されるPL/SQLプロシージャ(パッケージDBMS_SODA
内)は、パッケージDMBS_REDEFINITION
の表の対応するプロシージャに似ています。
コレクションを再定義するには、SODAオンライン再定義プロシージャを1つずつ適用します。各ステップで、エラーが発生した場合に、サブプログラムDBMS_SODA.abort_redef_collection
を使用して移行プロセスを中止できます。
たとえば、ここに示すステップでは、初期化パラメータcompatible
が20
以上のデータベースのデフォルト・メタデータが反映されるように、コレクションMyCollection
を移行します。
次のコードは、BLOB
コンテンツとして格納されたテキストのJSONデータを使用する、移行対象の初期コレクションを作成します。20
未満のパラメータcompatible
を持つデータベースのデフォルト・メタデータは、説明のために明示的に指定します。特に、contentColumn.sqlType
は"BLOB"
で、versionColumn.method
は"SHA256"
です。
v_original_collection := 'MyCollection';
v_original_metadata :=
'{"keyColumn": {"name": "ID",
"sqlType": "VARCHAR2",
"maxLength": 255,
"assignmentMethod": "UUID"},
"contentColumn": {"name": "JSON_DOCUMENT",
"sqlType": "BLOB",
"compress": "NONE",
"cache": true,
"encrypt": "NONE",
"validation": "STANDARD"},
"versionColumn": {"name": "VERSION",
"method": "SHA256"},
"lastModifiedColumn": {"name": "LAST_MODIFIED"},
"creationTimeColumn": {"name": "CREATED_ON"},
"readOnly": false}';
DBMS_SODA.create_collection(v_original_collection,
v_original_metadata);
次のステップでは、フィールドcontentColumn.sqlType
およびversionColumn.method
を変更します。適用されなくなったフィールド(compress
、cache
、encrypt
およびvalidation
)が削除されたことを除き、その他のメタデータ・フィールドは変更されません。(これらのフィールドは、JSON
データ型として格納されているドキュメント・コンテンツには適用されません。)
コレクションのオンライン再定義を実行するには、次のデータベース権限が必要です。
-
PL/SQLパッケージ
DBMS_REDEFINITION
の権限EXECUTE
-
システム権限
CREATE MATERIALIZED VIEW
-
システム権限
CREATE TABLE
、またはコレクションが現在のものとは異なるデータベース・スキーマの表によってバックアップされている場合、CREATE ANY TABLE
関連項目:
『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のSODAオンライン再定義サブプログラムのサマリーに関する項を参照してください