翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用した Oracle から Amazon RDS for MySQL または Amazon Aurora My SQLへの移行 AWS Schema Conversion Tool
変換したマイSQLコードで Oracle データベース関数をエミュレートするには、 で Oracle からマイSQLへの拡張パックを使用します AWS SCT。拡張機能の詳細については、「での拡張パックの使用 AWS Schema Conversion Tool」を参照してください。
トピック
ターゲットデータベースとしての MySQL の権限
ターゲットとしての MySQL に必要な権限は次のとおりです。
CREATE ON *.*
ALTER ON *.*
DROP ON *.*
INDEX ON *.*
REFERENCES ON *.*
SELECT ON *.*
CREATE VIEW ON *.*
SHOW VIEW ON *.*
TRIGGER ON *.*
CREATE ROUTINE ON *.*
ALTER ROUTINE ON *.*
EXECUTE ON *.*
CREATE TEMPORARY TABLES ON *.*
AWS_LAMBDA_ACCESS
INSERT、UPDATEON AWS_ORACLE_EXT.*
INSERT、UPDATE、DELETEON AWS_ORACLE_EXTDATA.*
マイSQLデータベースバージョン 5.7 以前をターゲットとして使用する場合は、AWS_LAMBDA_ の代わりに INVOKE LAMBDA *.* アクセス許可を付与しますACCESS。マイSQLデータベースバージョン 8.0 以降では、AWS_LAMBDA_ACCESS アクセス許可を付与します。
次のコード例を使用してデータベースユーザーを作成し、権限を付与できます。
CREATE USER '
user_name
' IDENTIFIED BY 'your_password
'; GRANT CREATE ON *.* TO 'user_name
'; GRANT ALTER ON *.* TO 'user_name
'; GRANT DROP ON *.* TO 'user_name
'; GRANT INDEX ON *.* TO 'user_name
'; GRANT REFERENCES ON *.* TO 'user_name
'; GRANT SELECT ON *.* TO 'user_name
'; GRANT CREATE VIEW ON *.* TO 'user_name
'; GRANT SHOW VIEW ON *.* TO 'user_name
'; GRANT TRIGGER ON *.* TO 'user_name
'; GRANT CREATE ROUTINE ON *.* TO 'user_name
'; GRANT ALTER ROUTINE ON *.* TO 'user_name
'; GRANT EXECUTE ON *.* TO 'user_name
'; GRANT CREATE TEMPORARY TABLES ON *.* TO 'user_name
'; GRANT AWS_LAMBDA_ACCESS TO 'user_name
'; GRANT INSERT, UPDATE ON AWS_ORACLE_EXT.* TO 'user_name
'; GRANT INSERT, UPDATE, DELETE ON AWS_ORACLE_EXT_DATA.* TO 'user_name
';
前の例では、user_name
ユーザーの名前を入力します。次に、your_password
安全なパスワードを使用します。
マイSQLデータベースバージョン 5.7 以前をターゲットとして使用する場合は、 GRANT INVOKE LAMBDA ON *.* TO '
の代わりに を使用しますuser_name
'GRANT AWS_LAMBDA_ACCESS TO '
。user_name
'
Amazon RDS for MySQL または Aurora MySQL をターゲットとして使用するには、 lower_case_table_names
パラメータを に設定します1
。この値は、My SQLサーバーがテーブル、インデックス、トリガー、データベースなどのオブジェクト名の識別子を大文字と小文字を区別しないものとして処理することを意味します。ターゲットインスタンスでバイナリログを有効にしている場合は、log_bin_trust_function_creators
パラメータを 1
と設定します。この場合、ストアド関数を作成するのに、DETERMINISTIC
特性、READS SQL DATA
特性、NO SQL
特性を使用する必要はありません。これらのパラメータを設定するには、新しい DB パラメータグループを作成するか、既存の DB パラメータグループを変更します。
Oracle から My SQLへの変換設定
Oracle から MySQL への変換設定を編集するには、「」で「設定」を選択し AWS SCT、「変換設定」を選択します。上部のリストから Oracle を選択し、Oracle を選択します。Oracle から My SQLへのSQL変換に使用できるすべての設定 AWS SCT が表示されます。
の Oracle から My SQLへの変換設定 AWS SCT には、次のオプションが含まれています。
-
変換されたコード内のアクション項目に関するコメントの数を制限する。
選択した重要度以上のアクション項目の変換されたコードにコメントを追加する で、アクション項目の重要度を選択します。選択した重要度以上のアクション項目の変換されたコードにコメント AWS SCT を追加します。
たとえば、変換したコード内のコメントの数を最小限に抑えるには、[エラーのみ] を選択します。変換したコードのすべてのアクション項目にコメントを含めるには、[すべてのメッセージ] を選択します。
-
ソース Oracle データベースが
ROWID
擬似列を使用できるが、MySQL は同様の機能をサポートしていないことに対処するため。 は変換されたコードでROWID
擬似列をエミュレート AWS SCT できます。そのためには、[行 ID を生成しますか] で [ID として生成] を選択します。Oracle のソースコードで
ROWID
疑似列を使用していない場合は、[行 ID を生成しますか] で [生成しない] を選択します。この場合、変換されたコードの処理が速くなります。 -
MySQL がサポートしていないパラメータを持つ
TO_CHAR
、TO_DATE
、およびTO_NUMBER
関数が含まれている場合にソース Oracle コードを操作するには。デフォルトでは、 AWS SCT は変換後のコードでこれらのパラメータの使用法をエミュレートします。ソース Oracle コードに PostgreSQL がサポートするパラメータのみが含まれている場合は、ネイティブの MySQL
TO_CHAR
、TO_DATE
、およびTO_NUMBER
関数を使用できます。この場合、変換されたコードの処理が速くなります。これらのパラメータのみを含めるには、以下の値を選択します。関数 TO_CHAR() は Oracle 固有のフォーマット文字列を使用しません
関数 TO_DATE() は Oracle 固有のフォーマット文字列を使用しません
関数 TO_NUMBER() は Oracle 固有のフォーマット文字列を使用しません
-
データベースとアプリケーションが異なるタイムゾーンで実行されているかどうかを調べる。デフォルトでは、 AWS SCT は変換されたコードのタイムゾーンをエミュレートします。ただし、データベースとアプリケーションが同じタイムゾーンを使用している場合は、このエミュレーションは必要ありません。この場合、[クライアント側のタイムゾーンをサーバーのタイムゾーンと一致させる] を選択してください。
移行に関する考慮事項
Oracle を RDS for MySQL または Aurora My に変換するとSQL、ステートメントの実行順序を変更するには、GOTO
ステートメントとラベルを使用できます。ステートメントに従う PL/SQL GOTO
ステートメントはスキップされ、処理はラベルで続行されます。GOTO
ステートメントとラベルは、プロシージャ、バッチ、またはステートメント ブロック内のどこでも使用できます。次のGOTOステートメントも実行できます。
はSQL GOTO
ステートメントを使用しません。がステートメントを含むコードを AWS SCT 変換するとGOTO
、 ステートメントは BEGIN…END
または LOOP…END LOOP
ステートメントを使用するように変換されます。
がステートメントを AWS SCT 変換する方法の例を次の表GOTO
に示します。
Oracle ステートメント | マイSQLステートメント |
---|---|
|
|
|
|
|
|
Oracle の WITHステートメントを RDS for MySQL または Amazon Aurora My に変換するSQL
Oracle の WITH句 (subquery_factoring) を使用して、サブクエリブロックに名前 (query_name) を割り当てます。サブクエリブロックをクエリの複数の場所で参照するには、query_name を指定します。サブクエリブロックにリンクまたはパラメータ (ローカル、プロシージャ、関数、パッケージ) が含まれていない場合、 は 句をビューまたは一時テーブル AWS SCT に変換します。
句を一時テーブルに変換する利点は、サブクエリへの繰り返し参照がより効率的であることです。各参照によって要求されるのではなく、一時テーブルからデータが簡単に取得されるために効率が向上します。追加のビューまたは一時テーブルを使用して、これをエミュレートできます。ビュー名には <procedure_name>$<subselect_alias>
の形式が使用されます。
次の表で例を確認できます。
Oracle ステートメント | マイSQLステートメント |
---|---|
|
|
|
|
|
|