

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

# エクステンションを使用して Oracle のネイティブ関数を PostgreSQL に移行
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions"></a>

*Amazon Web Services、Pinesh Singal*

## 概要
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-summary"></a>

この移行パターンでは、`aws_oracle_ext` および `orafce` の拡張を PostgreSQL (`psql`) ネイティブの組み込みコードに変更することにより、Oracle データベースインスタンスの Amazon Relational Database Service (Amazon RDS)をAmazon RDS for PostgreSQL、または Amazon Aurora PostgreSQL 互換バージョンに移行するためのステップバイステップのガイダンスを提供します。これにより、処理時間を節約します。

このパターンでは、トランザクション数が多いマルチテラバイトの Oracle ソースデータベースを、ダウンタイムなしでオフラインで手動で移行する方法を示しています。

移行プロセスでは、`aws_oracle_ext` と `orafce` 拡張付けの AWS Schema Conversion Tool (AWS SCT)を使用して、 Amazon RDS for Oracle データベーススキーマを Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換のデータベーススキーマに変換します。次に、コードを PostgreSQL でサポートされるネイティブ `psql` ビルトインコードに手動で変更します。理由は、拡張呼び出しが PostgreSQL データベースサーバーのコード処理に影響し、すべての拡張コードが PostgreSQL コードに完全に準拠する、または互換性があるわけではないからです。

このパターンは、主に AWS SCT と拡張 `aws_oracle_ext` と `orafce` を使用して、 SQL コードを手動で移行することにフォーカスしています。既に使用されている拡張をネイティブの PostgreSQL (`psql`) ビルトインに変換します。次に、拡張の参照をすべて削除し、それに応じてコードを変換します。

## 前提条件と制限事項
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント 
+ オペレーティングシステム (Windows または Mac) または Amazon EC2 インスタンス (稼働中) 
+ Orafce

**制限事項**

`aws_oracle_ext` または `orafce`の拡張を使用するすべての Oracle 関数が、ネイティブ PostgreSQL 関数に変換できるわけではありません。PostgreSQL ライブラリーでコンパイルするには、手動でやり直す必要があるかもしれません。

AWS SCT 拡張を使用する場合の欠点は、実行しその結果を得られるまでが遅いことです。そのコストは、Oracle の `SYSDATE` 関数を PostgreSQL の `NOW()` 関数へ移行する際に、3 種類のコード (`aws_oracle_ext`、`orafce`、および `psql` のデフォルト) それぞれに対して実行した、シンプルな [PostgreSQL の EXPLAIN プラン](https://www.postgresql.org/docs/current/sql-explain.html) (ステートメントの実行計画) から把握できます。詳細は、添付文書の「*パフォーマンス比較チェック*」セクションで説明されています。

**製品バージョン**
+ **ソース: ** Amazon RDS for Oracle データベース 10.2 以降 (10.x 用)、11g (11.2.0.3.v1 以降）および 12.2、18c、19c (およびそれ以降）まで（エンタープライズエディション、スタンダードエディション、スタンダードエディション １、およびスタンダードエディション 2 用）
+ **ターゲット **: Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換データベース 9.4 以降 (9.x用 )、10.x、11.x、12.x、13.x、14.x (およびそれ以降)
+ **AWS SCT**: 最新バージョン (このパターンは1.0.632でテスト済です)
+ **Orafce**: 最新バージョン (このパターンは 3.9.0 でテスト済です)

## アーキテクチャ
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-architecture"></a>

**ソーステクノロジースタック**
+ バージョン 12.1.0.2.v18 の Amazon RDS for Oracle データベースインスタンス

**ターゲットテクノロジースタック**
+ Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換データベースインスタンス (バージョン 11.5)

**データベース移行アーキテクチャ**

次の図表では、ソース Oracle とターゲット PostgreSQL のデータベース間のデータベース移行アーキテクチャを示しています。アーキテクチャには、AWS クラウド、仮想プライベートクラウド (VPC)、アベイラビリティーゾーン、プライベートサブネット、Amazon RDS for Oracle データベース、AWS SCT、Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換データベース、Oracle ( `aws_oracle_ext` and `orafce` ) の拡張、および構造化言語 (SQL) ファイルが含まれます。

![このプロセスは、次のリストで説明されています。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/158847bb-27ef-4915-a9ca-7d87073792c1/images/234b824a-bfe5-4ef0-9fa7-8401370b92a5.png)


1. Amazon RDS for Oracle DB インスタンス (ソース DB) を起動します。

1. `aws_oracle_ext` と `orafce` の拡張パックAWS SCT を使用して、ソースコードを Oracle から PostreSQL に変換します。

1. この変換により、PostgreSQL 適用の移行済みの .sql ファイルが生成されます。

1. 変換されない Oracle 拡張コードを手動で PostgreSQL ( `psql` ）コードに変換します。

1. 手動で変換すると、PostgreSQL 適用の変換済みの .sql ファイルが生成されます。

1. これらの .sql ファイルを、Amazon RDS for PostgreSQL DB インスタンス (ターゲット DB) で実行します。

## ツール
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-tools"></a>

**ツール**

*AWS サービス*
+ 「[AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」 - AWS Schema Conversion Tool (AWS SCT) は、既存のデータベーススキーマをあるデータベースエンジンから別のデータベースエンジンに変換します。リレーショナルオンライントランザクショナル処理（OLTP)スキーマ、またはデータウェアハウススキーマンを変換できます。変換されたスキーマは、Amazon RDS for MySQL DB インスタンス、Amazon Aurora DB クラスター、Amazon RDS for PostgreSQL DB インスタンス、または Amazon Redshift クラスター に適しています。また変換されたスキーマは、Amazon EC2 インスタンスでデータベースと共に使用することも、または Amazon S3 バケットにデータとして保存することもできます。

  AWS SCT には、ソースデータベースのデータベーススキーマをターゲット Amazon RDS インスタンスと互換性のある形式に自動変換するための、プロジェクトベースのユーザーインターフェイスが用意されています。 

  AWS SCT を使用して、Oracle ソースデータベースから前述のターゲットのいずれかに移行します。AWS SCT を使用して、スキーマ、ビュー、ストアドプロシージャ、関数などのソースデータベースオブジェクト定義をエクスポートできます。 

  AWS SCTを使用して、Oracle からのデータをAmazon RDS for PostgreSQL または Amazon Aurora PostgreSQL 互換エディションに変換できます。 

  このパターンでは、AWS SCT を使用して `aws_oracle_ext` と `orafce` 拡張とを使用して Oracle コードを PostgreSQL に変AWS換および移行し、拡張コードを `psql` デフォルトまたはネイティブの組み込みコードに手動で移行します。
+  [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html) 拡張パックは、オブジェクトをターゲットデータベースに変換する際に必要な、ソースデータベースの関数をエミュレートするアドオンモジュールです。AWS SCT 拡張パックをインストールできるようになるには、データベーススキーマを変換する必要があります。

  データベースまたはデータウェアハウスのスキーマを変換すると、AWS SCT によってターゲットデータベースに別のスキーマが追加されます。この別のスキーマは、ソースデータベースの SQL システム関数を実装します。これらの関数により、変換したスキーマがターゲットデータベースに書き込まれます。この別のスキーマは、拡張パックスキーマと呼ばれます。

  OLTP データベースの拡張パックスキーマは、ソースデータベースに従って名前がつけられます。Oracle データベースの場合、拡張パックスキーマは `AWS_ORACLE_EXT` です。

*その他のツール*
+ 「[Oracle](https://github.com/orafce/orafce)」 — Oracle は Oracle 互換の関数、データ型、およびパッケージを実装するモジュールです。Berkeley Source Distribution (BSD) ライセンスを持つオープンソースのツールで、誰でも使用できます。`orafce` モジュールは、多くの Oracle 関数が PostgreSQL に実装されているため、Oracle から PostgreSQL への移行に役立ちます。

 

**Code**

AWS SCT 拡張コードの使用を避けるために、一般的に使用され、Oracle から PostgreSQL に移行されたすべてのコードのリストについては、添付のドキュメントを参照してください。

## エピック
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-epics"></a>

### Amazon RDS for Oracle ソースデータベースを設定
<a name="configure-the-amazon-rds-for-oracle-source-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle データベースインスタンスを作成します。 | Amazon RDS コンソールから Amazon RDS for Oracle または Aurora PostgreSQL 互換のデータベースインスタンスを作成します。 | AWS 全般、DBA | 
| セキュリティグループを設定します。 | インバウンドとアウトバウンドのセキュリティグループを設定します。 | AWS 全般 | 
| データベースを作成します。 | 必要なユーザーとスキーマを使用して、Oracle データベースを作成します。 | AWS 全般、DBA | 
| オブジェクトを作成します。 | オブジェクトを作成し、スキーマにデータを挿入します。 | DBA | 

### Amazon RDS for PostgreSQL ターゲットデータベースを設定
<a name="configure-the-amazon-rds-for-postgresql-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| PostgreSQL データベース インスタンスを作成します。 | Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL データベースインスタンスを、Amazon RDS コンソールから作成します。 | AWS 全般、DBA | 
| セキュリティグループを設定します。 | インバウンドとアウトバウンドのセキュリティグループを設定します。 | AWS 全般 | 
| データベースを作成します。 | 必要なユーザーとスキーマを使用して PostgreSQL データベースを作成します。 | AWS 全般、DBA | 
| エクステンションを確認します。 | `aws_oracle_ext` と `orafce` がPostgreSQL データベースに正しくインストールされ、設定されていることを確保します。 | DBA | 
| PostgreSQL データベースが使用可能であることを確認します。 | PostgreSQL データベースが稼働していることを確認します。 | DBA | 

### AWS SCT とエクステンションを使用して Oracle スキーマを PostgreSQL に移行します
<a name="migrate-the-oracle-schema-into-postgresql-using-aws-sct-and-the-extensions"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT をインストールします。 | AWS SCTの最新バージョンをインストールします。 | DBA | 
| AWS SCT を設定します。 | Oracle (`ojdbc8.jar`) と PostgreSQL (`postgresql-42.2.5.jar`) の Java データベース接続 (JDBC) ドライバを使用して AWS SCT を設定します。 | DBA | 
| AWS SCT 拡張パックまたはテンプレートを有効にします。 | AWS SCT **プロジェクト設定**で、Oracle データベーススキーマの `aws_oracle_ext`、および `orafce` 拡張によるビルドイン関数の実装を有効にします。 | DBA | 
| スキーマを変換します。 | AWS SCT で、**スキーマの変換**を選択して、スキーマを Oracle から PostgreSQL に変換し、 .sql ファイルを生成します。 | DBA | 

### AWS SCT 拡張コードを psql コードに変換
<a name="convert-aws-sct-extension-code-to-psql-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| コードを手動で変換します。 | 添付ドキュメントに詳述されているように、拡張適用のコードの各行を `psql` デフォルトのビルトインコードに手動で変換します。例えば、`AWS_ORACLE_EXT.SYSDATE()` または `ORACLE.SYSDATE()` を `NOW()` に変更します。 | DBA | 
| コードを検証 | (オプション) PostgreSQL データベースでコードの各行を一時的に実行して検証します。 | DBA | 
| PostgreSQL データベースにオブジェクトを作成します。 | PostgreSQL データベースにオブジェクトを作成するには、AWS SCT によって生成され、前の 2 つのステップで変更されたv.sql ファイルを実行します。 | DBA | 

## 関連リソース
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-resources"></a>
+ [Database] (データベース)
  + [Amazon RDS 上の Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)
  + [Amazon RDS 上の PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)
  + [Amazon Aurora PostgreSQL の操作](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)
  + 「[PostgreSQL EXPLAIN 計画](https://www.postgresql.org/docs/current/sql-explain.html)」 
+ AWS SCT
  + [AWS スキーマ変換ツールの概要](https://aws.amazon.com/dms/schema-conversion-tool/)
  + 「[AWS SCT ユーザーガイド](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」
  + [AWS SCT ユーザーインターフェイスの使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)
  + [ AWS SCTのソースとしての Oracle Database の使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)
+ AWS SCT の拡張
  + [AWS SCT 拡張パックの使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html)
  + 「[Oracleの機能 (en)](https://postgres.cz/wiki/Oracle_functionality_(en))」 
  + 「[PGX Oracle](https://pgxn.org/dist/orafce/)」 
  + 「[GitHub Oracle](https://github.com/orafce/orafce)」 

## 追加情報
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-additional"></a>

詳細については、添付文書のコードを手動で変換するための構文および例が付いた詳細なコマンドを参照してください。

## アタッチメント
<a name="attachments-158847bb-27ef-4915-a9ca-7d87073792c1"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/158847bb-27ef-4915-a9ca-7d87073792c1/attachments/attachment.zip)」