シャード管理
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ソフトウェアをシャード・ホスト・システムにインストールし、プライマリおよびスタンバイの各シャードに新しいデータベースを構成する必要があります。詳細は、リンク先のトピックを参照して、次のステップに従ってください。
タスク2: シャード・データベースの検証
シャード・データベースを検証して、すべてのシャード・データベース要件を満たしていることを確認します。
- SQL*Plusを使用する場合、「シャード・データベースの検証」
- Enterprise Managerを使用する場合、「シャードの検証」
タスク3: 構成へのシャード・データベースの追加
各プライマリおよびスタンバイ・シャードを分散データベース構成に追加します。
- GDSCTLを使用する場合、「シャードCDBの追加」および「シャードPDBの追加」
- Enterprise Managerを使用する場合、「プライマリ・シャードの追加」および「スタンバイ・シャードの追加」
タスク4: 更新された分散データベース構成のデプロイ
最後のタスクは、追加した新しいシャードとそのスタンバイを使用して、更新された分散データベース構成をデプロイすることです。
- GDSCTLを使用する場合、「構成のデプロイ」
- Enterprise Managerを使用する場合、「シャードのデプロイ」
Enterprise Manager分散データベース管理ツールを使用すると、オプションで、1つのステップでシャードを追加してデプロイできます。ただし、シャードを構成に追加するときにデプロイしない場合は、この手順を使用してデプロイします。
プールからのシャードの削除
シャードにあるデータを失うことなく、分散データベース環境からシャードを一時的または永続的に削除することが必要となる場合があります。
たとえば、忙しい休日の後に分散データベース環境がスケール・ダウンされる場合、またはデータ・センター内のサーバーまたはインフラストラクチャを交換する場合、シャードの削除が必要となることがあります。シャードを削除する前に、すべてのチャンクをそのシャードからオンラインの状態に維持される他のシャードに移動する必要があります。それらを移動するときは、すべてのシャード間でデータおよびアクティビティのバランスが維持されるようにします。
シャードを一時的に削除するだけの場合は、保守が完了した後に簡単に識別して元に戻すことができるように、各シャードに移動したチャンクを追跡します。
シャードが集中自動バックアップ用に構成された分散データベースの一部である場合は、分散データベース構成からシャードを削除する前に、データベースからバックアップ・アーティファクトを削除できます。シャードからのバックアップ構成の削除を参照してください。
GDSCTLまたはOracle Enterprise Manager Cloud Controlを使用して、シャードを削除できます。
-
GDSCTL REMOVE SHARD
コマンドの使用方法の詳細は、Oracle Database Global Data Services概要および管理ガイドを参照してください - 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スタンバイ・データベースはサポートされません。
ただし、すでに分散データベースの一部であるシャードは、物理スタンバイからスナップショット・スタンバイに変換できます。
データベースが物理スタンバイに逆変換される場合、グローバル・サービスを有効化して再開できます。シャードは分散データベースのアクティブなメンバーになります。
非PDBシャードのPDBへの移行
従来の単一インスタンス・データベースからOracleマルチテナント・アーキテクチャにシャードを移行する場合は、次のステップを実行してください。また、Oracle Database 21c以降のリリースにアップグレードする前に、マルチテナント・アーキテクチャに移行する必要があります。
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で監視している既存のターゲットである必要があります。
- 「シャードグループ」ページで、シャードグループ・ターゲット・ページの左上隅にある「シャードグループ」メニューを開き、「シャードの管理」を選択します。
- 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
- 「シャードの管理」ページで、リストからシャードを選択して、「検証」をクリックします。
- 「OK」をクリックして、シャードを検証することを確認します。
- ページ上部にある「情報」ボックスのリンクをクリックして、シャードのプロビジョニング・ステータスを表示します。
シャード検証スクリプトが正常に実行されると、出力にレポートされるエラーを確認します。
プライマリ・シャードの追加
Oracle Enterprise Manager Cloud Controlを使用して、プライマリ・シャードをOracle Globally Distributed Databaseデプロイに追加できます。
Cloud Controlを使用してプライマリ・シャードを追加するには、Cloud Controlで監視されている既存のターゲットである必要があります。
ノート:
シャードを構成に追加する前に検証することをお薦めします。Cloud Controlを使用してシャードを検証するか(「シャードの検証」を参照)、またはSQL*Plusを使用してシャードに対してDBMS_GSM_FIX.validateShard
プロシージャを実行します(「シャード・データベースの検証」を参照)。
前述の手順の「分散データベースにすべてのシャードをデプロイ」を選択しなかった場合、「シャードのデプロイ」の説明に従って、Oracle Globally Distributed Databaseデプロイメントにシャードをデプロイします。
スタンバイ・シャードの追加
Oracle Enterprise Manager Cloud Controlを使用して、スタンバイ・シャードを分散データベース・デプロイに追加します。
Cloud Controlを使用してスタンバイ・シャードを追加するには、データベースがCloud Controlで監視されている既存のターゲットである必要があります。
ノート:
デプロイに追加する前にシャードを検証することをお薦めします。Cloud Controlを使用してシャードを検証するか(「シャードの検証」を参照)、またはSQL*Plusを使用してシャードに対してDBMS_GSM_FIX.validateShard
プロシージャを実行します(「シャード・データベースの検証」を参照)。
前述の手順の「分散データベースにすべてのシャードをデプロイ」を選択しなかった場合、「シャードのデプロイ」の説明に従って、デプロイメントにシャードをデプロイします。
シャードの編集
Oracle Enterprise Management Cloud Controlの「シャードの管理」ページで、シャードのCPU使用率のしきい値(%)、ディスクしきい値(ミリ秒)、ONSポート、SCANアドレス、接続記述子およびGSMUSER
パスワードを更新できます。
- 「シャードグループ」ページで、シャードグループ・ターゲット・ページの左上隅にある「シャードグループ」メニューを開き、「シャードの管理」を選択します。
- 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
- 「シャードの管理」ページで、リストからシャードを選択して、「編集」をクリックします。
- 「OK」をクリックして、「シャードの編集」ダイアログで行った変更を保存します。