sql >> データベース >  >> RDS >> Oracle

AWSEC2からAWSRDSへのOracleデータベースの移行、パート4

    OracleデータベースをEC2インスタンスからマネージドサービスRDSに移行することを検討しています。 4つの記事の最初の「AWSEC2からAWSRDSへのOracleデータベースの移行、パート1」では、EC2とRDSでデータベースインスタンスを作成しました。 2番目の記事「AWSEC2からAWSRDSへのOracleデータベースの移行、パート2」では、データベース移行用のIAMユーザーを作成し、移行するデータベーステーブルも作成しました。 2番目の記事でのみ、レプリケーションインスタンスとレプリケーションエンドポイントを作成しました。 3番目の記事「AWSEC2からAWSRDSへのOracleデータベースの移行、パート3」では、既存の変更を移行するための移行タスクを作成しました。この継続記事では、進行中の変更をデータに移行します。この記事には次のセクションがあります:

    • 進行中の変更を移行するためのレプリケーションタスクの作成と実行
    • 補足ログの追加
    • EC2上のOracleデータベースインスタンスへのテーブルの追加
    • テーブルデータの追加
    • 複製されたデータベーステーブルの調査
    • データの削除と再読み込み
    • タスクの停止と開始
    • データベースの削除
    • 結論

    進行中の変更を移行するためのレプリケーションタスクの作成と実行

    次のサブセクションでは、進行中の変更を複製するタスクを作成します。進行中のレプリケーションを示すために、最初にタスクを開始し、次にテーブルを作成してデータを追加します。テーブルDVOHRA.WLSLOGを削除します 、図1に示すように;進行中のレプリケーションを示すために同じテーブルを作成します。


    図1: ドロップテーブルDVOHRA.WLSLOG

    補足ログの追加

    データベース移行サービス 進行中の変更を複製するために使用される変更データキャプチャ(CDC)を有効にするには、補足ロギングを有効にする必要があります。補足ロギングは、テーブル内のデータのどの行が変更されたかに関する情報を格納するプロセスです。補足ログは、テーブルの更新が実行されるたびに、REDOログファイルに補足または追加の列データを追加します。変更された列は、主キーまたは一意のインデックスである可能性のある識別キーとともに、REDOログファイルに補足データとして記録されます。テーブルに主キーまたは一意のインデックスがない場合、すべてのスカラー列がREDOログファイルに記録され、データの行を一意に識別します。これにより、REDOログファイルのサイズが大きくなる可能性があります。 Oracle Databaseは、次の種類の補足ロギングをサポートしています。

    • 最小限の補足ログ: LogMinerがDMLの変更に必要とする最小限のデータのみがREDOログファイルに記録されます。
    • データベースレベルの識別キーログ: さまざまな種類のデータベースレベルの識別キーロギングがサポートされています— ALL、PRIMARY KEY、UNIQUE、およびFOREIGNKEY。 ALLレベルでは、すべての列(LOB、Longs、およびADTを除く)がREDOログ・ファイルに記録されます。 PRIMARY KEYの場合、主キーを含む行が更新されると、主キー列のみがREDOログファイルに保存されます。主キー列を更新する必要はありません。 FOREIGN KEYの種類は、いずれかの赤いログファイルが更新されたときに、行の外部キーのみをREDOログファイルに保存します。 UNIQUE種類は、一意の複合キーまたはビットマップインデックスのいずれかの列が変更された場合に、一意の複合キーまたはビットマップインデックスの列のみを格納します。
    • テーブルレベルの補足ログ: REDOログファイルに保存される列をテーブルレベルで指定します。テーブルレベルの識別キーログは、データベースレベルの識別キーログと同じレベルをサポートします。 ALL、PRIMARY KEY、UNIQUE、およびFOREIGNKEY。テーブルレベルでは、ユーザー定義の補足ロググループもサポートされています。これにより、ユーザーはどの列を補足ログに記録するかを定義できます。ユーザー定義の補足ロググループは、条件付きまたは無条件の場合があります。

    継続的なレプリケーションでは、すべての列に最小限の補足ログとテーブルレベルの補足ログを設定する必要があります。

    SQL * Plusで、次のステートメントを実行して、最小限の補足ロギングを設定します。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    出力は次のとおりです。

    SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    Database altered.
    

    最小限の補足ロギングのステータスを見つけるには、次のステートメントを実行します。また、出力のSUPPLEME列の値がYESの場合、最小限の補足ログが有効になります。

    SQL> SELECT supplemental_log_data_min FROM v$database;
    
    SUPPLEME
    --------
    YES
    

    最小限の補足ログの設定とステータス出力の確認を図2に示します。


    図2: 最小限の補足ログの設定と検証

    また、タスクの開始後に進行中のレプリケーションを示すために、テーブルとテーブルデータを追加するときに、テーブルレベルの識別キーログを設定します。タスクを作成して開始する前にテーブルとテーブルデータを追加すると、進行中のレプリケーションを示すことができなくなります。

    進行中のレプリケーション用のタスクを作成するには、[タスクの作成]をクリックします 、図3に示すように。


    図3: タスク>タスクの作成

    タスクの作成 ウィザードで、タスク名と説明を指定し、図4に示すように、レプリケーションインスタンス、ソースエンドポイント、およびターゲットエンドポイントを選択します。移行タイプを選択します。 既存のデータを移行し、進行中の変更を複製する


    図4: 進行中のレプリケーションの移行タイプの選択

    図5に示すメッセージは、継続的なレプリケーションのために補足ログを有効にする必要があることを示しています。このメッセージは、補足ロギングが有効になっていないことを示すものではなく、リマインダーとしてのみ使用されます。補足ロギングはすでに有効になっています。 作成時にタスクを開始チェックボックスを選択します 。


    図5: 進行中の変更を複製するための補足ログ要件に関するメッセージ

    タスク設定 既存のデータのみを移行する場合と同じです(図6を参照)。


    図6: タスク設定

    テーブルマッピングの場合、少なくとも1つの選択ルールが必要です。 DVOHRAにすべてのテーブルを含めるための選択ルールを追加します 図7に示すように、テーブル。


    図7: 選択ルールの追加

    追加された選択ルールを図8に示します。


    図8: 選択ルール

    タスクの作成をクリックします 図9に示すように、タスクを作成します。


    図9: タスクの作成

    作成中のステータスで新しいタスクが追加されます 、図10に示すように。


    図10: ステータスCreating

    でタスクが追加されました

    既存のすべてのデータの選択と変換のルールが適用され、データが移行されると、タスクのステータスは読み込み完了、レプリケーションが進行中になります。 (図11を参照)。


    図11: ロードが完了し、レプリケーションが進行中です

    テーブル統計 図12に示すように、タブには、移行または複製されたテーブルは表示されません。


    図12: テーブル統計

    CloudWatchログを調べるには、ログをクリックします 図13に示すように、タブをクリックしてリンクをクリックします。


    図13: ログ

    図14に示すように、CloudWatchログが表示されます。ログの最後のエントリは、レプリケーションの開始に関するものです。レプリケーション進行中のタスクは、既存のデータがある場合はロードした後も終了しませんが、実行を継続します。


    図14: CloudWatchログ

    EC2上のOracleデータベースインスタンスへのテーブルの追加

    次に、テーブルを作成し、テーブルデータを追加して、進行中のレプリケーションを示します。次の2つのステートメントを一緒に実行して、テーブルの作成時にテーブルレベルの補足ログが設定されるようにします。スクリプトを変更して、スキーマを変更します。

    CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,
       category VARCHAR2(255),type VARCHAR2(255),servername
       VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255));
    alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns;
    

    テーブルレベルの補足ログは、テーブルの作成時に設定されます。

    SQL> CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255)
       PRIMARY KEY,category VARCHAR2(255),type VARCHAR2(255),servername
       VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255));
    alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns;
    Table created.
    SQL>
    Table altered.
    

    出力は、図15のSQL*Plusに示されています。


    図15: テーブルの作成と補足ログの設定

    まだ、テーブルを作成しただけで、テーブルデータは追加していません。図16のテーブル統計に示されているように、テーブルのDDLが移行されます。


    図16: 移行されたテーブルのDDL

    テーブルデータの追加

    次に、次のSQLスクリプトを実行して、作成したテーブルにデータを追加します。スクリプトを変更して、スキーマを変更します。

    SQL> INSERT INTO DVOHRA.wlslog(time_stamp,category,type,
       servername,code,msg) VALUES('Apr-8-2014-7:06:16-PM-PDT',
       'Notice','WebLogicServer','AdminServer','BEA-000365','Server
       state changed to STANDBY');
    INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,
       code,msg) VALUES('Apr-8-2014-7:06:17-PM-PDT','Notice',
       'WebLogicServer','AdminServer','BEA-000365','Server state
       changed to STARTING');
    INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,
       code,msg) VALUES('Apr-8-2014-7:06:18-PM-PDT','Notice',
       'WebLogicServer','AdminServer','BEA-000365','Server state
       changed to ADMIN');
    INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,code,
       msg) VALUES('Apr-8-2014-7:06:19-PM-PDT','Notice',
       'WebLogicServer','AdminServer','BEA-000365','Server state
       changed to RESUMING');
    INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,code,
       msg) VALUES('Apr-8-2014-7:06:20-PM-PDT','Notice',
       'WebLogicServer','AdminServer','BEA-000361','Started WebLogic
       AdminServer');
    INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,code,
       msg) VALUES('Apr-8-2014-7:06:21-PM-PDT','Notice',
       'WebLogicServer','AdminServer','BEA-000365','Server state
       changed to RUNNING');
    
    1 row created.
    
    SQL>
    1 row created.
    
    SQL>
    1 row created.
    
    SQL>
    1 row created.
    
    SQL>
    1 row created.
    
    SQL>
    1 row created.
    

    続いて、Commitステートメントを実行します。

    SQL> COMMIT;
    Commit complete.
    

    複製されたデータベーステーブルの調査

    表の統計には、図17に示すように、追加されたデータの行数として挿入がリストされています。


    図17: テーブル統計リスト6挿入

    進行中の変更を複製した後も、タスクは実行を継続します。データの別の行を追加します。

    SQL> INSERT INTO DVOHRA.wlslog(time_stamp,category,type,
       servername,code,msg) VALUES('Apr-8-2014-7:06:22-PM-PDT',
       'Notice','WebLogicServer','AdminServer','BEA-000360','Server
       started in RUNNING mode');
    
    1 row created.
    SQL> COMMIT;
    
    Commit complete.
    
    SQL>
    

    データの更新をクリックします 図18に示すように、サーバーから。


    図18: サーバーからのデータを更新する

    図19に示すように、テーブル統計の挿入の総数は7になります。


    図19: Insertsを7として使用したテーブル統計

    データの削除と再読み込み

    テーブルデータを削除して再読み込みするには、[テーブルデータを削除して再読み込み]をクリックします 、図20に示すように。


    図20: テーブルデータの削除と再読み込み

    [サーバーからデータを更新]をクリックします (図21を参照)。


    図21: サーバーからのデータを更新する

    アイコンと状態 表の列は、図22に示すように、テーブルが再ロードされていることを示しています。


    図22: テーブルがリロードされています

    テーブルのリロードが完了すると、テーブルの状態列はテーブルが完了しましたになります。 、図23に示すように、テーブルデータをリロードした後、フルロード行 リロードは進行中のレプリケーションではなく、フルロードであるため、値は7で、Insertsは0です。

    図23: テーブルの再読み込みが完了しました

    テーブルデータがドロップおよびリロードされ、ソーステーブルデータが変更されていないため、CloudWatchログには、図24に示すように、「ソースデータベースからの一部の変更はターゲットデータベースに適用されたときに影響がありませんでした」というメッセージが含まれます。


    図24: ソースデータベースからの一部の変更は、ターゲットデータベースに適用しても影響はありませんでした

    DVOHRA.wlslogのリロード時 テーブルが完了しました。「テーブルDVOHRA.wlslogのロードが終了しました。図25に示すように、「7行を受信しました」と表示されます。


    図25: ロードが完了したことを示すCloudWatchログメッセージ

    タスクの停止と開始

    進行中のレプリケーションを含むタイプのタスクは、エラーが発生しない限り、それ自体で停止しません。タスクを停止するには、[停止]をクリックします (図26を参照)。


    図26: タスクの停止

    タスクの停止 ダイアログで、停止をクリックします 、図27に示すように。


    図27: タスクを停止するための確認ダイアログ

    タスクのステータスは停止中になります 、図28に示すように。


    図28: タスクを停止する

    タスクが停止すると、ステータスは停止になります 、図29に示すように。


    図29: タスクが停止しました

    停止したタスクを開始するには、開始/再開をクリックします 、図30に示すように。


    図30: タスクの開始または再開

    タスクの開始 ダイアログで、開始をクリックします 停止したポイントからタスクを開始します(図31を参照)。もう1つのオプションは、タスクを再開することです。


    図31: 停止後のタスクの開始

    タスクのステータスは開始中になります 、図32に示すように。


    図32: タスクの開始

    既存のデータの移行が完了すると、タスクはロードが完了し、レプリケーションが進行中のステータスで実行を継続します。 、図33に示すように。


    図33: ロードが完了し、レプリケーションが進行中です

    データベースの削除

    RDS DBインスタンスは、インスタンスアクション>削除で削除できます 指図。 EC2インスタンスのOracleデータベースは、アクション>インスタンスの状態>停止で停止できます。 、図34に示すように。


    図34: EC2インスタンスの停止

    結論

    4つの記事で、OracleデータベースをAWSEC2からAWSRDSに移行する方法について説明しました。


    1. PL / SQLで例外を発生させる方法は?

    2. MySQLの大文字と小文字を区別するクエリ

    3. Oracle10gでピボット

    4. パフォーマンスが低下し始める前に、MySQLデータベースはどのくらい大きくなることができますか