シャード管理

Oracle Enterprise Manager Cloud ControlおよびGDSCTLを使用したOracle Globally Distributed Databaseデプロイのシャードを管理できます。

シャードの追加について

既存の分散データベース環境に新しいシャードを追加することによって、スケール・アウトしたり、フォルト・トレランスを向上させたりできます。

フォルト・トレランスのためには、少数の非常に大きいシャードを使用するより、多数の小さいシャードを使用するほうが効果的です。アプリケーションが長期間使用されてデータ量が増えた場合、1つ以上のシャードを分散データベースに追加して容量を増やすことができます。

分散データベースにシャードを追加するときに、環境がコンシステント・ハッシュ(システム管理)によってパーティション化されている場合は、既存のシャードからのチャンクが新しいシャードに自動的に移動されて、分散データベース環境がリバランスされます。

ユーザー定義のデータ分散を使用する場合、新しいシャードにデータを移入するには、GDSCTLのsplit chunkおよびmove chunkコマンドを使用して、既存のシャードから新しいシャードにチャンクを手動で移動することが必要になる場合があります。

Oracle Enterprise Manager Cloud Controlを使用して、新しいシャードに移動するか、分割して移動するよい候補となるチャンクを識別できます。

環境にシャードを追加する場合は、スタンバイ・サーバーが準備完了状態であることを確認し、新しいシャードが配置された後に、move chunk操作に関係したすべてのシャードのバックアップを取得します。

分散データベースで処理されたすべてのDDLは、クライアントがアクセスできるようになる前に、同じ順序でシャードに適用されます。

シャードを追加するワーク・フロー

タスク1: シャード・データベースの作成

分散データベース構成に新しいシャードを追加する前に、Oracle Databaseソフトウェアをシャード・ホスト・システムにインストールし、プライマリおよびスタンバイの各シャードに新しいデータベースを構成する必要があります。詳細は、リンク先のトピックを参照して、次のステップに従ってください。

  1. Oracle Databaseソフトウェアのインストール
  2. シャード・データベースの作成

タスク2: シャード・データベースの検証

シャード・データベースを検証して、すべてのシャード・データベース要件を満たしていることを確認します。

タスク3: 構成へのシャード・データベースの追加

各プライマリおよびスタンバイ・シャードを分散データベース構成に追加します。

タスク4: 更新された分散データベース構成のデプロイ

最後のタスクは、追加した新しいシャードとそのスタンバイを使用して、更新された分散データベース構成をデプロイすることです。

  • GDSCTLを使用する場合、「構成のデプロイ」
  • Enterprise Managerを使用する場合、「シャードのデプロイ」

    Enterprise Manager分散データベース管理ツールを使用すると、オプションで、1つのステップでシャードを追加してデプロイできます。ただし、シャードを構成に追加するときにデプロイしない場合は、この手順を使用してデプロイします。

プールからのシャードの削除

シャードにあるデータを失うことなく、分散データベース環境からシャードを一時的または永続的に削除することが必要となる場合があります。

たとえば、忙しい休日の後に分散データベース環境がスケール・ダウンされる場合、またはデータ・センター内のサーバーまたはインフラストラクチャを交換する場合、シャードの削除が必要となることがあります。シャードを削除する前に、すべてのチャンクをそのシャードからオンラインの状態に維持される他のシャードに移動する必要があります。それらを移動するときは、すべてのシャード間でデータおよびアクティビティのバランスが維持されるようにします。

シャードを一時的に削除するだけの場合は、保守が完了した後に簡単に識別して元に戻すことができるように、各シャードに移動したチャンクを追跡します。

シャードが集中自動バックアップ用に構成された分散データベースの一部である場合は、分散データベース構成からシャードを削除する前に、データベースからバックアップ・アーティファクトを削除できます。シャードからのバックアップ構成の削除を参照してください。

GDSCTLまたはOracle Enterprise Manager Cloud Controlを使用して、シャードを削除できます。

シャードの置換

シャードに障害が発生した場合、または他の理由でシャードを新しいホストに移動するのみの場合は、GDSCTLのADD SHARD -REPLACEコマンドを使用して置換できます。

シャード・データベースに障害が発生し、同じホスト上で(RMANバックアップ/リストアなどの方法を使用して)データベースをリカバリできる場合は、-replaceパラメータを使用してシャードを置き換える必要はありません。シャードをローカルでリカバリできない場合や、なんらかの理由で別のホストまたはCDBにシャードを再配置する必要がある場合は、新しいホスト上にシャードのレプリカを作成できます。GDSCTLコマンドADD SHARDに-replaceオプションを指定すると、分散データベース構成を新しい情報で更新できます。

ADD SHARD -REPLACEを使用したシャードの置換が有用なケースを次に示します。

  • シャード・データベースが実行されていたサーバー(マシン)が修復不可能な損害を受け、これを置き換える必要がある場合

  • 正常に機能しているサーバーを別の(たとえば、より強力な)サーバーに置き換える必要がある場合

  • PDB内のシャードが、あるCDBから別のCDBに再配置された場合

これらのいずれのケースでも、ADD SHARDを実行した後、シャードの数とシャード間のデータ分布は変更されず、シャードは同じデータを保持する別のシャードに置き換えられます。-replaceオプションを指定せずにADD SHARDを使用した場合は、これとは異なり、シャードの数が増加し、データが再分配されます。

ADD SHARD -REPLACEを実行すると、古いシャードのパラメータ(connect_stringやdb_unique_nameなど)は新しい値に置き換えられます。新しいデータベースには、障害が発生したデータベースとは異なるdb_unique_nameを付けることができます。Data Guardでは構成のすべてのメンバーに同じDBIDを付ける必要があるため、Data Guard構成内のスタンバイを置き換える場合は、新しいデータベースのDBIDが古いDBIDと一致している必要があります。

REPLACEを使用する前に

ADD SHARD -REPLACEを使用する前に、次の点を確認してください。

  • データベースが(RMANリストアなどのメソッドを使用して)正しくリストアされていること。新しいデータベース・シャードには、障害が発生したシャードと同じ分散データベース・メタデータが必要です。間違ったシャードへの接続文字列を指定しないように、基本的な検証を実行してください。

  • 障害の発生したシャードが、障害が発生する前にデプロイ済の状態だったこと。

  • 障害の発生したシャードが、ADD SHARD -REPLACEコマンドの実行時に停止していること。

  • ファスト・スタート・フェイルオーバー(デフォルトで有効)が有効になっている場合は、ファスト・スタート・フェイルオーバー・オブザーバが実行されていること。

Data Guard環境でのシャードの置換

プライマリがまだ使用可能な場合、ADD SHARD -REPLACEコマンドはスタンバイ・シャードを置き換える目的でのみ使用できます。障害が発生したプライマリ・シャードを置き換えるには、残りのいずれかのスタンバイがプライマリ・ロールに切り替わるまで待ってから、障害が発生したシャードを置き換えます。

切り替えができない(プライマリとすべてのスタンバイが停止している)場合は、プライマリから始めて、各メンバーに対してADD SHARD -REPLACEを実行する必要があります。これにより、白紙の状態から新しいブローカ構成が作成されます。

スタンバイが使用可能でないMAXPROTECTIONモードでは、保護モードを維持するためにプライマリ・データベースが停止します。この場合、スタンバイが使用可能でなければ、プライマリ・データベースをオープンできません。このシナリオで置換操作を処理するには、最初にデータベースをマウント・モードで起動し、DGMGRLを使用してData Guardの保護モードを(MAXAVAILABILITYまたはMAXPERFORMANCEに)ダウングレードする必要があります。保護モードを設定した後、プライマリ・データベースをオープンし、GDSCTLを使用して置換操作を実行します。置換操作の終了後は、DGMGRLを使用して保護モードを前のレベルに戻すことができます。

Data Guardでは構成のすべてのメンバーに同じDBIDを付ける必要があるため、Data Guard構成内のスタンバイを置き換える場合は、新しいデータベースのDBIDが古いDBIDと一致している必要があります。

例9-1 例1: 構成内にスタンバイがない場合のプライマリ・シャードの置換

次の例に示すように、初期構成には2つのプライマリ・シャードがデプロイされており、スタンバイはデプロイされていません。shdcは障害のシナリオで停止しているため、その可用性はダッシュ(-)で表示されています。

$ gdsctl config shard

Name    Shard Group    Status    State       Region    Availability
----    -----------    ------    -----       ------    ------------
shdb    dbs1           Ok        Deployed    east      ONLINE      
shdc    dbs1           Ok        Deployed    east      -   

リカバリするには、RMANなどを使用してバックアップからプライマリのレプリカを作成します。この例では、db_unique_name shddと接続文字列inst4を使用して新しいシャードが作成されています。これで、次のように古いシャードshdcを新しいシャードshardに置き換えることができます。

$ gdsctl add shard -replace shdc -connect inst4 -pwd password

DB Unique Name: SHDD

次のようにして構成を確認できます。

$ gdsctl config shard

Name     Shard Group      Status    State       Region    Availability
----     -----------      ------    -----       ------    ------------
shdb     dbs1             Ok        Deployed    east      ONLINE
shdd     dbs1             Ok        Deployed    east      ONLINE

例9-2 例2: スタンバイ・シャードの置換

構成にスタンバイ・シャードが含まれている場合は、プライマリ・シャードを置き換えることができないことに注意してください。このようなケースでプライマリに障害が発生した場合は、スタンバイのいずれかが自動切り替えによって新しいプライマリになった後で、置換操作を実行する必要があります。

初期構成には2つのシャードグループ(1つのプライマリと1つのスタンバイ)があり、それぞれに2つのシャードが含まれています。スタンバイshddが停止したときに、

$ gdsctl config shard

Name    Shard Group      Status    State       Region    Availability
----    -----------      ------    -----       ------    ------------
shdb    dbs1             Ok        Deployed    east      ONLINE
shdc    dbs1             Ok        Deployed    east      ONLINE
shdd    dbs2             Ok        Deployed    east      -
shde    dbs2             Ok        Deployed    east      READ ONLY

新しいスタンバイを作成します。プライマリが実行されているため、この操作はFOR STANDBYオプションを指定したRMAN DUPLICATEコマンドを使用して実行する必要があります。新しいスタンバイshdfの準備が完了したら、次のように古いシャードshddを置き換えます。

$ gdsctl add shard -replace shdd -connect inst6 -pwd password

DB Unique Name: shdf

次のようにして構成を確認できます。

$ gdsctl config shard

Name    Shard Group      Status    State       Region    Availability
----    -----------      ------    -----       ------    ------------
shdb    dbs1             Ok        Deployed    east      ONLINE
shdc    dbs1             Ok        Deployed    east      ONLINE
shde    dbs2             Ok        Deployed    east      READ ONLY
shdf    dbs2             Ok        Deployed    east      READ ONLY

一般的なエラー

ORA-03770: 不正なシャードが置換に指定されています

このエラーは、置換操作で指定されたシャードが元のシャードのレプリカでない場合にスローされます。具体的には、分散データベース・メタデータがこのシャードのシャード・カタログに格納されているメタデータと一致しません。データベースが(できればRMANを使用して)正しくコピーされたことを確認してください。これは包括的なチェックではありません。レプリカが正しく作成されたことを前提としています。

ORA-03768: 置換対象のデータベースがまだ稼働しています: shardc

add shard -replaceコマンドを実行するときは、置換対象のデータベースを停止する必要があります。GDSCTLコマンドconfig shardの出力で、これを確認してください。シャードに障害が発生したにもかかわらず、出力にONLINEと表示される場合は、しばらく(2分程度)待ってから再試行してください。

関連項目:

Oracle Database Global Data Services概要および管理ガイド(ADD SHARDコマンドの詳細)

物理スタンバイからスナップショット・スタンバイへの変換

分散データベースのレプリケーション方法としてOracle Data Guardを使用する場合、Oracle Globally Distributed Databaseでは、プライマリまたは物理スタンバイ・シャードの追加のみサポートします。新しいスタンバイを分散データベースに追加する場合、他のタイプのData Guardスタンバイ・データベースはサポートされません。

ただし、すでに分散データベースの一部であるシャードは、物理スタンバイからスナップショット・スタンバイに変換できます。

  1. GDSCTLコマンドSTOP SERVICEを使用して、シャードのすべてのグローバル・サービスを停止します。
  2. GDSCTLコマンドDISABLE SERVICEを使用して、シャードのすべてのグローバル・サービスを無効化します。
  3. Oracle Data Guardドキュメントの物理スタンバイ・データベースからスナップショット・スタンバイ・データベースへの変換に関する項で説明されている手順を使用して、スナップショット・スタンバイにシャードを変換します。

    この時点で、シャードは分散データベースの一部のままですが、シャーディング・キーを使用する接続を受け入れません。

データベースが物理スタンバイに逆変換される場合、グローバル・サービスを有効化して再開できます。シャードは分散データベースのアクティブなメンバーになります。

非PDBシャードのPDBへの移行

従来の単一インスタンス・データベースからOracleマルチテナント・アーキテクチャにシャードを移行する場合は、次のステップを実行してください。また、Oracle Database 21c以降のリリースにアップグレードする前に、マルチテナント・アーキテクチャに移行する必要があります。

  1. 既存の各非PDBシャードをバックアップして、新しいCDBと、その内部にPDBを作成します。
  2. CDB内のPDBに、各シャードをリストアします。
  3. GDSCTL ADD CDBコマンドを実行して、新しいCDBを追加します。
    GDSCTL> add cdb -connect cdb_connect_string -pwd gsmrootuser_password
  4. GDSCTL ADD SHARD -REPLACEコマンドに、PDBの接続文字列shard_connect_stringを指定して実行します。これにより、分散データベース・インフラストラクチャにシャードの古い場所を新しいPDBの場所に置き換えるように指示します。

    システム管理またはコンポジットのデータ分散の場合は、次に示すパラメータでADD SHARDを実行します。

    
    GDSCTL> add shard -replace db_unique_name_of_non_PDB -connect shard_connect_string -pwd gsmuser_password 
    -shardgroup shardgroup_name -cdb cdb_name
    

    ユーザー定義のデータ分散の場合は、コマンドの使用方法が若干異なります。

    GDSCTL> add shard -replace db_unique_name_of_non_PDB -connect shard_connect_string -pwd gsmuser_password 
    -shardspace shardspace_name -deploy_as db_mode -cdb cdb_name
    

Oracle Enterprise Manager Cloud Controlを使用したシャードの管理

Oracle Enterprise Manager Cloud Controlを使用してデータベース・シャードを管理できます

Cloud Controlを使用してシャードを管理するには、最初に検出する必要があります。各データベース・シャードはデータベース自体であるため、標準のCloud Controlデータベース検出プロシージャを使用できます。

シャードは、それぞれのシャードグループ内で管理されます。シャードを管理するには、最初に、管理するシャードを含むシャードグループに移動する必要があります。これは、「すべてのターゲット」ページまたは「グローバル分散データベース」ページから実行できます。

「シャードグループ」ページで、シャードグループ・ターゲット・ページの左上隅にある「シャードグループ」メニューを開き、「シャードの管理」を選択します。

図9-6 「シャードグループ」メニュー


「シャードの管理」での「シャードグループ」メニュー

要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。

次のトピックでは、Oracle Enterprise Manager Cloud Controlを使用したシャード管理について説明します。

シャードの検証

Oracle Globally Distributed Databaseデプロイに追加する前に、シャードを検証します。

Oracle Globally Distributed Databaseデプロイに追加する前に、Oracle Enterprise Manager Cloud Controlを使用してシャードを検証できます。デプロイメントした後にシャードを検証して、シャードのその後のライフサイクルでも設定が引き続き有効であることを確認することもできます。たとえば、ソフトウェアのアップグレード後に、既存のシャードを検証して、パラメータおよび構成が正しいことを確認できます。

Cloud Controlを使用してシャードを検証するには、Cloud Controlで監視している既存のターゲットである必要があります。

  1. 「シャードグループ」ページで、シャードグループ・ターゲット・ページの左上隅にある「シャードグループ」メニューを開き、「シャードの管理」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. 「シャードの管理」ページで、リストからシャードを選択して、「検証」をクリックします。
  4. 「OK」をクリックして、シャードを検証することを確認します。
  5. ページ上部にある「情報」ボックスのリンクをクリックして、シャードのプロビジョニング・ステータスを表示します。

シャード検証スクリプトが正常に実行されると、出力にレポートされるエラーを確認します。

プライマリ・シャードの追加

Oracle Enterprise Manager Cloud Controlを使用して、プライマリ・シャードをOracle Globally Distributed Databaseデプロイに追加できます。

Cloud Controlを使用してプライマリ・シャードを追加するには、Cloud Controlで監視されている既存のターゲットである必要があります。

ノート:

シャードを構成に追加する前に検証することをお薦めします。Cloud Controlを使用してシャードを検証するか(「シャードの検証」を参照)、またはSQL*Plusを使用してシャードに対してDBMS_GSM_FIX.validateShardプロシージャを実行します(「シャード・データベースの検証」を参照)。
  1. 「グローバル分散データベース」ターゲット・ページの左上隅にある「グローバル分散データベース」メニューを開き、「プライマリ・シャードの追加」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. 同じ操作でシャードを追加してデプロイするには、「分散データベースにすべてのシャードをデプロイ」を選択して、分散データベース構成に追加されたすべてのシャードをデプロイします。

    デプロイメント操作は、シャードの構成を検証し、最終構成ステップを実行します。シャードはデプロイ後にのみ使用できます。

  4. 「追加」をクリックします。
  5. 「シャードの詳細」ダイアログの「データベース」フィールドで、シャード・データベース・ターゲットを選択して、「選択」をクリックします。
  6. コンポジット・データ分散では、シャードを追加するシャード領域も選択できます。
  7. 任意の詳細設定を構成します。

    接続記述子(デフォルトのEnterprise Manager接続記述子を使用するか、「接続記述子」ボックスで別の接続記述子を指定できます)

    CPU使用率のしきい値(%)

    ディスクしきい値(ミリ秒)

  8. 「OK」をクリックします。
  9. 必要に応じてGSMUSER資格証明を入力し、「次」をクリックします。
  10. ADD SHARD操作が発生する時間を示し、「次」をクリックします。
    • 即時: 確認後にシャードがプロビジョニングされます

    • 後で: 隣接しているフィールドのカレンダ・ツールを使用して、シャードを追加するタイミングをスケジュールします

  11. 追加するシャードの構成を確認し、「送信」をクリックします。
  12. ページ上部にある「情報」ボックスのリンクをクリックして、シャードのプロビジョニング・ステータスを表示します。

前述の手順の「分散データベースにすべてのシャードをデプロイ」を選択しなかった場合、「シャードのデプロイ」の説明に従って、Oracle Globally Distributed Databaseデプロイメントにシャードをデプロイします。

スタンバイ・シャードの追加

Oracle Enterprise Manager Cloud Controlを使用して、スタンバイ・シャードを分散データベース・デプロイに追加します。

Cloud Controlを使用してスタンバイ・シャードを追加するには、データベースがCloud Controlで監視されている既存のターゲットである必要があります。

ノート:

デプロイに追加する前にシャードを検証することをお薦めします。Cloud Controlを使用してシャードを検証するか(「シャードの検証」を参照)、またはSQL*Plusを使用してシャードに対してDBMS_GSM_FIX.validateShardプロシージャを実行します(「シャード・データベースの検証」を参照)。
  1. 「グローバル分散データベース」ターゲット・ページの左上隅にある「グローバル分散データベース」メニューを開き、「スタンバイ・シャードの追加」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. 同じ操作でシャードを追加してデプロイするには、「分散データベースにすべてのシャードをデプロイ」を選択して、分散データベース構成に追加されたすべてのシャードをデプロイします。

    デプロイメント操作は、シャードの構成を検証し、最終構成ステップを実行します。シャードはデプロイ後にのみ使用できます。

  4. 「プライマリ・シャード」リストで、新しいシャード・データベースがスタンバイとして動作するプライマリ・シャードを選択します。
  5. 「スタンバイ・シャード」リストの上部にある「追加」をクリックします。
  6. 「シャードの詳細」ダイアログの「データベース」フィールドで、スタンバイ・シャードを選択します。
  7. シャードを追加するシャードグループを選択します。

    選択したプライマリのスタンバイがまだ含まれていないシャードグループのみ表示されます。

  8. 「OK」をクリックします。
  9. 必要に応じてGSMUSER資格証明を入力し、「次」をクリックします。
  10. ADD SHARD操作が発生する時間を示し、「次」をクリックします。
    • 即時: 確認後にシャードがプロビジョニングされます

    • 後で: 隣接しているフィールドのカレンダ・ツールを使用して、シャードを追加するタイミングをスケジュールします

  11. 追加するシャードの構成を確認し、「送信」をクリックします。
  12. ページ上部にある「情報」ボックスのリンクをクリックして、シャードのプロビジョニング・ステータスを表示します。

前述の手順の「分散データベースにすべてのシャードをデプロイ」を選択しなかった場合、「シャードのデプロイ」の説明に従って、デプロイメントにシャードをデプロイします。

シャードのデプロイ

Oracle Enterprise Manager Cloud Controlを使用して、デプロイに追加されているシャードをデプロイします。

  1. 「グローバル分散データベース」ターゲット・ページの左上隅にある「グローバル分散データベース」メニューを開き、「シャードのデプロイ」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. 「リバランスの実行」チェック・ボックスを選択して、シャードのデプロイ後に自動的にシャード間のデータを再配分します。

    チャンクをシャードに手動で移動する場合、このボックスの選択を解除します。

  4. 「送信」をクリックします。
  5. ページ上部にある「情報」ボックスのリンクをクリックして、シャードのプロビジョニング・ステータスを表示します。

シャードの編集

Oracle Enterprise Management Cloud Controlの「シャードの管理」ページで、シャードのCPU使用率のしきい値(%)、ディスクしきい値(ミリ秒)、ONSポート、SCANアドレス、接続記述子およびGSMUSERパスワードを更新できます。

  1. 「シャードグループ」ページで、シャードグループ・ターゲット・ページの左上隅にある「シャードグループ」メニューを開き、「シャードの管理」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. 「シャードの管理」ページで、リストからシャードを選択して、「編集」をクリックします。
  4. 「OK」をクリックして、「シャードの編集」ダイアログで行った変更を保存します。

シャードの削除

Oracle Enterprise Management Cloud Controlの「シャードの管理」ページで、分散データベース構成からシャードを削除できます。

  1. 「シャードグループ」ページで、シャードグループ・ターゲット・ページの左上隅にある「シャードグループ」メニューを開き、「シャードの管理」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. 「シャードの管理」ページで、リストからシャードを選択して、「削除」をクリックします。

    「強制」オプションを使用して、指定したシャードにアクセスできないか、チャンクが含まれていても、そのシャードを削除します。このオプションを使用すると、特定の範囲のデータについて、レプリカの数が少なくなったり、完全に利用できなくなる可能性があります。

  4. 「OK」をクリックして、シャードを削除することを確認します。