以前のコンバージョン ワークスペースは、以前のより制限の多いタイプのコンバージョン ワークスペースです。以前の変換ワークスペースでは、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_VALUES
DATA_TYPE
DEFAULT_NUMERIC
ENABLE_MICROSECOND
EXPORT_SCHEMA
MODIFY_STRUCT
MODIFY_TYPE
PG_INTEGER_TYPE
PG_NUMERIC_TYPE
PG_SCHEMA
PRESERVE_CASE
REPLACE_AS_BOOLEAN
REPLACE_COLS
REPLACE_TABLES
REPLACE_ZERO_DATE
SCHEMA
Database Migration Service は接続プロファイルを使用して接続の詳細を定義するため、Or2Pg 構成ファイルで次の情報を定義する必要はありません。
ORACLE_DSN
ORACLE_HOME
ORACLE_PWD
ORACLE_USER
PG_DSN
PG_PWD
PG_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 インスタンスに接続します。次の方法を使用できます。
次のステップ
以前のワークスペースで変換ワークフローを実行したら、標準の移行手順に進むことができます。 移行ジョブを作成するをご覧ください。