

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

# Oracle Database のエラーコードを Amazon Aurora PostgreSQL-Compatible データベースに移行する
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database"></a>

*Amazon Web Services、Sai Parthasaradhi、Veeranjaneyulu Grandhi*

## 概要
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-summary"></a>

このパターンは、事前定義されたメタデータテーブルを使用して Oracle Database のエラーコードを [Amazon Aurora PostgreSQL-Compatible エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)データベースに移行する方法を示しています。

Oracle Database のエラーコードには、対応する PostgreSQL エラーコードが必ずあるとは限りません。このエラーコードの違いにより、ターゲット PostgreSQL アーキテクチャ内の手順または関数の処理ロジックを構成することが困難になる可能性があります。

PL/pgSQL プログラムにとって意味のあるソースデータベースとターゲットデータベースのエラーコードをメタデータテーブルに格納することで、プロセスを簡略化できます。次に、残りのプロセスロジックを続行する前に、有効な Oracle Database エラーコードにフラグを立て、それらを PostgreSQL の同等のエラーコードにマップするようにテーブルを構成します。Oracle Database のエラーコードがメタデータテーブルにない場合、例外が発生してプロセスは終了します。その後、エラーの詳細を手動で確認し、プログラムで必要な場合は新しいエラーコードをテーブルに追加できます。

この構成を使用すると、Amazon Aurora PostgreSQL-Compatible データベースは、ソース Oracle Database と同じ方法でエラーを処理できます。

**注記**  
Oracle Database のエラーコードを正しく処理するように PostgreSQL データベースを構成するには、通常、データベースとアプリケーションコードを変更する必要があります。

## 前提条件と制限
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ インスタンスサービスとリスナーサービスが稼働しているソース Oracle Database
+ 稼働中の Amazon Aurora PostgreSQL-Compatible クラスター
+ Oracle Database に関する知識
+ PostgreSQL データベースに関する知識

## アーキテクチャ
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-architecture"></a>

次の図は、データエラーコードの検証と処理のための Amazon Aurora PostgreSQL-Compatible データベースワークフローの例を示しています。

![\[Aurora PostgreSQL 互換データベースのデータエラーコードの検証と処理。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/82751f40-2fd9-4ce7-ab61-0874552d857b/images/b7ab627e-8f34-4635-8660-93c5c80ce38d.png)


この図表は、次のワークフローを示しています:

1. テーブルには、Oracle Database のエラーコードと分類、およびそれらに対応する PostgreSQL エラーコードと分類が格納されています。このテーブルには、事前に定義された特定のエラーコードが有効かどうかを分類する **valid\$1error** 列が含まれています。

1. PL/pgSQL 関数 (**func\$1processdata**) が例外を投げると、2 つ目の PL/pgSQL 関数 (**error\$1validate**) が呼び出されます。

1. **error\$1validate** 関数は Oracle Database のエラーコードを入力引数として受け入れます。次に、この関数は入力されたエラーコードをテーブルと照合して、エラーがテーブルに含まれているかどうかを確認します。

1. Oracle Database のエラーコードがテーブルに含まれている場合、**error\$1validate** 関数は **TRUE** 値を返し、プロセスロジックは続行されます。エラーコードがテーブルに含まれていない場合、関数は **FALSE** 値を返し、プロセスロジックは例外が発生して終了します。

1. 関数が **FALSE** 値を返すと、アプリケーションの機能責任者がエラーの詳細を手動で確認して、その有効性を判断します。

1. その後、新しいエラーコードは手動でテーブルに追加されるか、追加されないかのどちらかになります。エラーコードが有効でテーブルに追加された場合、**error\$1validate** 関数は次に例外が発生したときに **TRUE** 値を返します。エラーコードが有効ではなく、例外発生時に処理が失敗しなければならない場合、エラーコードはテーブルに追加されません。

**テクノロジースタック**
+ Amazon Aurora PostgreSQL
+ pgAdmin
+ 「Oracle SQL Developer」

## ツール
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-tools"></a>
+ [Amazon Aurora PostgreSQL-Compatible バージョン](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援するフルマネージド型のACID 準拠リレーショナルデータベースエンジンです。
+ [pgAdmin](https://www.pgadmin.org/) はオープンソースの PostgreSQL 向け管理開発ツールです。データベースオブジェクトの作成、保守、使用を簡素化するグラフィカルインターフェイスを提供します。
+ [Oracle SQL Developer](https://www.oracle.com/in/database/technologies/appdev/sqldeveloper-landing.html) は、従来のデプロイとクラウドデプロイの両方で Oracle Database の開発と管理を簡素化する無料の統合開発環境です。

## エピック
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-epics"></a>

### Oracle Database のエラーコードを Amazon Aurora PostgreSQL-Compatible データベースに移行する
<a name="migrate-oracle-database-error-codes-to-your-amazon-aurora-postgresql-compatible-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Aurora PostgreSQL-Compatible データベースにテーブルを作成します。 | 次の PostgreSQL の[テーブル作成](https://www.postgresql.org/docs/current/sql-createtable.html) コマンドを実行します。<pre>(<br /><br />    source_error_code numeric NOT NULL,<br /><br />    target_error_code character varying NOT NULL,<br /><br />    valid_error character varying(1) NOT NULL<br /><br />); </pre> | PostgreSQL Developer、Oracle、RDS/Aurora for PostgreSQL | 
| PostgreSQL エラーコードとそれに対応する Oracle Database のエラーコードをテーブルに追加する。 | PostgreSQL の [INSERT](https://www.postgresql.org/docs/current/sql-insert.html) コマンドを実行して、必要なエラーコード値を **error\$1codes** テーブルに追加します。PostgreSQL のエラーコードでは、文字可変データ型 (**SQLSTATE** 値) を使用する必要があります。Oracle のエラーコードでは数値データ型 (**SQLCODE 値**) を使用する必要があります。**Insert ステートメントの例:**<pre>insert into error_codes values (-1817,'22007','Y');<br />insert into error_codes values (-1816,'22007','Y');<br />insert into error_codes values (-3114,'08006','N');</pre>Oracle 固有の Java データベース接続 (JDBC) 例外を catch する場合は、それらの例外を一般的なクロスデータベース例外に置き換えるか、PostgreSQL 固有の例外に切り替える必要があります。 | PostgreSQL Developer、Oracle、RDS/Aurora for PostgreSQL | 
| PL/pgSQL 関数を作成してエラーコードを検証します。 | PostgreSQL の[関数の作成](https://www.postgresql.org/docs/current/sql-createfunction.html)コマンドを実行して PL/pgSQL 関数を作成します。関数が以下を実行することを確認してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database.html) | PostgreSQL Developer、Oracle、RDS/Aurora for PostgreSQL | 
| PL/pgSQL 関数によって記録された新しいエラーコードを手動で確認する。 | 新しいエラーコードを手動で確認してください。新しいエラーコードがユースケースに当てはまる場合は、PostgreSQL **INSERT** コマンドを実行して **error\$1codes** テーブルに追加します。-または-新しいエラーコードがユースケースに合わない場合は、そのエラーコードをテーブルに追加しないでください。エラーが発生すると、プロセスロジックは引き続き失敗し、例外が発生して終了します。 | PostgreSQL Developer、Oracle、RDS/Aurora for PostgreSQL | 

## 関連リソース
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-resources"></a>

[付録 A. PostgreSQL エラーコード (PostgreSQL ドキュメント](https://www.postgresql.org/docs/11/errcodes-appendix.html))

[データベースエラーメッセージ](https://docs.oracle.com/cd/E11882_01/server.112/e17766/toc.htm) (Oracle Databaseドキュメント)