Oracleを Amazon RDS PostgreSQLまたはAmazon Aurora(PostgreSQL) - AWS Schema Conversion Tool

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Oracleを Amazon RDS PostgreSQLまたはAmazon Aurora(PostgreSQL)

AWS SCT SQL*PlusファイルをPSQLに変換できます。評価レポートでは、 AWS SCT SQL*PlusファイルをPSQLに変換しました。SQL*Plus ファイルを PSQL に変換する方法については、「アプリケーション SQL の変換 AWS SCT」を参照してください。

このセクションでは、次のトピックについて説明します。

OracleシステムオブジェクトをPostgreSQLに変換する場合、 AWS SCT は、以下を変換します。

Oracle システムオブジェクト 説明: 変換された PostgreSQL オブジェクト
V$VERSION Oracle Database のコアライブラリのコンポーネントのバージョン番号を表示します aws_oracle_ext.v$version
V$INSTANCE 現在のインスタンスの状態を示すビュー。 aws_oracle_ext.v$instance

後 AWS SCT スキーマ オブジェクトと保存されたデータを移行します。ワークフローをソース データベースからターゲットにリダイレクトできます。ほとんどの場合、ワークフローはプライマリキーや一意のキーなどデータベースシーケンスによって生成された一意の数字を使用して、ターゲットデータベースに書き込まれるデータの整合性の制約を維持します。つまり、移行済みシーケンスの新しい値と、移行前に生成された値が重複することはありません。

Oracle から PostgreSQL への移行プロジェクトでは、重複がないことを確認できます。これを行うには、[プロジェクト設定] の [変換設定] タブの [ソース側で生成された最後の値を変換後のシーケンスに入力する] オプションを選択します。

Oracle ROWID を PostgreSQL に変換する

Oracle データベースの ROWID 疑似列にはテーブルの行のアドレスが含まれます。ROWID疑似列はOracle独自のものです。 AWS SCT は、PostgreSQL に変換するときに ROWID 仮列をデータ列に変換できます。この変換によって ROWID 情報を保持することができます。

いつ AWS SCT ROWID仮列を変換し、データ型がBIGINTのデータ列を作成します。主キーが存在しない場合は、 AWS SCT ROWID 列をプライマリ キーとして設定します。主キーが存在する場合は、 AWS SCT ROWID 列を一意の制約で設定します。

Oracle ROWID のデータ列をプロジェクト用に作成するには

  1. 開始 AWS SCT. Oracle をソースとしてプロジェクトを選択します。

  2. [Settings (設定)] を選択し、[Project settings (プロジェクト設定)] を選択します。[Current project settings] ダイアログボックスが表示されます。

  3. [Generate row ID] で [true] を選択します。

  4. [OK] を選択して設定を保存し、[Current project settings (現在のプロジェクト設定)] ダイアログボックスを閉じます。

OracleのDynamic SQLからPostgreSQLへの移行への変換

動的 SQL は、PL/SQL コード内でデータ定義言語 (DDL) ステートメントを実行するために使用できるプログラミング手法です。開発中に正確なテキストまたはオブジェクト識別子がわからない場合に、動的 SQL を使用して、実行時に SQL ステートメントを生成および実行することもできます。AWS SCT は、Oracle データベースで使用される動的 SQL ステートメントを、PostgreSQL のアナログステートメントに変換できます。

Oracle の動的 SQL を PostgreSQL SQL に変換するには

  1. Oracle から PostgreSQL への移行プロジェクトを作成します。

  2. ソースおよびターゲットデータベースに接続します。

  3. Oracle ソースツリービューでストアドプロシージャを選択します。このプロシージャには、DBMS_SQL Oracle パッケージへの参照、または EXECUTE IMMEDIATE ステートメントが含まれている必要があります。

  4. [アクション] で、[スキーマの変換] を選択し、存在する場合はオブジェクトの置換に同意します。次のスクリーンショットは、Oracle プロシージャの下で変換されたプロシージャを示しています。

    
                    動的 SQL の変換

Oracle パーティションを PostgreSQL バージョン 10 パーティションに変換する

PostgreSQL バージョン 10 以降では、テーブルをパーティションと呼ばれるパートに分割する方法を指定できます。分割されたテーブルはパーティション分割されたテーブルと呼ばれます。テーブルの仕様には、パーティション化メソッドおよびパーティションキーとして使用される列または式のリストが含まれています。

パーティション分割されたテーブルに挿入されるすべての行は、パーティションキーの値に基づいて、パーティションのいずれかにルーティングされます。各パーティションには、パーティション境界によって定義されたデータのサブセットがあります。現在サポートされているパーティション化メソッドに、範囲およびリストがあります。範囲パーティション化では、各パーティションがある範囲のキーに割り当てられます。リストパーティション化では、各パーティションがキーのリストに割り当てられます。

AWS SCT は、Oracle データベースから PostgreSQL データベースへのスキーマ変換時に、パーティションとサブパーティションをエミュレートできます。Oracle サブパーティションは、親の範囲式としてテーブルを持つ PostgreSQL パーティションに変換されます。このテーブルは、元の Oracle サブパーティションの範囲式でパーティション分割されます。

AWS SCT では現在、次のパーティション作成シナリオをサポートしています。

  • 範囲

  • リスト

  • 範囲-範囲

  • リスト-リスト

  • 範囲-リスト

  • リスト-範囲

  • タイムスタンプ (タイムゾーンなし)

次のシナリオは現在サポートされていません。

  • ハッシュ

  • 範囲-ハッシュ

  • リスト-ハッシュ

  • Interval

  • リファレンス

  • システム

以下は、パーティションの PostgreSQL バージョン 10 への変換に関する既知の問題の一部です。

  • NULL ではない列のみが列に分割することがでます。

  • DEFAULT はパーティション値として使用できる値ではありません。

  • タイムスタンプ (タイムゾーンあり) に基づくパーティションはサポートされていません。

  • ハッシュ関数に基づいたパーティションはサポートされていません。

  • 値を更新すると、値が別のパーティションに移動する可能性があるため、パーティション化されたテーブルの列を更新できません。 AWS SCT は、パーティション化されたテーブル内の列の削除および挿入のみをサポートしています。

  • パーティション分割されたテーブルとの外部キーのやり取りはサポートされていません。