D テキストJSONデータからJSONデータ型への移行
テキストJSONデータ(型VARCHAR2
、CLOB
またはBLOB
)ではなく、ネイティブ・バイナリJSONデータ(型JSON
)を使用することをお薦めします。既存のテキストJSONデータをJSON
型に移行する方法を説明します。ここでは、(1)アップグレード前チェック、(2)データの移行、(3)依存データベース・オブジェクトの処理を行います。
データ型JSON
を使用すると、コストのかかるテキストJSONデータ解析が回避され、問合せのパフォーマンスが向上します。
次のいずれかの方法で、データの移行(ステップ2)は可能です。それぞれの方法では、元の表と同じ形状の、テキストJSON列ではなくJSON
型列が含まれる新しい表を作成します。
-
元の表のテキストJSON列の問合せを使用して、
JSON
型列に移入します。これを行う方法には、CREATE TABLE AS SELECT
(CTAS)またはSELECT
(IAS)としてのINSERT
の2つがあります。 -
Oracle Data Pumpをデータのみモードで使用します。元の表をダンプ・ファイルにエクスポートした後、そのダンプ・ファイルを新しい表にインポートします。
-
オンライン再定義を使用します。
- 移行前チェックの実行
PL/SQLプロシージャDBMS_JSON.json_type_convertible_check
を使用して、テキストJSONデータの特定の列をJSON
データ型に変換できるかどうかを確認します。 - テキストJSONの問合せによるJSON型列の移入
この移行方法では、元の表を問い合せて新しい表に移入します。これは、CREATE TABLE
文またはINSERT
文の一部として行います。新しい表の形状は元の表と同じですが、テキストJSON列ではなくJSON
型列が含まれます。 - Oracle Data Pumpを使用したJSONデータ型への移行
この移行方法では、データのみモードでOracle Data Pumpを使用して、テキストJSON列が含まれる元の表から、JSON
型列が含まれることを除いて同じ形状の新しい表にデータをロードします。 - オンライン再定義を使用したJSONデータ型への移行
PL/SQLプロシージャDBMS_REDEFINITION.can_redef_table
によって許可された場合は、オンライン再定義を使用して、表データの可用性に大きな影響を与えることなく、テキストJSON列をJSON
型列に移行できます。移行プロセスの大部分で、問合せとDMLの両方に引き続きアクセスできます。 - 依存オブジェクトの処理
元のテキストJSON
データを置き換えるJSON型データの場合、その元のデータに依存するデータベース・オブジェクトを再作成する必要があります。
関連トピック
親トピック: 付録