翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Oracle の VARCHAR2 (1) データ型を Amazon Aurora PostgreSQL のブールデータ型に変換
作成者:Naresh Damera (AWS)
概要
Oracle 用 Amazon Relational Database Service (Amazon RDS) から Amazon Aurora PostgreSQL 互換エディションへの移行中に、 AWS Database Migration Service () で移行を検証するときにデータの不一致が発生する可能性がありますAWS DMS。この不一致を防止するために、VARCHAR2 (1) データ型をブール型データ型に変換できます。
VARCHAR2 データ型には可変長のテキスト文字列が格納され、VARCHAR2 (1) は文字列の長さが 1 文字または 1 バイトであることを示します。VARCHAR2 の詳細については、Oracle のビルドインデータ型
このパターンでは、サンプルソースデータテーブル列の VARCHAR2 (1) データは、Y (はい)、または N (いいえ) です。 このパターンには、 AWS DMS と AWS Schema Conversion Tool (AWS SCT) を使用して、このデータ型を VARCHAR2(1) の Y 値と N 値からブール値の true 値または false 値に変換する手順が含まれています。
対象者
このパターンは、 を使用して Oracle データベースを Aurora PostgreSQL 互換に移行した経験があるユーザーに推奨されます AWS DMS。移行が完了したら、「Converting Oracle to Amazon RDS for PostgreSQL or Amazon Aurora PostgreSQL」(AWS SCT ドキュメント) の推奨事項に従ってください。
前提条件と制限
前提条件
アクティブ AWS アカウント。
認証情報、権限、セキュリティグループの設定など、環境が Aurora に対応していることを確認します。詳細について、Amazon Aurora 用の環境のセットアップ (Aurora ドキュメント)」を参照してください。
VARCHAR2 (1) データを含むテーブル列を含むソース Amazon RDS for Oracle データベース。
Amazon Aurora PostgreSQL 互換のターゲットデータベースインスタンス。詳細については、データベースクラスターを作成して Aurora PostgreSQL データベースクラスターのデータベースに接続 (Aurora ドキュメント) を参照してください。
製品バージョン
Oracle バージョン 12.1.0.2 以降用の Amazon RDS for Oracle
AWS DMS バージョン 3.1.4 以降。詳細については、「Using an Oracle database as a source for AWS DMS and Using a PostgreSQL database as a target for AWS DMS (AWS DMS documentation)」を参照してください。最も包括的なバージョンと機能のサポート AWS DMS には、 の最新バージョンを使用することをお勧めします。
AWS Schema Conversion Tool (AWS SCT) バージョン 1.0.632 以降。最も包括的なバージョンと機能のサポート AWS SCT には、 の最新バージョンを使用することをお勧めします。
Aurora には、Aurora PostgreSQL 互換のデータベースエンジンバージョン (Aurora ドキュメント) に一覧表示された PostgreSQL バージョンが適用されます。
アーキテクチャ
ソーステクノロジースタック
Amazon RDS for Oracle データベースインスタンス
ターゲットテクノロジースタック
Amazon Aurora PostgreSQL 互換エディションに基づく DB インスタンス上のデータベース
ソースアーキテクチャとターゲットアーキテクチャ

ツール
AWS のサービス
「Amazon Aurora PostgreSQL 互換エディション」は、PostgreSQL デプロイのセットアップ、運用、スケーリングに役立つ、フルマネージド型のACID準拠のリレーショナルデータベースエンジンです。
AWS Database Migration Service (AWS DMS) は、データストアを に移行する AWS クラウド か、クラウドとオンプレミスのセットアップの組み合わせ間で移行するのに役立ちます。
Oracle 用 Amazon Relational Database Service (Amazon RDS) は、 で Oracle リレーショナルデータベースをセットアップ、運用、スケーリングするのに役立ちます AWS クラウド。
AWS Schema Conversion Tool (AWS SCT) は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベースの移行をサポートします。
その他のサービス
「Oracle SQL Developer
」 は、従来のデプロイとクラウドベースのデプロイの両方で Oracle データベースの開発と管理を簡素化する統合開発環境です。このパターンでは、このツールを使用して Amazon RDS for Oracle データベースインスタンスに接続し、データをクエリします。 pgAdmin
はPostgreSQL用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。このパターンでは、このツールを使用して Aurora データベースインスタンスに接続し、データをクエリします。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
データベース移行レポートを作成します。 |
| DBA、開発者 |
外部キーの制約とトリガーをターゲットデータベースにドロップします。 | PostgreSQLでは、トリガーを使用して、外部キーが実装されます。全ロードフェーズ中、 は各テーブルを一度に 1 つずつ AWS DMS ロードします。次のいずれかの方法を使用して、全ロード中に外部キーの制約を無効にすることを強くお勧めします。
外部キー制約を無効にすることが不可能な場合は、親テーブルと子テーブルに固有のプライマリデータの AWS DMS 移行タスクを作成します。 | DBA、開発者 |
ターゲットデータベースのプライマリキーとユニークキーを無効にします。 | 次のコマンドを使用して、ターゲットデータベースの主キーと制約を無効にします。これにより、初期ロードタスクのパフォーマンスを改善します。
| DBA、開発者 |
初期ロードタスクを作成します。 | で AWS DMS、初期ロードの移行タスクを作成します。手順については、タスクの作成を参照してください。移行方法は、既存のデータを移行するを選択します。この移行メソッドは APIで | DBA、開発者 |
初期ロードタスクのタスク設定を編集します。 | タスク設定を編集してデータ検証を追加します。これらの検証設定は JSON ファイルで作成する必要があります。手順と例については、タスク設定を指定 を参照してください。以下の検証を追加します。
残りのデータ移行を検証するには、タスクでデータ検証を有効にします。詳細については、データ検証のタスク設定をご参照ください。 | AWS 管理者、データベース管理者 |
継続的レプリケーション タスクを作成します。 | で AWS DMS、ターゲットデータベースをソースデータベースと同期させる移行タスクを作成します。手順については、タスクの作成を参照してください。移行方法には、データ変更のみを複製を選択します。このタスクはまだ開始しないでください。 | DBA |
タスク | 説明 | 必要なスキル |
---|---|---|
テストのサンプルデータを作成します。 | ソースデータベースで、テストのデータを含むサンプルテーブルを作成します。 | 開発者 |
競合するアクティビティがないことを確認します。 |
| AWS 管理者 |
AWS DMS 移行タスクを開始します。 | AWS DMS コンソールの Dashboard ページで、前のエピックで作成した初期ロードと継続的なレプリケーションタスクを開始します。 | AWS 管理者 |
タスクとテーブルのロード状態を監視します。 | 移行中は、タスクの状態 とテーブルの状態 を監視します。初期化ロードタスクが完了した場合、テーブル統計 タブで次の操作を行います。
| AWS 管理者 |
移行結果を検証します。 | pgAdmin を使用して、ターゲットデータベースのテーブルをクエリします。クエリが成功する場合、データが正常に移行されたことを示します。 | 開発者 |
ターゲットデータベースにプライマリキーと外部キーを追加します。 | ターゲットデータベースにプライマリキーと外部キーを作成します。詳細については、テーブルを変更 | DBA |
テストデータをクリーンアップします。 | ソースデータベースとターゲットデータベースで、ユニットテストに作成されたデータをクリーンアップします。 | 開発者 |
タスク | 説明 | 必要なスキル |
---|---|---|
移行が完了しました。 | 前のエピックスを繰り返して、実際のソースデータを使用して、移行タスクをテストします。これにより、ソースからターゲットデータベースにデータが移行されます。 | 開発者 |
ソースデータベースとターゲットデータベースが同期していることを確認します。 | ソースデータベースとターゲットデータベースが同期していることを確認します。詳細と手順については、AWS DMS 「データ検証」を参照してください。 | 開発者 |
ソースデータベース | Amazon RDS for Oracle データベースを停止します。詳細については、一時的に Amazon RDS DB インスタンスを停止するを参照してください。ソースデータベースを停止すると、 の初期ロードと継続的なレプリケーションタスク AWS DMS が自動的に停止します。これらのタスクを停止するために追加のアクションは必要ありません。 | 開発者 |
関連リソース
AWS リファレンス
AWS DMS と を使用して Oracle データベースを Aurora PostgreSQL に移行する AWS SCT (AWS 規範ガイダンス)
Oracle を Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL に変換する (AWS SCT ドキュメント)
AWS DMS の仕組み (AWS DMS ドキュメント)
その他のリファレンス
ブーリアンデータ型
(PostgreSQL ドキュメント) Oracle ビルトインデータ型
(Oracle ドキュメント) pgAdmin
(pgAdmin ウェブサイト) SQL 開発者
(Oracleのウェブサイト)
チュートリアルと動画
追加情報
データ検証スクリプト
次のデータ検証スクリプトは、1 を Y、0 を N に変換します。 これにより、 AWS DMS タスクが正常に完了し、テーブルの検証に合格します。
{ "rule-type": "validation", "rule-id": "5", "rule-name": "5", "rule-target": "column", "object-locator": { "schema-name": "ADMIN", "table-name": "TEMP_CHRA_BOOL", "column-name": "GRADE" }, "rule-action": "override-validation-function", "target-function": "case grade when '1' then 'Y' else 'N' end" }
case
スクリプトのステートメントが検証を実行します。検証が失敗した場合、 はターゲットデータベースインスタンスの public.awsdms_validation_failures_v1 テーブルにレコード AWS DMS を挿入します。このレコードには、テーブル名、エラー時間、およびソーステーブルとターゲットテーブルの不一致値に関する詳細が含まれます。
このデータ検証スクリプトを AWS DMS タスクに追加せず、データがターゲットテーブルに挿入されると、 AWS DMS タスクは検証状態を不一致レコードとして表示します。
AWS SCT 変換中、 AWS DMS 移行タスクは VARCHAR2(1) データ型のデータ型をブール値に変更し、"NO"
列にプライマリキー制約を追加します。