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オンライン再定義サブプログラムのサマリーに関する項を参照してください