E Oracle Streamsを使用した以前のデータベースのオンラインでのアップグレード
この付録では、Oracle Streamsを使用して、データベースを次のいずれかのOracle Databaseリリースからアップグレードする方法について説明します。
-
Oracle Database 10g リリース1(10.1)
-
Oracle9iリリース2 (9.2)
この付録で説明するデータベースのアップグレード操作では、わずかな停止時間または停止時間なしでデータベースをアップグレードするために、Oracle Streamsの機能を使用します。
次の項では、Oracle Streamsを使用したオンラインでのデータベースのアップグレードについて説明します。
関連項目:
Oracle Database 10gリリース2 (10.2)以上からアップグレードする方法の詳細、およびOracle Streamsを使用してデータベースに対して他のメンテナンス操作を実行する方法の詳細は、「Oracle Streamsを使用したオンラインでのデータベースのアップグレードおよびメンテナンス」を参照
E.1 Oracle Streamsを使用したデータベースのアップグレード・プロセスの概要
Oracle Databaseのアップグレードは、既存の以前のリリースのOracle Databaseを今回のリリースのOracle Databaseに変換するプロセスです。通常、データベースをアップグレードするには、データベースを長時間停止する必要がありますが、Oracle Streamsの機能を使用することで、わずかな停止時間または停止時間なしでデータベースをアップグレードできます。そのためには、Oracle Streamsを使用して、次のデータベースを含むレプリケーション環境を構成します。
-
ソース・データベース: アップグレード対象の元のデータベース。
-
取得データベース: アップグレード中にソース・データベースに対して行われた変更が取得プロセスによって取得されるデータベース。
-
宛先データベース: アップグレード・プロセス中にソース・データベースに対して行われた変更が適用プロセスによって適用されるソース・データベースのコピー。
次の一般的な手順で、データベースがオンラインの状態でデータベースをアップグレードできます。
-
空の宛先データベースを作成します。
-
Oracle Streamsのレプリケーション環境を構成します(元のデータベースがソース・データベースで、データベースのコピーがソースで行われた変更の宛先データベースです)。
-
宛先データベースに対してデータベースのアップグレードを実行します。このとき、元のソース・データベースはオンラインで使用可能です。
-
Oracle Streamsを使用して、ソース・データベースで行われた変更を宛先データベースに適用します。
-
ソース・データベースで行われた変更を宛先データベースに適用した後、ソース・データベースをオフラインにして、アプリケーションおよびユーザーが宛先データベースを使用できるようにします。
図E-1に、このプロセスの概要を示します。
E.1.1 アップグレード・プロセス中の取得データベース
アップグレード・プロセス中、取得データベースで取得プロセスが作成されます。Oracle Database 10g リリース1 (10.1)にはダウンストリーム取得が導入されています。データベースをOracle Database 10g リリース1からアップグレードする場合は、次のオプションを使用できます。
-
アップグレード・プロセス中に、ソース・データベースでローカル取得プロセスを作成する。
-
宛先データベースで、ダウンストリーム取得プロセスを作成する。宛先データベースが取得データベースである場合、取得データベースから宛先データベースへの伝播は不要です。
-
第3のデータベースを取得データベースにする。この場合、第3のデータベースには、Oracle Database 10g リリース1以上のデータベースを使用できます。
ただし、データベースをOracle9i リリース2 (9.2)からOracle Database 11g リリース2以上にアップグレードする場合、ダウンストリーム取得がサポートされていないため、ローカル取得プロセスをソース・データベースで作成する必要があります。
ダウンストリーム取得プロセスを使用すると、アップグレード・プロセス中にソース・データベースに必要なリソースが削減されますが、ローカル取得プロセスの方が構成が簡単です。表E-1に、アップグレード・プロセス中に取得データベースにできるデータベースを示します。
表E-1 サポートされているアップグレード中の取得データベース
既存のデータベースのリリース | 取得データベースにソース・データベースを使用可能かどうか | 取得データベースに宛先データベースを使用可能かどうか | 取得データベースに第3のデータベースを使用可能かどうか |
---|---|---|---|
9.2 |
はい |
いいえ |
いいえ |
10.1 |
はい |
はい |
はい |
注意:
Oracle Database 10g リリース1 (10.1)からアップグレードする場合、アップグレードを開始する前に、取得データベースとするデータベースを決定してください。
関連項目:
E.1.2 アップグレード対象のデータベースの前提条件
この付録で説明する手順は、アップグレード対象のデータベースが次のすべての条件を満たしていることを前提としています。
-
データベースは、既存のOracle Streams環境に含まれない。
-
データベースは、既存のロジカル・スタンバイ環境に含まれない。
-
データベースには、他のデータベースのマテリアライズド・ビューのマスター表である表は存在しない。
-
アップグレード・プロセス中、メッセージはユーザー作成キューにエンキューされない。
E.1.3 ジョブ・キュー・プロセスおよびPL/SQLパッケージのサブプログラムに関する考慮事項
可能であれば、アップグレード・プロセス中にジョブ・キュー・プロセスを作成、変更または削除しないでください。また、アップグレード・プロセス中は、ユーザー・データとディクショナリ・メタデータを同時に変更するOracle提供のPL/SQLパッケージのサブプログラムを起動しないでください。DBMS_RLS
、DBMS_STATS
およびDBMS_JOB
パッケージには、ユーザー・データとディクショナリ・メタデータを同時に変更するサブプログラムが含まれています。
「タスク5: アップグレードの完了およびOracle Streamsの削除」の手順13および14で、ソース・データベースと宛先データベースで同じ操作を確実に実行した場合に、データベースでこのような操作が実行される可能性があります。たとえば、アップグレード・プロセス中に、PL/SQLプロシージャによってソース・データベース上で統計が収集された場合、手順14でも、宛先データベースで同じPL/SQLプロシージャを起動する必要があります。
E.2 Oracle Streamsを使用したデータベースのアップグレードの準備
この項では、Oracle Streamsを使用したデータベースのアップグレードを開始する前に完了する必要があるタスクについて説明します。
E.2.1 ユーザー定義型を含むデータベースのアップグレードの準備
ユーザー定義型には、オブジェクト型、REF
値、VARRAY、ネストした表などがあります。今回のリリースでは、Oracle Streamsの取得プロセスおよび適用プロセスでは、ユーザー定義型はサポートされていません。この項では、Oracle Streamsを使用してユーザー定義型を含むデータベースをアップグレードする方法について説明します。
1つの方法は、データベースのアップグレード中に、ユーザー定義型を含む表に対して、データ操作言語(DML)またはデータ定義言語(DDL)の変更が行われないようにすることです。この場合、これらの表は宛先データベースでインスタンス化され、操作中にその表に対する変更は行われません。アップグレードの完了後に、宛先データベースでユーザー定義型を含む表を読取り/書込み可能にします。
アップグレード中にユーザー定義型を含む表をオープン状態のままにしておく必要がある場合は、次の一般的な手順を実行して、アップグレード中にその表に対して行われる変更を保持してください。
- 「Oracle Streamsを使用したデータベースのアップグレードの実行」で説明するアップグレード・プロセスを開始する前に、ユーザー定義型を含むソース・データベースの表に対する行変更を格納する1つ以上のロギング表を作成します。ロギング表の各列では、ソース・データベースのリリースのOracle Streamsでサポートされているデータ型を使用する必要があります。
- 「Oracle Streamsを使用したデータベースのアップグレードの実行」で説明するアップグレード・プロセスを開始する前に、ユーザー定義のデータ型を含む表で起動されるDMLトリガーをソース・データベースで作成します。このトリガーによって、各行変更が等価なリレーショナルに変換され、手順1で作成したロギング表に変更された行が記録されます。
- 「Oracle Streamsを使用したデータベースのアップグレードの実行」の手順で取得プロセスおよび伝播を構成するときに、ロギング表に対する変更を取得して宛先データベースに伝播するように、取得プロセスおよび伝播を構成します。ユーザー定義型を含む表に対する変更は、取得または伝播されないようにする必要があります。
- 「Oracle Streamsを使用したデータベースのアップグレードの実行」の手順で宛先データベースの適用プロセスを構成するときに、ロギング表に対する変更を処理するプロシージャDMLハンドラを使用するように適用プロセスを構成します。プロシージャDMLハンドラによって等価なリレーショナルからユーザー定義型が再構成され、ユーザー定義型を含む表に対する変更が適用されます。
手順については、Webブラウザを使用してMy Oracle Support (旧OracleMetaLink) Webサイトを参照してください。
http://support.oracle.com/
Oracle Streamsの追加のデータ型のサポートについては、データベース掲示板556742.1で説明されています。
関連項目:
-
トリガーを作成する方法の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照
E.2.2 インスタンス化で使用するユーティリティの決定
データベースのアップグレードを開始する前に、操作中に宛先データベースをインスタンス化するために、エクスポート/インポート・ユーティリティ(データ・ポンプまたはオリジナル)を使用するか、Recovery Manager(RMAN)ユーティリティを使用するかを決定します。アップグレード対象の既存のデータベースは、宛先データベースに置き換えられます。
宛先データベースのインスタンス化にどちらのユーティリティを使用するかを決定するには、次の事項を考慮します。
-
オリジナルのエクスポート/インポートまたはデータ・ポンプ・エクスポート/インポートを使用すると、操作の最初で、宛先データベースをOracle Database 11g リリース2 (11.2)以上のデータベースにできます。つまり、インスタンス化の後、宛先データベースをアップグレードする必要はありません。
インスタンス化にエクスポート/インポートを使用する場合、データ・ポンプがサポートされているときは、データ・ポンプを使用することをお薦めします。データ・ポンプを使用すると、オリジナルのエクスポート/インポートを使用するより高速でインスタンス化を実行できます。
-
RMANの
DUPLICATE
コマンドを使用する場合は、特にデータベースが大きいときに、エクスポート/インポートを使用するより速くインスタンス化を実行できます。ただし、RMANインスタンス化ではデータベース・リリースが同じである必要があります。したがって、次の条件を満たしている必要があります。-
データベースがOracle9i リリース2 (9.2)データベースである場合、インスタンス化時の宛先データベースもOracle9i Databaseリリース2データベースである。
-
データベースがOracle Database 10g リリース1 (10.1)データベースである場合、インスタンス化時の宛先データベースもOracle Database 10g リリース1データベースである。
インスタンス化の後で、宛先データベースをアップグレードする必要があります。
また、分散トランザクションが可能な環境でインスタンス化を行う場合は、RMANを使用しないことをお薦めします。これを行うと、手動での修正が必要なインダウント・トランザクションが実行される場合があります。
-
表E-2に、各インスタンス化方法でサポートされているアップグレード対象のデータベースのリリースを示します。また、ソース・データベースと宛先データベースのプラットフォームまたはキャラクタ・セットが異なる場合に、各インスタンス化方法がサポートされるかどうかを示します。ソース・データベースと宛先データベースのプラットフォームおよびキャラクタ・セットが同じ場合は、すべてのインスタンス化方法がサポートされます。
表E-2 Oracle Streamsを使用したデータベースのアップグレードのためのインスタンス化方法
インスタンス化方法 | サポートされるアップグレード対象のデータベースのリリース | プラットフォームが異なる場合にサポートされるかどうか | キャラクタ・セットが異なる場合にサポートされるかどうか |
---|---|---|---|
オリジナルのエクスポート/インポート |
9.2または10.1 |
はい |
はい |
データ・ポンプ・エクスポート/インポート |
10.1 |
はい |
はい |
RMANの |
9.2または10.1 |
いいえ |
いいえ |
E.3 Oracle Streamsを使用したデータベースのアップグレードの実行
この項では、Oracle Streamsを使用してデータベースをアップグレードする手順について説明します。これらの手順では、Oracle Streamsを使用して、Oracle9i リリース2(9.2)またはOracle Database 10g リリース1(10.1)のいずれかのOracle Databaseリリースをアップグレードします。
Oracle Streamsを使用してデータベースをアップグレードするには、次のタスクを実行します。
E.3.2 タスク2: インスタンス化前のOracle Streamsの設定
インスタンス化の前にOracle Streamsを設定する手順は、取得データベースとするデータベースによって異なります。次のいずれかの項の手順に従ってください。
関連項目:
取得データベースの詳細は、「Oracle Streamsを使用したデータベースのアップグレード・プロセスの概要」を参照
E.3.2.1 取得データベースにソース・データベースを使用する場合
取得データベースにソース・データベースを使用する場合、次の手順を実行して、インスタンス化の前にOracle Streamsを設定します。
E.3.2.2 取得データベースに宛先データベースを使用する場合
この方法を使用するには、アップグレード対象のデータベースがOracle Database 10g リリース1 (10.1)データベースである必要があります。取得データベースに宛先データベースを使用する場合、次の手順を実行して、インスタンス化の前にOracle Streamsを設定します。
-
ソース・データベースが宛先データベースと通信できるように、ネットワークおよびOracle Netを構成します。詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
-
使用するインスタンス化方法に基づいて、次のいずれかの項の手順を実行します。
エクスポート/インポート
インスタンス化にエクスポート/インポートを使用する場合、次の手順を実行します。
-
SQL*Plusで、宛先データベース
updb.example.com
にOracle Streams管理者として接続します。SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。
-
アップグレード・プロセス中にソース・データベースに対して行われた変更をステージングする
ANYDATA
キューを作成します。次に例を示します。BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE( queue_table => 'strmadmin.destination_queue_table', queue_name => 'strmadmin.destination_queue'); END; /
-
ソース・データベースへのすべてのサポートされている変更を取得するダウンストリーム取得プロセスを構成し、手順2.bで作成したキューにこれらの変更をステージングします。取得プロセスでソース・データベースへのデータベース・リンクが使用されることを確認します。取得プロセスには、リアルタイム・ダウンストリーム取得プロセスまたはアーカイブ・ログ・ダウンストリーム取得プロセスを使用できます。詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。取得プロセスは起動しないでください。
「ユーザー定義型を含むデータベースのアップグレードの準備」で、メンテナンス操作中にユーザー定義型を含む表に対して行われる変更を保持する方法について説明しています。この方法を使用する場合、ユーザー定義型を含む表に対する変更が取得プロセスによって取得されないことを確認します。ルールを使用してOracle Streams構成からデータベース・オブジェクトを除外する方法については、ソース・データベースのOracle Streamsマニュアルを参照してください。
RMAN
インスタンス化にRMANを使用する場合、次の手順を実行します。
-
SQL*Plusで、ソース・データベース
orcl.example.com
にOracle Streams管理者として接続します。SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。
-
REDOログにデータ・ディクショナリを作成します。
SET SERVEROUTPUT ON DECLARE scn NUMBER; BEGIN DBMS_CAPTURE_ADM.BUILD( first_scn => scn); DBMS_OUTPUT.PUT_LINE('First SCN Value = ' || scn); END; / First SCN Value = 1122610
このプロシージャによって、宛先データベースで作成される取得プロセスの有効な先頭SCN値が表示されます。戻されたSCN値を書き留めます。この値は、宛先データベースで取得プロセスを作成するときに使用します。
-
ソース・データベースでインスタンス化の準備を行います。
exec DBMS_CAPTURE_ADM.PREPARE_GLOBAL_INSTANTIATION();
-
-
「タスク3: データベースのインスタンス化」に進みます。
E.3.2.3 取得データベースに第3のデータベースを使用する場合
この方法を使用するには、次の要件を満たす必要があります。
-
アップグレード対象のデータベースは、Oracle Database 10g リリース1 (10.1)データベースである必要があります。
-
第3のデータベースは、Oracle Database 10g リリース1以上のデータベースである必要があります。
ここでは、第3のデータベースのグローバル名がthrd.example.com
であると想定しています。取得データベースに第3のデータベースを使用する場合、次の手順を実行して、インスタンス化の前にOracle Streamsを設定します。
E.3.3 タスク3: データベースのインスタンス化
「インスタンス化で使用するユーティリティの決定」で、データベース全体をインスタンス化するための様々な方法について説明しています。使用するインスタンス化方法に基づいて、次のいずれかの項の手順を実行します。
E.3.3.2 RMANを使用したデータベースのインスタンス化
次の手順を実行して、RMANのDUPLICATE
コマンドを使用して宛先データベースをインスタンス化します。
注意:
ここで示すのは、RMANを使用してデータベースを複製する手順の概略です。Oracle9i リリース2データベースをアップグレードする場合、そのリリースのRMANを使用する方法の詳細は、『Oracle9i Recovery Managerユーザーズ・ガイド』を参照してください。Oracle Database 10g リリース1(10.1)データベースをアップグレードする場合、そのリリースの『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』を参照してください。
E.3.4 タスク4: インスタンス化後のOracle Streamsの設定
インスタンス化の後にOracle Streamsを設定する手順は、取得データベースとするデータベースによって異なります。次のいずれかの項の手順に従ってください。
関連項目:
取得データベースの詳細は、「Oracle Streamsを使用したデータベースのアップグレード・プロセスの概要」を参照
E.3.4.1 取得データベースにソース・データベースを使用する場合
取得データベースにソース・データベースを使用する場合、次の手順を実行して、インスタンス化の後にOracle Streamsを設定します。
E.3.4.2 取得データベースに宛先データベースを使用する場合
取得データベースに宛先データベースを使用する場合、次の手順を実行して、インスタンス化の後にOracle Streamsを設定します。
-
インスタンス化にRMANを使用した場合、次の手順を実行します。インスタンス化にエクスポート/インポートを使用した場合は、手順2に進みます。
-
SQL*Plusで、宛先データベースにOracle Streams管理者として接続します。この例では、宛先データベースは
updb.example.com
です。SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。
-
アップグレード・プロセス中にソース・データベースに対して行われた変更をステージングする
ANYDATA
キューを作成します。次に例を示します。BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE( queue_table => 'strmadmin.destination_queue_table', queue_name => 'strmadmin.destination_queue'); END; /
-
ソース・データベースへのすべてのサポートされている変更を取得するダウンストリーム取得プロセスを構成し、手順1.bで作成したキューにこれらの変更をステージングします。
CREATE_CAPTURE
プロシージャのfirst_scn
パラメータが、「取得データベースに宛先データベースを使用する場合」の手順22.bのデータ・ディクショナリの作成時に取得した値に設定されていることを確認します。この例では、first_scn
パラメータは1122610
に設定されています。取得プロセスには、リアルタイム・ダウンストリーム取得プロセスまたはアーカイブ・ログ・ダウンストリーム取得プロセスを使用できます。詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。取得プロセスは起動しないでください。
「ユーザー定義型を含むデータベースのアップグレードの準備」で、メンテナンス操作中にユーザー定義型を含む表に対して行われる変更を保持する方法について説明しています。この方法を使用する場合、ユーザー定義型を含む表に対する変更が取得プロセスによって取得されないことを確認します。ルールを使用してOracle Streams構成からデータベース・オブジェクトを除外する方法については、ソース・データベースのOracle Streamsマニュアルを参照してください。
-
-
ダウンストリーム取得プロセスで使用されるキューにすべての変更を適用する適用プロセスを作成します。次に例を示します。
BEGIN DBMS_STREAMS_ADM.ADD_GLOBAL_RULES( streams_type => 'apply', streams_name => 'apply_upgrade', queue_name => 'strmadmin.destination_queue', include_dml => TRUE, include_ddl => TRUE, include_tagged_lcr => TRUE, source_database => 'orcl.example.com'); END; /
E.3.5 タスク5: アップグレードの完了およびOracle Streamsの削除
次の手順を実行して、Oracle Streamsを使用したアップグレード操作を完了し、Oracle Streamsコンポーネントを削除します。
-
宛先データベースにOracle Streams管理者として接続します。この例では、宛先データベースは
updb.example.com
です。SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。
-
適用プロセスを起動します。次に例を示します。
BEGIN DBMS_APPLY_ADM.START_APPLY( apply_name => 'apply_upgrade'); END; /
-
取得データベースにOracle Streams管理者として接続します。
-
取得プロセスを起動します。次に例を示します。
BEGIN DBMS_CAPTURE_ADM.START_CAPTURE( capture_name => 'capture_upgrade'); END; /
この手順は、宛先データベースのインスタンス化中に、ソース・データベースに対して行われた変更をレプリケートするプロセスを開始します。
-
SQL*Plusで、取得データベースにOracle Streams管理者として接続したままの状態で、適用プロセスが、ソース・データベースからのほとんどの変更を宛先データベースに適用するまで、Oracle Streams環境を監視します。
適用プロセスが、ソース・データベースからのほとんどの変更を宛先データベースに適用したかどうかを判断するには、次の手順を実行します。
-
取得プロセスのエンキュー・メッセージ番号、および適用プロセスのシステム変更番号(SCN)が最も古いメッセージ番号を問い合せ、これらがほとんど等しいかどうかを確認します。
たとえば、取得プロセスの名前が
capture_upgrade
、適用プロセスの名前がapply_upgrade
の場合は、取得データベースで次の問合せを実行します。COLUMN ENQUEUE_MESSAGE_NUMBER HEADING 'Captured SCN' FORMAT 99999999999 COLUMN OLDEST_SCN_NUM HEADING 'Oldest Applied SCN' FORMAT 99999999999 SELECT c.ENQUEUE_MESSAGE_NUMBER, a.OLDEST_SCN_NUM FROM V$STREAMS_CAPTURE c, V$STREAMS_APPLY_READER@updb.example.com a WHERE c.CAPTURE_NAME = 'CAPTURE_UPGRADE' AND a.APPLY_NAME = 'APPLY_UPGRADE';
この問合せで戻される2つの値がほぼ同じ場合は、ソース・データベースからのほとんどの変更が宛先データベースに適用済で、次の手順に進むことができます。この時点では、ソース・データベースがまだ変更可能であるため、この問合せで同じ値が戻されることはありません。
この問合せで結果が返されない場合は、取得データベースの
DBA_CAPTURE
ビューおよび宛先データベースのDBA_APPLY
ビューのSTATUS
列を問い合せて、環境のOracle Streamsクライアントが有効かどうかを確認します。伝播を使用する場合、「伝播ジョブのスケジュールに関する情報の表示」にある問合せを実行して、伝播の状態を確認できます。Oracle Streamsクライアントが無効な場合は、再起動します。Oracle Streamsクライアントが再起動されない場合は、「Oracle Streams環境内での問題の特定」を参照して、環境に対するトラブルシューティングを実行します。
-
宛先データベースでの適用サーバーの適用プロセスの状態を問い合せ、変更の適用が終了しているかどうかを確認します。
たとえば、適用プロセスの名前が
apply_upgrade
である場合は、取得データベースで次の問合せを実行します。COLUMN STATE HEADING 'Apply Server State' FORMAT A20 SELECT STATE FROM V$STREAMS_APPLY_SERVER@updb.example.com WHERE APPLY_NAME = 'APPLY_UPGRADE';
すべての適用サーバーの状態が
IDLE
であれば、次の手順に進むことができます。
-
-
宛先データベースにOracle Streams管理者として接続します。この例では、宛先データベースは
updb.example.com
です。 -
次の問合せを実行して、適用エラーがないことを確認します。
SELECT COUNT(*) FROM DBA_APPLY_ERROR;
この問合せで0(ゼロ)が戻されたら、次の手順に進みます。この問合せでエラー・キューにエラーが表示される場合は、エラーを解決してから次の手順に進みます。詳細は、「適用エラーの管理」を参照してください。
-
ソース・データベースから、すべてのアプリケーションとユーザーの接続を切断します。
-
ソース・データベースに管理ユーザーとして接続します。この例では、ソース・データベースは
orcl.example.com
です。 -
データベースへのアクセスを制限します。次に例を示します。
ALTER SYSTEM ENABLE RESTRICTED SESSION;
-
SQL*Plusで、取得データベースに管理ユーザーとして接続し、手順55.aで実行した問合せを再度実行します。この問合せで戻される2つの値が同じ場合は、ソース・データベースからのすべての変更が宛先データベースに適用済で、次の手順に進むことができます。
-
SQL*Plusで、宛先データベースにOracle Streams管理者として接続し、手順7で実行した問合せを再度実行します。この問合せで0(ゼロ)が戻されたら、次の手順に進みます。この問合せでエラー・キューにエラーが表示される場合は、エラーを解決してから次の手順に進みます。詳細は、「適用エラーの管理」を参照してください。
-
アップグレード・プロセス中にソース・データベースでジョブ・キュー・プロセスを作成、変更または削除するアクションを実行した場合は、同じアクションを宛先データベースで実行します。詳細は、「ジョブ・キュー・プロセスおよびPL/SQLパッケージのサブプログラムに関する考慮事項」を参照してください。
-
ユーザー・データとディクショナリ・メタデータを同時に変更するアップグレード・プロセス中に、Oracleが提供するPL/SQLパッケージのサブプログラムをソース・データベースで起動した場合、同じサブプログラムを宛先データベースで起動します。詳細は、「ジョブ・キュー・プロセスおよびPL/SQLパッケージのサブプログラムに関する考慮事項」を参照してください。
-
ソース・データベースを停止します。このデータベースは再度オープンしないでください。
-
宛先データベースに管理ユーザーとして接続します。
-
データベースのグローバル名をソース・データベースと一致するように変更します。次に例を示します。
ALTER DATABASE RENAME GLOBAL_NAME TO orcl.example.com;
-
宛先データベースで、以前に無効にしたジョブを有効にします。
-
宛先データベースを、アプリケーションおよびユーザーからアクセスできるようにします。ソース・データベースに接続していたアプリケーションおよびユーザーを、宛先データベースにリダイレクトします。必要に応じて、ソース・データベースと通信していたシステムが宛先データベースと通信できるように、ネットワークおよびOracle Netを再構成します。詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
-
宛先データベースで、不要になったOracle Streamsコンポーネントを削除します。管理ユーザーとして宛先データベースに接続し、次のプロシージャを実行します。
注意:
このプロシージャの実行には危険が伴います。このプロシージャでは、ローカルのOracle Streams構成が削除されます。このプロシージャを実行する前に、宛先データベースのOracle Streams構成を削除できるかどうかを確認してください。
EXEC DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION();
宛先データベースでデータベース・サプリメンタル・ロギングが不要になった場合は、次の文を実行して、不要になったサプリメンタル・ロギングを削除します。
ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE, FOREIGN KEY) COLUMNS;
宛先データベースでOracle Streams管理者が不要になった場合は、次の文を実行します。
DROP USER strmadmin CASCADE;
-
取得データベースに第3のデータベースを使用した場合、その第3のデータベースで、不要になったOracle Streamsコンポーネントを削除します。管理ユーザーとして第3のデータベースに接続し、次のプロシージャを実行します。
注意:
このプロシージャの実行には危険が伴います。このプロシージャでは、ローカルのOracle Streams構成が削除されます。このプロシージャを実行する前に、第3のデータベースのOracle Streams構成を削除できるかどうかを確認してください。
EXEC DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION();
第3のデータベースでデータベース・サプリメンタル・ロギングが不要になった場合は、次の文を実行して、不要になったサプリメンタル・ロギングを削除します。
ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE, FOREIGN KEY) COLUMNS;
宛先データベースでOracle Streams管理者が不要になった場合は、次の文を実行します。
DROP USER strmadmin CASCADE;
これで、データベースのアップグレードは完了です。