以前のコンバージョン ワークスペースは、古いタイプのコンバージョン ワークスペースで、機能が制限されています。以前のコンバージョン ワークスペースでは、Gemini による変換機能やインタラクティブ SQL エディタはサポートされていません。Ora2Pg 移行ツールを使用してソース スキーマを変換する場合にのみ使用できます。
以前のタイプのコンバージョン ワークスペースは、変換ワークフローに次のような制限があるため、移行には使用しないことをおすすめします。
| インタラクティブ コンバージョン ワークスペース | 以前のコンバージョン ワークスペース |
|---|---|
| スキーマとコード オブジェクトの変換は Database Migration Service で行われます。 | スキーマとコード オブジェクトの変換は、Ora2Pg 移行ツールを使用して Database Migration Service の外部で行います。 |
| 変換されたソースは、Database Migration Service で移行先データベースに直接適用できます 。 | 変換されたスキーマを Cloud SQL for PostgreSQL 移行先インスタンスの移行先 データベースに適用する必要があります。 |
| 下書きのスキーマとコードを Database Migration Service で直接テストして、移行先インスタンスに正常に適用できることを確認できます。 | 移行先インスタンスに影響を与えずに 下書きのスキーマとコードをテストすることはできません。 |
主キーと一意の制約がないテーブルに、欠落している rowid 列を自動的に追加します。 |
スキーマを適用した後、移行先テーブルに欠落している主キーを追加する必要があります。 |
以前のコンバージョン ワークスペースを使用する
シナリオで以前のコンバージョン ワークスペースを使用する必要がある場合は、次の操作で移行プロセスを変更します。
Ora2Pg 構成ファイルを記述します。
Ora2Pg 変換ツールの使用方法については、 Ora2Pg のドキュメントをご覧ください。Database Migration Service でサポートされているディレクティブの完全な リストについては、以下のセクションを開いてください。
Database Migration Service でサポートされている Ora2Pg 構成
Database Migration Service は、Ora2Pg ファイルの次の構成項目をサポートしています。
BOOLEAN_VALUESDATA_TYPEDEFAULT_NUMERICENABLE_MICROSECONDEXPORT_SCHEMAMODIFY_STRUCTMODIFY_TYPEPG_INTEGER_TYPEPG_NUMERIC_TYPEPG_SCHEMAPRESERVE_CASEREPLACE_AS_BOOLEANREPLACE_COLSREPLACE_TABLESREPLACE_ZERO_DATESCHEMA
Database Migration Service は接続プロファイルを使用して 接続の詳細を定義するため、Or2Pg 構成ファイルで次の情報 を定義する必要はありません。
ORACLE_DSNORACLE_HOMEORACLE_PWDORACLE_USERPG_DSNPG_PWDPG_USER
また、Database Migration Service は、移行するレコードを制限するために
WHERE構成ディレクティブを使用しません。- 以前のコンバージョン ワークスペースを作成し、Ora2Pg ファイルをアップロードしてスキーマを変換します。
変換されたスキーマを移行先データベースに手動で適用します。
Ora2Pg 構成を作成してワークスペースを作成したら、 生成されたコードを移行先データベースに直接適用する必要があります。
主キーのないテーブルを移行します。
Database Migration Service は、主キーを持つテーブルのみを移行します。 移行元データベースに主キーのないテーブルが含まれている場合は、 移行先データベースの変換されたテーブルに主キーまたは一意の制約を手動で作成する必要があります。 変換されたスキーマを適用した後。詳細については、次のセクションを開いてください。
移行先データベースに主キー制約を追加する
主キーのない Oracle テーブルを移行するには、次の操作を行います。
- SQL クライアントを使用して移行先の Cloud SQL インスタンスに接続します。次の方法を使用できます。
-
psqlクライアント。この方法を使用してインスタンスのプライベート IP に接続できますが、Compute Engine 仮想マシンを作成する必要がある場合があります。 -
gcloud sql connectコマンド。このコマンドは、パブリック IP アドレスが有効になっている Cloud SQL インスタンスでのみ機能します。
-
- テーブルに欠落している主キー制約を作成します。主キーの詳細については、PostgreSQL ドキュメントの
主キーをご覧ください。
次のセクションを開いて、SQL コマンドのサンプルを確認することもできます。
既存の列を使用して主キーを作成する
テーブルには、列または列の組み合わせに基づく論理主キーがすでに存在している可能性があります。たとえば、一意の制約またはインデックスが構成された列が存在する場合があります。これらの 列を使用して、移行元データベースのテーブルの新しい主キーを生成します。次に例を示します。
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME);
すべての列を使用して主キーを作成する
主キーとして使用できる既存の制約がない場合は、テーブルのすべての列を使用して主キーを作成します。PostgreSQL インスタンスで許可されている主キーの最大長を超えないようにしてください。次に例を示します。
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME_1, COLUMN_NAME_2, COLUMN_NAME_3, ...);
このように複合主キーを作成する場合は、明示的に すべての列名を指定する必要があります。この目的で ステートメントを使用してすべての列名を取得することはできません。
ROWID疑似列を使用して一意の制約を作成するOracle データベースでは、
ROWID疑似列を使用してテーブル内の各行の場所を保存します。主キーのない Oracle テーブルを移行するには、移行先の PostgreSQL データベースにROWID列を追加します。Database Migration Service は、移行元の OracleROWID疑似列から対応する数値で列を設定します。列を追加して主キーとして設定するには、次のコマンドを実行します。
ALTER TABLE TABLE_NAME ADD COLUMN rowid numeric(33,0) NOT NULL; CREATE SEQUENCE TABLE_NAME_rowid_seq INCREMENT BY -1 START WITH -1 OWNED BY TABLE_NAME.rowid; ALTER TABLE TABLE_NAME ALTER COLUMN rowid SET DEFAULT nextval('TABLE_NAME_rowid_seq'); ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_DISPLAY_NAME PRIMARY KEY (rowid);
- SQL クライアントを使用して移行先の Cloud SQL インスタンスに接続します。次の方法を使用できます。
次のステップ
以前のワークスペースで変換ワークフローを実行したら、標準の移行手順に進むことができます。移行ジョブを作成する をご覧ください。