

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Oracle から PostgreSQL への変換設定を理解する
<a name="schema-conversion-oracle-postgresql"></a>

DMS Schema Conversion の Oracle から PostgreSQL へのコンバージョン設定は、次のとおりです。
+ 生成 AI を使用して該当するデータベースオブジェクトを変換するには、**[生成 AI]** 設定を有効にする。生成 AI を使用して正常に変換されたオブジェクトは、変換でデータ内のパターンに基づいて予測を生成する機械学習モデルが使用されることを示す**アクション項目 5444** で明確に識別できる。詳細については、「[生成 AI を使用したデータベースオブジェクトの変換](schema-conversion-convert.databaseobjects.md)」を参照してください。
  + 最新バージョンだけでなく、サポートされているさまざまなバージョンのターゲットデータベースのスキーマを変換できる。バージョンを指定するには、**[ターゲットエンジンバージョン]** 設定を使用する。使用可能な変換オプションは、選択したエンジンバージョンによって異なる。現在、PostgreSQL バージョン 14 および 15 がサポートされている (設定は同じ)。この設定で指定されたバージョンとは異なるターゲットエンジンバージョンをスキーマ変換中に使用すると、ターゲットへの適用オペレーションの実行時に互換性の問題やエラーが発生する可能性がある。
+ AWS DMS は、Oracle マテリアライズドビューを PostgreSQL のテーブルまたはマテリアライズドビューに変換できます。**[マテリアライズドビュー]** で、ソースのマテリアライズドビューの変換方法を選択する。
+ ソースの Oracle データベースでは、`ROWID` 疑似列を使用できるが、PostgreSQL は同様の機能をサポートしていない。DMS Schema Conversion は、`bigint` または `character varying` データ型を使用して、変換したコードで `ROWID` 疑似列をエミュレートできる。このためには、**[行 ID]** で **[Use the bigint data type to emulate the ROWID pseudocolumn]** または **[Use the character varying data type to emulate the ROWID pseudocolumn]** を選択する。
  + NUMBER データ型を最適な数値データ型に変換するには、精度とスケールに応じて、NUMBER データ型の列に [Use the optimized data type mapping] を選択する。
+ ソースの Oracle コードが `ROWID` 疑似列を使用していない場合は、**[Don't generate]** を選択する。この場合、変換したコードの処理が迅速化する。
+ ソースの Oracle のコードには、PostgreSQL ではサポートされないパラメータを使用する `TO_CHAR` 関数、`TO_DATE` 関数、`TO_NUMBER` 関数が使用されている場合がある。デフォルトでは、DMS Schema Conversion は変換したコード内のこのようなパラメータの使用をエミュレートする。

  ソースの Oracle コードに PostgreSQL でサポートされないパラメータがない場合は、PostgreSQL のネイティブの `TO_CHAR` 関数、`TO_DATE` 関数、`TO_NUMBER` 関数を使用できる。この場合、変換したコードの処理が迅速化する。これには、次の値を選択する。
  + **Use a native PostgreSQL TO\$1CHAR function**
  + **Use a native PostgreSQL TO\$1DATE function**
  + **Use a native PostgreSQL TO\$1NUMBER function**
+ データベースとアプリケーションは別々のタイムゾーンで実行できる。デフォルトでは、DMS Schema Conversion は変換したコードのタイムゾーンをエミュレートする。ただし、データベースとアプリケーションが同じタイムゾーンを使用している場合は、このエミュレーションは必要ない。この場合、**[Improve the performance of the converted code where the database and applications use the same time zone]** を選択する。
+ 変換したコードで引き続きシーケンスを使用するには、**[Populate converted sequences with the last value generated on the source side]** を選択する。
+ 場合によっては、ソース Oracle で、`NUMBER` データ型のプライマリキー列または外部キー列に整数値のみを格納していることがある。このような場合、 AWS DMS はこれらの列を `BIGINT` データ型に変換できます。このアプローチを採用すると、変換したコードのパフォーマンスが向上する。これを行うには、**[Convert primary and foreign key columns of the NUMBER data type to the BIGINT data type]** を選択する。データの損失を避けるため、ソースのこれらの列に浮動小数点値が含まれていないことを確認する。
+ ソースコード内の非アクティブ化されたトリガーと制約をスキップするには、**[アクティブなトリガーと制約のみを変換]** を選択する。
+ DMS Schema Conversion を使用すると、動的 SQL として呼び出される文字列変数を変換できる。このような文字列変数の値は、データベースコードで変更できる。が AWS DMS 常にこの文字列変数の最新の値を変換するようにするには、**「呼び出されたルーチンで作成された動的 SQL コードを変換する**」を選択します。
+ PostgreSQL バージョン 10 以前のバージョンでは、プロシージャをサポートしていない。PostgreSQL でのプロシージャの使用に慣れていない場合は、Oracle プロシージャを PostgreSQL 関数に変換 AWS DMS できます。このためには、**[プロシージャを関数に変換]** を選択する。
+ 発生したアクション項目に関する追加情報を確認するには、拡張パックに特定の関数を追加する。このためには、**[Add extension pack functions that raise user-defined exceptions]** を選択する。次に、ユーザー定義の例外を発生させる重大度レベルを選択する。ソースデータベースオブジェクトを変換した後は、必ず拡張パックスキーマを適用する。拡張パックの詳細については、「[拡張パックの使用](extension-pack.md)」を参照する。
+ ソースの Oracle データベースでは、自動的に生成された名前を使用した制約が使用されている場合がある。ソースコードでこのような名前を使用している場合は、必ず **[Keep the names of system generated constraints]** を選択する。ソースコードでこのような制約が使用されていても、名前は使用されていない場合は、このオプションをオフにすると変換速度が向上する。
+ ソースデータベースとターゲットデータベースが別々のタイムゾーンで実行されている場合、Oracle の `SYSDATE` 組み込み関数をエミュレートする関数がソース関数とは異なる値を返す。ソース関数とターゲット関数が同じ値を返すようにするには、**[ソースデータベースのタイムゾーンを設定]** を選択する。
+ 変換したコードでは、orafce 拡張機能の関数を使用できる。このためには、**[Oracle 組み込みルーチン]** で使用する関数を選択する。orafce についての詳細は、GitHub で「[orafce](https://github.com/orafce/orafce)」を参照してください。