日本語PDF

9 シャード・データベースの管理

Oracle Shardingは、シャード・データベースの管理のためのツールおよびいくつかの自動化を提供しています。

次のトピックでは、シャード・データベースの管理についてさらに詳しく説明します。

シャーディング対応スタックの管理

この項では、シャード・データベース構成内のコンポーネントの起動および停止について説明します。次の項目が含まれます。

シャーディング対応タックの起動

シャーディング対応スタックの推奨される起動順序は次のとおりです。

  • シャード・カタログ・データベースとローカル・リスナーを起動します。

  • シャード・ディレクタ(GSM)を起動します。

  • シャード・データベースとローカル・リスナーを起動します。

  • グローバル・サービスを起動します。

  • 接続プールとクライアントを起動します。

シャーディング対応スタックの停止

シャーディング対応スタックの推奨される停止手順は次のとおりです。

  • 接続プールとクライアントを停止します。

  • グローバル・サービスを停止します。

  • シャード・データベースとローカル・リスナーを停止します。

  • シャード・ディレクタ(GSM)を停止します。

  • シャード・カタログ・データベースとローカル・リスナーを停止します。

Oracle Shardingデータベース・ユーザーの管理

この項では、Oracle Shardingに固有のデータベース・ユーザーについて説明します。次の項目が含まれます。

GSMUSERアカウントについて

GSMUSERアカウントは、GDSCTLおよびグローバル・サービス・マネージャがGDS構成のデータベースに接続するために使用されます。

GSMUSERは、デフォルトでOracleデータベースに存在します。Oracle Sharding構成では、このアカウントはプール・データベースのかわりにシャードへの接続に使用され、アカウントがロック解除された後、SYSDGおよびSYSBACKUPシステム権限の両方を付与する必要があります。

GSMUSERアカウントに指定されたパスワードは、gdsctl add shardコマンドで使用されます。新しいシャードでGSMUSERにSYSDGおよびSYSBACKUPを付与しないと、gdsctl add shardがORA-1031: 権限が不足していますのエラーで失敗します。

gdsctl create shardコマンドを使用してDatabase Configuration Assistant (DBCA)で新しいシャードを作成すると、デプロイメント・プロセス中にGSMUSERアカウントに自動的にSYSDG権限とSYSBACKUP権限が付与され、ランダム・パスワードが割り当てられます。GSMUSERアカウントは対話的にログインする必要がないため、管理者がパスワードの値を認識する必要はありません。ただし、シャードでalter user SQLコマンドをgdsctl modify shard -pwdコマンドと組み合せて使用すると、必要に応じてパスワードを変更できます。

関連項目:

Global Data Services概要および管理ガイドシャードの追加

GSMROOTUSERアカウントについて

GSMROOTUSERは、プラガブル・データベース(PDB)シャードが存在する場合にのみ使用されるOracle Shardingに固有のデータベース・アカウントです。アカウントは、GDSCTLおよびグローバル・サービス・マネージャがコンテナ・データベース(CDB)のルート・コンテナに接続して管理タスクを実行するために使用されます。

PDBシャードが使用されていない場合、GSMROOTUSERユーザーはロック解除されず、どのデータベースでもパスワードを割り当てられません。ただし、PDBシャードを含むシャード構成では、gdsctl add cdbコマンドを実行する前に、GSMROOTUSERをロック解除し、SYSDGおよびSYSBACKUP権限を付与する必要があります。GSMROOTUSERアカウントのパスワードは、CDBのルート・コンテナ内でalter user SQLコマンドをgdsctl modify cdb -pwdコマンドと組み合せて使用することで、デプロイメント後に必要に応じて変更できます。

関連項目:

Global Data Services概要および管理ガイドcdbの追加

シャード・データベースのバックアップおよびリカバリ

シャードは個別のOracleデータベースでホストされるため、Oracle Maximum Availabilityのベスト・プラクティスを使用してシャードを個別にバックアップおよびリストアできます。

SDBの高可用性のためにData GuardおよびOracle Active Data Guardを使用している場合は、プライマリ・データベースまたはスタンバイ・データベースをオフラインにする前に、オブザーバをオフラインにして、ファスト・スタート・フェイルオーバーを無効にします。

災害が発生した場合にシャードをリカバリするための具体的なステップについては、Oracleサポートにお問合せください。

関連項目:

MAAベスト・プラクティス・ホワイト・ペーパーについては、Oracle Maximum Availabilityアーキテクチャを参照してください

シャード・データベース・スキーマの変更

シャード・データベースの重複表またはシャード表を変更する場合、それらの変更はシャード・カタログ・データベースから行う必要があります。

シャード・データベースに対してDDL操作を実行する前に、次のコマンドを使用してSHARD DDLを有効にします。

ALTER SESSION ENABLE SHARD DDL; 

この文は、DDLによる変更がシャード・データベース内の各シャードに伝播されるようにします。

伝播されるDDLによる変更は、ALTER TABLEなどの操作が含まれる"スキーマ関連"として定義されているコマンドです。各シャードに伝播される他の操作には、ユーザー管理を簡略化するためのCREATE、ALTER、DROPユーザー・コマンド、複数のシャードでの表領域の作成を簡略化するためのTABLESPACE操作などがあります。

GRANTおよびREVOKE操作はシャード・カタログから行うことができ、セッションでSHARD DDLを有効にしている場合は各シャードに伝播されます。より細かい制御が必要な場合は、各シャードに対してコマンドを直接発行できます。

DBMSパッケージ・コール(または同様の操作)などの操作は伝播されません。たとえば、シャード・カタログで統計を収集する操作は各シャードに伝播されません。

表に対するロックを必要とする操作(NOT NULL列の追加など)を実行する場合、DDL操作を実行するには各シャードで表に対するロックを取得する必要があることに留意することが重要です。単一インスタンスにDDLを適用するためのOracleのベスト・プラクティスがシャード環境に適用されます。

シャード・カタログで実行されるマルチシャード問合せは、各シャードのデータベース接続でリモート問合せを発行します。この場合、問合せによってそのシャードからデータを返されるかどうかにかかわらず、ユーザーが各シャードに対する適切な権限を持つようにすることが重要です。

関連項目:

重複表およびシャード表に使用する操作の詳細は、Oracle Database SQL言語リファレンスを参照してください

シャード間のパラメータ設定の伝播

シャード・カタログでシステム・パラメータ設定を構成すると、シャード・データベースのすべてのシャードに自動的に伝播されます。

Oracle Database 19cより前は、シャード・データベースの各シャードでALTER SYSTEMパラメータ設定を構成する必要がありました。Oracle Database 19cでは、Oracle Shardingはシャード・カタログでパラメータを設定できるようにすることで集中管理を提供します。その後、設定はシャード・データベースのすべてのシャードに自動的に伝播されます。

システム・パラメータの伝播は、シャード・カタログに対してENABLE SHARD DDLで行われた場合にのみ発生します。その後、ALTER文にSHARD=ALLを含めます。

SQL>alter session enable shard ddl;
SQL>alter system set enable_ddl_logging=true shard=all;

ノート:

enable_goldengate_replicationパラメータ設定の伝播はサポートされていません。

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

単一インスタンスのレガシー・データベースからOracleマルチテナント・アーキテクチャにシャードを移行する場合は、次のステップを実行してください。

  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パッチの適用は、単一のシャードまたはすべてのシャードに対して行うことができます。ただし、使用する方法は、その環境で使用されているレプリケーション・オプションおよび適用されるパッチのタイプによって異なります。

Oracle Shardingでは統合パッチ適用を使用してシャード・ディレクタ(GSM)のORACLE_HOMEを更新するため、Oracle Databaseリリース更新をORACLE_HOMEに適用してセキュリティおよびグローバル・データ・サービスの修正を取得する必要があります。

シャード・データベースへのパッチ適用

ほとんどのパッチは、単一のシャードに一度に適用できます。ただし、一部のパッチはすべてのシャードに適用する必要があります。シャード・データベースで使用されているレプリケーション方法に留意して、非シャード・データベースの場合と同様に、Oracleのベスト・プラクティスを使用して単一のシャードにパッチを適用します。Oracleのopatchautoは、複数のシャードに一度にパッチを適用するために使用でき、ローリング形式で行うことができます。Data Guard構成は1つずつ適用され、場合によっては(パッチによって異なります) Standby Firstパッチ適用を使用できます。

Oracle GoldenGateを使用する場合は、必ずシャード領域全体で並列にパッチを適用してください。パッチがマルチシャード問合せ、レプリケーションまたはシャーディング・インフラストラクチャの問題に対処するものである場合は、シャード・データベース内のすべてのシャードに適用する必要があります。

ノート:

Oracle ShardingのOracle GoldenGateレプリケーション・サポート高可用性は、Oracle Database 21cでは非推奨です。

シャード・データベースへのアップグレード

Oracle Sharding環境のアップグレードは、他のOracle Databaseとグローバル・サービス・マネージャの環境のアップグレードと大きな違いはありません。ただし、コンポーネントを特定の順序(最初にシャード・カタログ、次にシャード・ディレクタ、最後にシャードの順)でアップグレードする必要があります。

関連項目:

Oracle OPatchユーザーズ・ガイド

Oracle Database Global Data Services概要および管理ガイド(シャード・ディレクタのアップグレードの詳細)

Oracle Data Guard概要および管理(Oracle Data Guard構成内のパッチ適用およびアップグレードの詳細)

シャード・データベースのコンポーネントのアップグレード

コンポーネントが停止してオンライン状態に戻る際の停止時間を制限し、エラーを回避するためには、シャード・データベースのコンポーネントをアップグレードする順序が重要です。

シャード・データベースのコンポーネントをアップグレードするときは、次の点に注意する必要があります。

  • 保留中のMOVE CHUNK操作が進行中の場合は、完了してください。

  • 新しいMOVE CHUNK操作を開始しないでください。

  • アップグレード・プロセス中に新しいシャードを追加しないでください。

  1. 次の点に注意しながら、シャードをアップグレードします。
    • システム管理のシャード・データベースの場合: Data Guard Broker構成内のシャードの各セットをローリング方式でアップグレードします。

    • ユーザー定義のシャード・データベースの場合: シャード領域内のシャードの各セットをローリング方式でアップグレードします。

    • コンポーネント・シャード・データベースの場合: 特定のシャード領域で、Data Guard Broker構成内のシャードの各セットをローリング方式でアップグレードします。

    • プラガブル・データベース(PDB)シャードを含むOracle Database 18cシャード・データベース構成をアップグレードする場合は、Oracle Database 18cからの互換性と移行のPDB固有のアップグレード手順に従います。
  2. シャード・カタログ・データベースをアップグレードします。

    最高の結果を得るには、ローリング・データベース・アップグレードを使用してカタログをアップグレードする必要があります(ただし、カタログが使用できない場合、アップグレード中にグローバル・サービスは引き続き使用可能ですが、サービス・フェイルオーバーは発生しません)。

  3. GDSCTLクライアントを実行するために使用されるシャード・ディレクタをアップグレードします(グローバル・サービス・マネージャ・サーバーは実行しません)。

    シャード・ディレクタのアップグレードはインプレースで実行する必要がありますが、次のプラットフォームの各ファイルに対するアクセス権が755に更新されていない場合、インプレース・アップグレードによって間違ったエラー・メッセージが表示されます。

    • Linux、Solaris64およびSolaris Sparc64の場合:

      $ORACLE_HOME/QOpatch/qopiprep.bat
      $ORACLE_HOME/jdk/bin/jcontrol
      $ORACLE_HOME/jdk/jre/bin/jcontrol
    • AIXの場合:

      $ORACLE_HOME/QOpatch/qopiprep.bat
      $ORACLE_HOME/jdk/jre/bin/classic/libjvm.a
      $ORACLE_HOME/jdk/bin/policytool
    • HPIの場合:

      $ORACLE_HOME/jdk/jre/lib/IA64N/server/Xusage.txt
      $ORACLE_HOME/jdk/jre/bin/jcontrol
      $ORACLE_HOME/QOpatch/qopiprep.bat
    • Windowsでは、エラー・メッセージは予期されません。

  4. すべてのシャード・ディレクタ・サーバーを一度に1つずつ停止、アップグレードおよび再起動します。

    停止時間をゼロにするには、1つ以上のシャード・ディレクタ・サーバーが常に稼働している必要があります。カタログより前のバージョンのシャード・ディレクタ・サーバーは、カタログに変更が発生するまで完全に動作し続けます。

関連項目:

DBMS_ROLLINGを使用してローリング・アップグレードを実行する方法の詳細は、Oracle Data Guard概要および管理を参照してください。

Oracle Data Guard概要および管理(Oracle Data Guard構成内のデータベースのパッチ適用およびアップグレードの詳細)

シャード・データベースのダウングレード

Oracle Shardingはダウングレードをサポートしていません。

シャード・データベース・カタログおよびシャードはダウングレードできません。

Oracle Database 18cからの互換性と移行

特定のCDBに単一のPDBシャードを含むOracle Database 18cインストールからアップグレードする場合、PDBのシャード・カタログ・メタデータを更新する必要があります。

具体的には、18cのPDBシャードの名前はCDBのDB_UNIQUE_NAMEですが、Oracle Database 19cのシャード名はdb_unique_name_of_CDB_pdb_nameです。

カタログ・メタデータを更新してこの新しいネーミング方法を反映し、GSMROOTUSERアカウントについての説明に従って新しいGSMROOTUSERアカウントもサポートするには、シャード・データベース・コンポーネントのアップグレードの説明に従って、アップグレード・プロセス中に次のステップを実行します。

  1. PDBシャードを含むCDBをアップグレードした後、GSMROOTUSERアカウントが存在し、ロック解除され、パスワードが割り当てられ、SYSDGSYSBACKUPおよびgsmrootuser_role権限が付与されていることを確認します。

    SQL*Plusの次のSQL文は、CDBのルート・コンテナ(CDB$ROOT)への接続中にGSMROOTUSERを正常に設定します。

    SQL> alter session set "_oracle_script"=true;
    Session altered.
         
    SQL> create user gsmrootuser;
    User created.
    
    SQL> alter user gsmrootuser identified by new_GSMROOTUSER_password
      account unlock;
    User altered.
    
    SQL> grant sysdg, sysbackup, gsmrootuser_role to gsmrootuser container=current;
    Grant succeeded.
    
    SQL> alter session set "_oracle_script"=false;
    Session altered.
  2. カタログ・データベースを目的のOracle Databaseバージョンにアップグレードした後、次のPL/SQLプロシージャを実行して、構成に存在するPDBシャードの新しい名前を反映するようにカタログ・メタデータを更新します。

    このプロシージャは、Oracle Database 18cのPDBシャードごとに実行する必要があります。

    pdb_fixupの最初のパラメータは、PDBシャードを含むCDBのdb_unique_nameの値です。Oracle Database 18cでは、gdsctl config shardで示されるシャード名と同じです。

    2番目のパラメータはシャードPDBのPDB名で、シャードPDBへの接続時にSQL*Plusのshow con_nameによって示されます。

    pdb_fixupプロシージャは、カタログ・メタデータを更新して、PDBシャードの新しいネーミング・メソッドに対応させます。

    SQL> connect sys/password as sysdba
    Connected.
    SQL> set serveroutput on
    SQL> execute gsmadmin_internal.dbms_gsm_pooladmin.pdb_fixup('cdb1', 'pdb1');
  3. すべてのシャード・ディレクタを目的のバージョンにアップグレードした後、構成内の各CDBに対して次のGDSCTLコマンドを実行し、各CDBのGSMROOTUSERのパスワードをシャード・ディレクタに通知します。
    GDSCTL> modify cdb -cdb CDB_name -pwd new_GSMROOTUSER_password

Enterprise Manager Cloud ControlによるOracleシャード・データベースの管理

Oracle Enterprise Manager Cloud Controlを使用すると、シャード・データベースとそのコンポーネントを検出、監視および管理できます。

Enterprise Manager Cloud Controlを使用したシャード・データベースの検出、監視および管理の詳細は、次のトピックを参照してください。

前提条件: シャード・データベース・メトリックの有効化

デフォルトでは、シャード・データベースのパフォーマンス・メトリックは無効になっています。これはEnterprise Manager Cloudコンソールまたはモニタリング・テンプレートから有効にできます。

メトリックを収集する方法は2つあります。これらの方法を実行するには、次の各項で説明するように、様々な設定ステップに従う必要があります。

デフォルトのEnterprise Managerデータベース・メトリックの使用

デフォルトでEnterprise Manager Cloudコンソールの「シャードされたデータベース」ページに表示されるメトリックはデフォルトのデータベース・メトリックであり、メトリック問合せユーザーを作成する必要があります。これは、Enterprise Managerで検出されたシャード・データベースでのみ収集されます。

デフォルトのデータベース・メトリックでは、後述する拡張シャード・データベース・メトリックほど、頻繁にデータが提供されません。

マルチシャード問合せはメトリックの収集に使用されるため、シャード・データベース内のすべてのシャードにアクセスして問合せを実行できるユーザーも作成する必要があります。

デフォルト・メトリックを使用するには:

  1. シャード間の問合せを実行する権限をユーザーに付与します。

    alter session enable shard ddl;
  2. すべてのシャードおよびシャード・カタログに新しいメトリック問合せアカウントを手動で作成します。

    create user SHARD_SYS identified by password;
    grant connect, create session, gsmadmin_role to SHARD_SYS;
    GRANT ALL PRIVILEGES TO SHARD_SYS; /*Needed to get all the schemas stats*/
    GRANT SELECT ANY DICTIONARY TO SHARD_SYS; /*Needed to get all the schemas stats*/
  3. 同じメトリック問合せアカウント資格証明を使用して、Enterprise Managerのシャード・カタログおよびすべてのシャード・データベースを検出します。

    「前提条件: シャードされたデータベース・トポロジの検出」を参照してください

  4. デフォルト・メトリックを有効にするには:

    $emctl set property
     -sysman_pwd password
     -name oracle.sysman.db.ha.sdb.dd.usesdbmetrics
     -value false 

拡張シャード・データベース・メトリックの使用

シャード・データベースの拡張メトリックを使用すると、シャードに関する情報をシャード・カタログから収集できるため、Enterprise Manager内のすべてのシャード・データベースを検出して、シャード・データベース・トポロジの完全なメトリックを取得する必要はありません。

拡張メトリックを使用するには:

  1. Enterprise Managerでシャード・カタログを検出します。

    「前提条件: シャードされたデータベース・トポロジの検出」を参照してください

  2. コンソールまたはモニタリング・テンプレートを使用して、シャード・データベース・メトリックを有効にします。

    $emctl set property
     -sysman_pwd password
     -name oracle.sysman.db.ha.sdb.dd.usesdbmetrics
     -value true

シャード・データベースのコンポーネントの検出

Enterprise Manager Cloud Controlでは、シャード・カタログおよびシャード・データベースを検出し、ガイドされた検出を使用してシャード・ディレクタ、シャード・データベース、シャード領域およびシャードグループを追加できます。

Cloud Controlでシャード・データベースを管理する前提条件として、まずシャード・ディレクタ・ホストおよびシャード・カタログ・データベースを少なくとも検出する必要があります。必要に応じて、シャード・データベース内のすべてのシャードを管理するために、シャード・データベースも検出する必要があります。

シャード・カタログ・データベースおよび各シャードはデータベースそのものであるため、標準のデータベース検出プロシージャを使用できます。

シャードの管理は、データベース検出を使用して個々のシャードを検出する場合のみ可能です。シャードの検出は、シャードなしのシャード・データベース構成にすることもできるため、シャード・データベースの検出ではオプションです。

  1. Enterprise Manager Cloud Controlで「設定」「ターゲットの追加」「ターゲットの手動追加」の順に選択します。
  2. 「ターゲットの手動追加」ページで、「ガイド付きプロセスを使用して非ホスト・ターゲットを追加」パネルで「ガイド付きプロセスを使用した追加」をクリックします。
  3. 「ガイド付きプロセスを使用した追加」ダイアログで、「シャードされたデータベース」を探して選択し、「追加」をクリックします。
  4. 「シャードされたデータベースの追加: カタログ・データベース」ページで、「カタログ・データベース」の横にある参照アイコンをクリックしてシャード・カタログ・データベースを探します。
  5. 「ターゲットの選択」ダイアログで、カタログ・データベースに対応するターゲット名をクリックし、「選択」をクリックします。

    「カタログ・データベース」フィールドと「モニタリング資格証明」フィールドは、存在する場合、自動入力されます。モニタリング資格証明は、シャード・カタログ・データベースに問い合せて構成情報を取得する場合に使用されます。

    モニタリング・ユーザー(通常はDBSNMP)は、GDS_CATALOG_SELECTロールが付与され、シャード・カタログ・リポジトリ表に対して読取り専用権限があります。

    SQL> grant GDS_CATALOG_SELECT to dbsnmp;

    「次へ」をクリックして次のステップに進みます。

    「シャードされたデータベースの追加: コンポーネント」ページには、シャード・データベース名、ドメイン名、シャード・データベースで採用されているシャーディング方法、検出されたシャード・ディレクタのリストなど、カタログ・データベースで管理されるシャード・データベースに関する情報が表示されます。

  6. モニタリング資格証明をシャード・ディレクタに設定するには、リスト・エントリの右側にあるプラス記号アイコンをクリックします。

    ダイアログが開き、資格証明を設定できます。

    「OK」をクリックしてダイアログを閉じ、「次」をクリックして次のステップに進みます。

  7. 「シャードされたデータベースの追加: 確認」ページで、シャード・ディレクタ、シャード領域およびシャードグループがすべて検出されたことを確認します。
  8. 「発行」をクリックして、ステップを終了します。

    Enterprise Managerデプロイメント・プロシージャが発行され、「ターゲットの手動追加」ページに戻ります。

    ページ上部に、検出されたすべてのコンポーネントをCloud Controlに追加するために発行されたスクリプトに関する情報が表示されます。

  9. リンクをクリックして、シャード・データベースのコンポーネントのプロビジョニング・ステータスを表示します。

    別のブラウザ・ウィンドウで、Cloud Controlの「すべてのターゲット」ページに移動してシャード・データベースのステータスを監視できます。

ターゲット検出プロシージャが終了すると、シャード・データベース・ターゲットがCloud Controlに追加されます。Cloud Controlでシャード・データベースを開き、コンポーネントを監視および管理できます。

Oracle Enterprise Manager Cloud Controlによるシャード・データベースの管理の概要

シャード・データベースは、Oracle Enterprise Manager Cloud Controlを使用して構成、デプロイ、監視および管理できます

検出されたシャード・データベース・オブジェクトは、Enterprise Managerの「すべてのターゲット」ページで確認できます。

次に示すのは、「データベース」ターゲット・タイプ・カテゴリのOracle Shardingオブジェクトのシャード・ディレクタおよびシャード・データベースです。


ターゲット・タイプ・データベースのOracle Shardingターゲット

次に、「グループ」、「システムとサービス」ターゲット・タイプ・カテゴリのOracle Shardingオブジェクトのシャードグループおよびシャード領域を示します。


「グループ」、「システムとサービス」ターゲット・タイプ・カテゴリ

「シャードされたデータベース」ページでは、次に示すように、「プライマリ・シャードの追加」、「スタンバイ・シャードの追加」および「シャードのデプロイ」など、「シャードされたデータベース」メニューからほとんどの管理ツールにアクセスできます。


「シャードされたデータベース」メニュー

他のシャード・データベース・オブジェクトの管理ツールは、他のシャード・データベース・オブジェクト・ページのメニューにあります。このメニューは、これらのページにアクセスする必要がある手順で説明されています。

シャード・データベースの監視

Enterprise Manager Cloud ControlまたはGDSCTLを使用して、シャード・データベースを監視できます。

Enterprise Manager Cloud ControlまたはGDSCTLを使用してシャード・データベースを監視するには、次の各トピックを参照してください。

シャード間のシステム・オブジェクトの問合せ

SHARDS()句を使用して、V$ビューとDBA_*ビューからパフォーマンス、診断および監査データを収集するためにOracle提供の表を問い合せることができます。

SQLのSHARDS()句を使用して、シャード・カタログ・データベースを一元化された診断操作のエントリ・ポイントとして使用できます。SHARDS()句を使用して、すべてのシャードに対して同じOracle提供オブジェクト(V$、DBA/USER/ALLビュー、ディクショナリ・オブジェクトおよび表など)を問い合せ、集計結果を返すことができます。

次の例に示すように、SELECT文のFROM部分のオブジェクトをSHARDS()句でラップすることにより、これがローカル・オブジェクトに対する問合せではなく、シャード・データベース構成内のすべてのシャード上のオブジェクトに対する問合せであることを指定します。結果に含まれるすべての行のソースを示すため、マルチシャード問合せの実行時にSHARD_IDという名前の仮想列がSHARDS()でラップされたオブジェクトに自動的に追加されます。同じ列を、問合せをプルーニングするための述語で使用できます。

SHARDS()句を含む問合せは、シャード・カタログ・データベースに対してのみ実行できます。

次の文は、パフォーマンス・ビューを問い合せます。

SQL> SELECT shard_id, callspersec FROM SHARDS(v$servicemetric)
 WHERE service_name LIKE 'oltp%' AND group_id = 10;

次の文は、統計情報を収集します。

SQL> SELECT table_name, partition_name, blocks, num_rows
 FROM SHARDS(dba_tab_partition) p
 WHERE p.table_owner= :1;

次の例の文は、各シャードのSHARD_ID値を見つける方法を示しています。

SQL> select ORA_SHARD_ID, INSTANCE_NAME from SHARDS(sys.v_$instance);

    ORA_SHARD_ID INSTANCE_NAME
    ------------ ----------------
               1 sh1
              11 sh2
              21 sh3
              31 sh4

次の例の文は、SHARD_IDを使用して問合せをプルーニングする方法を示しています。

SQL> select ORA_SHARD_ID, INSTANCE_NAME
 from SHARDS(sys.v_$instance)
 where ORA_SHARD_ID=21;

    ORA_SHARD_ID INSTANCE_NAME
    ------------ ----------------
              21 sh3

関連項目:

Oracle Database SQL言語リファレンス(SHARDS()句の詳細)

GDSCTLによるシャード・データベースの監視

個別のシャード、シャードグループ、シャード領域およびシャード・ディレクタのヘルス・ステータスを取得するために使用できる多数のGDSCTL CONFIGコマンドがあります。

シャードの監視は通常のデータベースの監視と同様であり、標準のOracleのベスト・プラクティスを使用して、単一のシャードの個別の状態を監視してください。ただし、シャード環境全体の状態を監視することも重要です。GDSCTLコマンドは、スクリプトに記述し、スケジューラを使用して定期的に実行することによって、すべてが円滑に実行されていることを確認することもできます。レプリケーションにOracle GoldenGateを使用している場合は、各レプリケーション・ストリームのラグを監視することも重要です。

関連項目:

GDSCTL CONFIGコマンドの使用方法の詳細は、Oracle Database Global Data Services概要および管理ガイドを参照してください

Enterprise Manager Cloud Controlによるシャード・データベースの監視

シャード・データベース・ターゲットは、Enterprise Manager Cloud Controlの「すべてのターゲット」ページにあります。

シャード・データベースのコンポーネントを監視するには、まず統計収集を有効にしてから、シャード・データベースを検出する必要があります。詳細は、「前提条件: シャード・データベース・メトリックの有効化」および「シャード・データベース・コンポーネントの検出」を参照してください。

シャード・データベースのホーム・ページ

シャード・データベースのターゲット・ホーム・ページには、シャード・データベースのコンポーネントとそのステータスの概要が表示されます。

サマリー

ページの左上にある「サマリー」ペインには、次の情報が表示されます。

  • シャードされたデータベース名: シャードされたデータベース名

  • シャードされたデータベースのドメイン名: シャード・データベース・ドメイン名

  • カタログ・データベース: シャード・カタログ・データベース名。名前をクリックすると、シャード・カタログ・データベースの詳細を表示できます。

  • カタログのバージョン: シャード・カタログのOracle Databaseバージョン

  • シャーディング・タイプ: データベースのシャードに使用されるシャーディング方法。これは、システム管理、ユーザー定義またはコンポジットのいずれかです。

  • レプリケーション・タイプ: 高可用性に使用されるレプリケーション・テクノロジ。

  • シャード・ディレクタ: シャード・ディレクタの数とステータス

  • マスター・シャード・ディレクタ: マスター・シャード・ディレクタ名。シャード・ディレクタ名をクリックすると、シャード・ディレクタ(グローバル・サービス・マネージャ)のバージョン、現在のステータス、使用されているポートおよびインシデントなど、マスター・シャード・ディレクタに関する詳細情報を表示できます。

メンバー

ページの右上にある「メンバー」ペインには、シャードされた各データベース・コンポーネントの関連情報の一部が表示されます。

このペインは、各コンポーネントのタブ(シャード領域、シャードグループ、シャード・ディレクタ、シャード、カタログ・データベース、グローバル・サービス)に分かれています。各種コンポーネントの情報を表示するには、タブをクリックします。

  • シャード領域:

    シャード領域は、ユーザー定義またはコンポジット・シャーディング方法でシャードされたデータベースに対してのみ表示されます。

    「シャード領域」タブには、シャード領域名、ステータス、チャンク数および保護モードが表示されます。シャード領域名をクリックすると、選択したシャード領域の詳細を表示できます。

    シャード領域名をクリックすると、シャード領域内のシャードグループに関する情報(コンポジット・シャーディング用)およびインシデントなどの詳細を表示できます。

  • シャードグループ:

    シャードグループは、システム管理またはコンポジット・シャーディング方法でシャードされたデータベースに対してのみ表示されます。

    「シャードグループ」タブには、シャードグループ名、ステータス、所属するシャード領域、チャンク数、Data Guardロールおよび所属するリージョンが表示されます。

    シャードグループ名をクリックすると、シャードグループ内のシャードに関する情報やインシデントなど、選択したコンポーネントに関する詳細を表示できます。

    システム管理のシャーディング方法を使用してシャードされたデータベースの場合、shardspaceoraは、すべてのシャードグループを含めるためにOracle Shardingによって作成されるシャード領域です。これはOracle Shardingによって管理され、「シャード領域」タブに表示されません。

  • シャード・ディレクタ:

    「シャード・ディレクタ」タブには、シャード・ディレクタ名、ステータス、リージョン、ホストおよびOracleホームが表示されます。

    シャード・ディレクタ名をクリックすると、シャード・ディレクタ(グローバル・サービス・マネージャ)のバージョン、現在のステータス、使用されているポートおよびインシデントなど、選択したシャード・ディレクタの詳細を表示できます。

    シャード・ディレクタ・ホストをクリックして、ホスト・システムの詳細を表示することもできます。

  • シャード:

    「シャード」タブには、シャード名、Data Guardロール、ターゲット・タイプ、ターゲット・ステータス、所属するシャード領域およびシャードグループ、所属するリージョンおよび状態(デプロイ)が表示されます。

    「名前」列で、プライマリ・シャードを展開して、対応するスタンバイ・シャードの情報を表示できます。

    「デプロイ済」列のアイコンの上にマウスを置くと、デプロイメント・ステータスの詳細を表示できます。シャード名、シャード領域名およびシャードグループ名をクリックすると、選択したコンポーネントの詳細を表示できます。

  • カタログ・データベース

    「カタログ・データベース」タブには、シャード・カタログ・データベースがリストされ、各カタログ・データベースのシャード・カタログ・データベース名、タイプ、ステータスおよびロールが表示されます。

    カタログ・データベース名をクリックすると、データベースの詳細を表示できます。

  • グローバル・サービス:

    「グローバル・サービス」タブには、シャード・データベース・グローバル・サービスの名前、ステータスおよびData Guardロールが表示されます。リストの上にはサービスの合計数と、特定のステータスにあるサービスの数を示すアイコンが表示されます。アイコンの上にマウス・ポインタを置くと、ステータス・アイコンの説明を表示できます。

インシデント

「インシデント」ペインには、シャード・データベース環境の様々なコンポーネントに関するメッセージおよび警告が表示されます。このペインの使用方法の詳細は、Cloud Controlオンライン・ヘルプを参照してください。

「シャードされたデータベース」メニュー

左上隅にある「シャードされたデータベース」メニューを使用すると、シャード・データベースのコンポーネントを管理するためのツールにアクセスできます。

ターゲット・ナビゲーション

「ターゲット・ナビゲーション」ペインを使用すると、シャード・データベースのどのコンポーネントの詳細にも簡単にアクセスできるようになります。

「シャードされたデータベース」ホーム・ページの左上隅にあるナビゲーション・ツリー・アイコンをクリックすると、「ターゲット・ナビゲーション」ペインが開きます。このペインには、シャード・データベースで検出されたすべてのコンポーネントがツリー形式で表示されます。

シャード領域を展開すると、その領域内のシャードグループが表示されます。シャードグループを展開すると、そのシャードグループ内のシャードが表示されます。

コンポーネント名をクリックすると、その詳細を表示できます。

「データ分散およびパフォーマンス」ページ

Enterprise Manager Cloud Controlにある「シャードされたデータベース」ページの「データ分散およびパフォーマンス」では、シャード・データベースのデータの包括的ビューと、シャードの実行方法が表示されます。

概要


トピックの残りの部分で説明されている全画面イメージ

ページ上部の「概要」セクションには、チャートのデータで表されるシャード・データベース構成のリージョン、シャード領域、シャードグループ、シャード(プライマリおよびスタンバイに分かれる)、チャンクおよびサービスの数が表示されます。チャートにフィルタを適用すると、これらの数値が変わります。

データ分散およびパフォーマンスのチャート・ビュー

チャートの左上隅にある2つのアイコンは、チャートを2つのビュー間で切り替えます。

図9-1 「ホーム」アイコンおよび上位シャード・アイコン


「ホーム」および上位シャード

  • ホーム: デフォルト・ビューです。「ホーム」には、デフォルトでシャード・データベース内のすべてのシャードのデータが表示されます。次に示すように、チャートをフィルタしたり、表示上のメトリックを変更できます。

  • 上位シャード: 特定のメトリックの上位5、10または20のシャードのチャートを示します。

シャード・ブロック

色分けされたチャートには、データがシャード別に表示されます。各シャードはブロックによって示されます。

図9-2 マウス・オーバー・テキストを使用したシャード・ブロック


マウス・オーバー・テキストを使用したシャード・ブロック

各ブロックには、シャード名のラベルが付けられます。ブロック上でマウスを移動すると、シャード名、Data Guardロール、シャード内のチャンク数およびサービス時間(ミリ秒/コール)が表示されます。

ノート:

デフォルトのデータベース・メトリックを使用している場合、チャートに未検出のシャードのデータは表示されません。

拡張メトリックを使用している場合は、シャードがシャード・カタログで検出されるため、すべてのシャードのデータが表示されます。

ホーム・ビューのサマリー・アイコン

チャートの上にあるアイコンの行には、次の情報が表示されます。

図9-3 ホーム・ビューのサマリー・アイコン


稼働中、停止中、未モニター、その他、クリティカル、警告

  • 稼働中: (上向きの緑色の矢印)稼働しているシャード・データベース数

  • 停止中: (下向きの赤い矢印)停止しているシャード数

  • 未モニター: (「X」が付いた黄色の矢印)監視されていないシャードの数。これは、Enterprise Managerで検出されなかったシャードの数です。

  • その他: (疑問符「?」が付いた黄色のギア) Enterprise Managerで検出されたが、到達不能なエージェントや可用性評価エラーなど、ターゲット監視に問題があるシャード・データベース・ターゲット。

  • クリティカル: (「X」が付いた赤い円)クリティカル・インシデントの数

  • 警告: (感嘆符「!」が付いた黄色の三角形)警告インシデント数

チャート・ビュー・コントロール

各シャードのメトリックを、チャート内のブロックのサイズと色で比較します。

図9-4 チャート・ビュー・コントロール


ビュー・サイズの基準、ビューの色の基準、しきい値の構成、ツリー・マップ表ビュー

  • ビュー・サイズの基準: 選択したメトリックでブロックのサイズ分散を変更します

  • ビューの色の基準: 選択したメトリックでブロックの比較色を変更します

    デフォルトでは、色は明るい青、中位の明るさの青色および濃い青色で、最も明るい色と最も暗い色のカテゴリのしきい値が任意のEnterprise Managerのデフォルトに設定されます。

    「しきい値の構成」(3つのドットを含むボタン)をクリックして、各メトリックの低いカテゴリと高いカテゴリのカスタムしきい値を設定します。カスタムしきい値で構成されたチャートは、緑色=低、黄色=中、赤=高の各色のスペクトルで表示されます。

  • ツリー・マップ表ビュー: (チャートの右上隅にある表のボタン)チャートに表示されるデータの表ビューを表示します

フィルタ

チャートの左上隅にあるハンバーガ・アイコンをクリックして、データにフィルタを適用します。

図9-5 「フィルタ」アイコン


フィルタの切替え

  • シャード検索: シャード名でフィルタします。アスタリスク(*)を使用して、一致する名前パターンを持つシャードのグループを選択できます。

  • キー検索: シャード・キーの値を入力して、そのキーのデータを含むシャードを表示できます。表示されたチャートで、ブロックを右クリックしてシャード・レベル・データ分散を選択し、特定のシャードにドリルダウンできます。

  • SQL ID検索: 問合せのSQL IDによって問合せを実行しているシャードを表示します。これは、カタログ・データベースのV$SQL_SHARDビューにあります。

  • ソート基準: デフォルトのタイル・ビューでチャート内のブロックをサイズでソートしたり、棒の順序でソートしたり、上位または下位の5ブロックのみを表示します。

  • フィルタ条件: 指定したロール、シャードグループまたはサービスのシャードのみを表示できます。

    非アクティブなシャードを非表示: サービス・フィルタを使用すると、すべてのシャードが表示されますが、サービスが実行されていないシャードはグレー(非アクティブ)で表示されます。このチェック・ボックスを使用して非アクティブなシャードを非表示にできます。非アクティブなシャードを非表示チェック・ボックス

  • グループ化: グループの集計の表示を切り替えます。これは、シャードグループの周りにボックス行で示されます。

    • 「シャードグループ」では、グループ上部にシャードグループ・ボックスが表示され、ホバー時にシャードグループに関する集計情報が表示されます。シャードグループ・ベースのデータにドリルダウンできます。

    • 「リージョン」では、グループの上部にリージョン・ボックスが表示され、ホバー時にリージョンに関する集計情報が表示されます。

    • Data Guard集計グループでは、各シャードとそのスタンバイが単一のエンティティとしてグループ化されるため、特定のシャードとそのスタンバイが全体として処理するデータ・セットを確認できます。

上位シャード・ビュー

チャートの左側にある上位シャード・ボタンをクリックして、データ・サイズ、チャンク数、スループットおよびサービス時間が最も大きいシャードのメトリックを含むグラフを表示します。


前述のテキストで説明

ビューの右上隅にある「ビュー」リストを使用して、各グラフで上位5、10または20個のシャードを表示します。


開いた「ビュー」リスト

シャード管理

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

次のトピックでは、シャード管理の概念およびタスクについて説明します。

シャードの追加について

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

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

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

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

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

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

再シャーディングおよびホット・スポット回避

シャード数の変化によってトリガーされてデータがシャード間に再分散されるプロセスを再シャーディングと呼びます。自動再シャーディングは、システム管理のシャーディング方法の機能であり、SDBに柔軟なスケーラビリティを提供します。

ときには、SDBのデータを1つのシャードから他のシャードに移行する必要があります。シャード間のデータ移行は次のような場合に必要です。

  • SDBに対して1つ以上のシャードを追加または削除した場合

  • シャード間のデータ分散またはワークロード分散にスキューがある場合

シャード間のデータ移行の単位はチャンクです。チャンクでデータを移行することにより、異なるシャード・データベースの関連するデータが確実に一緒に移動されます。

SDBに対してシャードを追加または削除すると、複数のチャンクが移行されて、シャード間のチャンクとワークロードのバランスのとれた分散が維持されます。

シャーディング方法に応じて、再シャーディングが自動的に行われるか(システム管理)、ユーザーが指示します(コンポジット)。次の図は、3つのシャードを含むSDBにシャードを追加したときの自動再シャーディングの段階を示しています。

図 9-6 SDBの再シャーディング

図9-6の説明が続きます
「図9-6 SDBの再シャーディング」の説明

データまたはワークロードのスキューが発生したときに、シャード数を変更せずに、特定のチャンクを1つのシャードから他へ移動することもできます。この場合、ホット・スポットを回避するために、データベース管理者がチャンクの移動を開始できます。

RMAN増分バックアップ、トランスポータブル表領域およびOracle Notification Serviceテクノロジを使用して、アプリケーションの可用性へのチャンク移行の影響を最小限に抑えます。チャンク移行中、チャンクはオンラインのままです。短時間(数秒間)は、チャンクに格納されたデータが読取り専用アクセスのみになります。

FAN対応クライアントは、ソース・シャードでチャンクが読取り専用になる直前に通知を受信し、チャンク移行が完了して宛先シャードでチャンクが完全に使用可能になると、再度、通知を受信します。chunk read-onlyイベントを受信すると、クライアントはチャンク移行が完了するまで接続の試行を繰り返すか、ソース・チャンクの読取り専用チャンクにアクセスできます。後者の場合、チャンクに書き込もうとすると、ランタイム・エラーが発生します。

ノート:

シャード・データベースの再シャーディング中にマルチシャード問合せを実行すると、エラーが発生する可能性があるため、マルチシャードのワークロード中に新しいシャードをデプロイしないことをお薦めします。

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

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

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

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

関連項目:

チャンクの移動について

GDSCTL REMOVE SHARDコマンドの使用方法の詳細は、Oracle Database Global Data Services概要および管理ガイドを参照してください

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

Data Guardのスタンバイ・シャードをOracle Sharding環境に追加できます。ただし、制限があります。

シャード・データベースのレプリケーション方法としてData Guardを使用する場合、Oracle Shardingでは、プライマリまたは物理スタンバイ・シャードの追加のみサポートします。新しいスタンバイをシャード・データベースに追加する場合、他のタイプのData Guardスタンバイ・データベースはサポートされません。ただし、すでにシャード・データベースの一部であるシャードは、物理スタンバイからスナップショット・スタンバイに変換できます。物理スタンバイからスナップショット・スタンバイに変換する場合、次のステップに従う必要があります。

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

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

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

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

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

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

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

シャードの検証

Oracle Shardingデプロイメントに追加する前に、シャードを検証します。

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

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

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

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

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

Oracle Enterprise Manager Cloud Controlを使用して、プライマリ・シャードをOracle Shardingデプロイメントに追加します。

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

Oracle Sharding環境に追加する前にシャードを検証することを強くお薦めします。Cloud Controlを使用してシャードを検証するか(「シャードの検証」を参照)、またはSQL*Plusを使用してシャードに対してDBMS_GSM_FIX.validateShardプロシージャを実行します(「シャードの検証」を参照)。

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

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

  4. 「追加」をクリックします。
  5. 「シャードの詳細」ダイアログの「データベース」フィールドで、シャードを選択して、「選択」をクリックします。
  6. コンポジットOracle Sharding環境で、シャードを追加するシャード領域を選択できます。
  7. 「OK」をクリックします
  8. 必要に応じてGSMUSER資格証明を入力し、「次」をクリックします。
  9. ADD SHARD操作が発生する時間を示し、「次」をクリックします。
    • 即時: 確認後にシャードがプロビジョニングされます

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

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

上記の手順の「シャードされたデータベースにすべてのシャードをデプロイ」を選択しなかった場合、シャードのデプロイ・タスクを使用して、Oracle Shardingデプロイメントにシャードをデプロイします。

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

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

スタンバイ・シャードは、Cloud Controlで監視している既存のターゲットである必要があります。

Oracle Sharding環境に追加する前にシャードを検証することを強くお薦めします。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 Shardingデプロイメントにシャードをデプロイします。

シャードのデプロイ

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

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

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

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

GDSCTLを使用したシャードの管理

GDSCTLコマンドライン・ユーティリティを使用して、Oracle Shardingデプロイメントのシャードを管理できます。

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

シャードの検証

新しく作成したシャードをシャーディング構成に追加する前に、シャードがシャーディング環境用に正しく構成されていることを検証する必要があります。

ADD SHARDを実行する前に、シャードとして追加されるデータベースに対してvalidateShardプロシージャを実行します。validateShardプロシージャは、シャードとして正常に動作するために必要な初期化パラメータおよび特性がターゲット・データベースにあることを検証します。

validateShardプロシージャはターゲット・データベースを分析し、そのデータベースに対してGDSCTL ADD SHARDを実行する前に対処する必要がある問題を報告します。validateShardプロシージャはデータベースまたはパラメータを変更しません。情報および起こり得る問題を報告するだけです。

validateShardプロシージャは、シャードをシャード・カタログに追加するときに使用するレプリケーション・テクノロジとしてData GuardとOracle GoldenGateのどちらかを指定するオプションのパラメータを1つ取ります。Data Guardを使用する場合は、validateShard('DG')を呼び出します。Oracle GoldenGateを使用する場合は、validateShard('OGG')を使用します。validateShardにパラメータを渡さない場合のデフォルト値は、Data Guardです。

validateShardプロシージャは、シャードをデプロイメントした後に実行して、シャードのその後のライフサイクルでも設定が引き続き有効であることを確認することもできます。たとえば、ソフトウェアのアップグレード後またはシャードのデプロイメント後に、既存のシャードに対してvalidateShardを実行し、パラメータおよび構成が正しいことを確認できます。

次のようにvalidateShardを実行します。

sqlplus / as sysdba
SQL> set serveroutput on
SQL> execute dbms_gsm_fix.validateShard

出力例を次に示します。

INFO: Data Guard shard validation requested.
INFO: Database role is PRIMARY.
INFO: Database name is DEN27B.
INFO: Database unique name is den27b.
INFO: Database ID is 718463507.
INFO: Database open mode is READ WRITE.
INFO: Database in archivelog mode.
INFO: Flashback is on.
INFO: Force logging is on.
INFO: Database platform is Linux x86 64-bit.
INFO: Database character set is WE8DEC. This value must match the character set of
 the catalog database.
INFO: 'compatible' initialization parameter validated successfully.
INFO: Database is not a multitenant container database.
INFO: Database is using a server parameter file (spfile).
INFO: db_create_file_dest set to: '<ORACLE_BASE>/oracle/dbs2'
INFO: db_recovery_file_dest set to: '<ORACLE_BASE>/oracle/dbs2'
INFO: db_files=1000. Must be greater than the number of chunks and/or tablespaces
 to be created in the shard.
INFO: dg_broker_start set to TRUE.
INFO: remote_login_passwordfile set to EXCLUSIVE.
INFO: db_file_name_convert set to: '/dbs/dt, /dbs/bt, dbs2/DEN27D/, dbs2/DEN27B/'
INFO: GSMUSER account validated successfully.
INFO: DATA_PUMP_DIR is '<ORACLE_BASE>//oracle/dbs2'.

INFOがタグ付けされている行は、基本的に情報であり正しい設定であることを示しています。WARNINGがタグ付けされている行は、構成によって問題である場合と問題ではない場合があります。たとえば、Data Guardパラメータに関する問題が報告されても、構成にプライマリ・データベースのみが含まれている場合は、Data Guardの問題を無視できます。最後に、そのシャードをシャーディング構成にデプロイして正常に稼働させるには、ERRORタグが付けられている出力を修正する必要があります。

システム管理のSDBへのシャードの追加

システム管理のSDBにシャードを追加すると、SDBを柔軟に拡張できます。システム管理のSDBのチャンクは、新しいシャードが追加された後に自動的にリバランスされます。

新しいシャードのホストを準備するには、最初にシャード・データベース環境を準備したときと同じすべてのセットアップ手順(次の手順を含む)を行います。

  1. シャード・ディレクタのホストに接続して、環境変数を確認します。
    $ ssh os_user@shard_director_home
    $ env |grep ORA
    ORACLE_BASE=/u01/app/oracle
    ORACLE_HOME=/u01/app/oracle/product/18.0.0/gsmhome_1
  2. 現在のセッションのグローバル・サービス・マネージャを設定し、それを管理するための資格証明を指定します。
    $ gdsctl
    GDSCTL> set gsm -gsm sharddirector1
    GDSCTL> connect mysdbadmin/mysdbadmin_password
  3. 現在のシャードの構成を確認します。
    GDSCTL> config shard
    Name          Shard Group         Status    State       Region    Availability 
    ----          -----------         ------    -----       ------    ------------ 
    sh1           primary_shardgroup  Ok        Deployed    region1   ONLINE       
    sh2           standby_shardgroup  Ok        Deployed    region2   READ_ONLY    
    sh3           primary_shardgroup  Ok        Deployed    region1   ONLINE       
    sh4           standby_shardgroup  Ok        Deployed    region2   READ_ONLY    
    
  4. 新しい各シャードのシャード・グループ、宛先および資格証明を指定します。

    この例では、新しいシャードはshard5およびshard6という名前で、NETCAおよびDBCAのデフォルト・テンプレートが使用されています。

    GDSCTL> add invitednode shard5
    GDSCTL> create shard -shardgroup primary_shardgroup -destination shard5
     -credential os_credential -sys_password
    GDSCTL> add invitednode shard6
    GDSCTL> create shard -shardgroup standby_shardgroup -destination shard6
     -credential os_credential -sys_password

    シャードを作成するときに、前の例に示すようにcreate shard-sys_passwordを使用してSYSのパスワードを設定することもできます。これにより、シャードが作成されてDEPLOYされたときに、SYSのパスワードが設定されます。

    前述の例では、新しいシャードを作成するためにCREATE SHARDによる方法を使用しています。ADD SHARDコマンドを使用して事前構成済のシャードを追加するには、ADD INVITEDNODEの後で次のコマンドを実行します。

    GDSCTL> add shard –shardgroup primary_shardgroup
     –connect shard_host:TNS_listener_port/shard_database_name
     –pwd GSMUSER_password

    追加されるシャードがPDBである場合は、ADD SHARD-cdbオプションを使用して、PDBシャードが含まれているCDBを指定する必要があります。また、ADD SHARDコマンドの前にADD CDBを使用してカタログにCDBを追加する必要があります。ADD CDBおよびADD SHARDの構文は、Oracle Database Global Data Services概要および管理ガイドを参照してください。

    ノート:

    登録に関する有効ノード・チェック(VNCR)機能では、シャード・ディレクタによって許可された登録リクエストのIPアドレス、ホスト名またはサブネットのセットの構成や動的な更新が可能になります。シャード・ディレクタへのデータベース・インスタンスの登録は、リクエスト元が有効なノードである場合にのみ成功します。デフォルトでは、create shardまたはadd shardが実行されるたびに、シャード管理層(Oracle Global Data Servicesフレームワークに基づく)は、リモート・データベースが実行されているホストのVNCRエントリを自動的に追加します。自動化(自動VNCRと呼ばれます)によってターゲット・ホストのパブリックIPアドレスが検索され、そのIPアドレスのVNCRエントリが自動的に追加されます。ホストに複数のパブリックIPアドレスがある場合は、データベースに登録されたアドレスが自動VNCRを使用して追加されたアドレスと同じではないことがあり、登録が拒否されることがあります。ターゲット・データベースのホストに複数のパブリックIPアドレスがある場合は、GDSCTLでadd invitednodeコマンドまたはadd invitedsubnetコマンドを使用して、このホストのVNCRを手動で構成することをお薦めします。

    複数のネットカードがターゲット・ホストにある(/sbin/ifconfigで複数のパブリック・インタフェースが返されます)場合は、安全のためにadd invitednodeを使用します(パケットをルーティングするために使用されるインタフェースを確認してから)。

    登録になんらかの疑念がある場合は、必要に応じてconfig vncrおよびadd invitednodeを使用します。これを行っても問題はありません。ノードがすでに追加されている場合、自動VNCRはそれを無視し、自動VNCRによってすでに追加された後にノードを追加しようとすると、すでに存在しているという警告を受け取るからです。

  5. DEPLOYコマンドを実行して、シャードとレプリカを作成します。
    GDSCTL> deploy
  6. 新しいシャードがデプロイされたことを確認します。
    GDSCTL> config shard
    Name         Shard Group         Status    State       Region    Availability 
    ----         -----------         ------    -----       ------    ------------ 
    sh1          primary_shardgroup  Ok        Deployed    region1   ONLINE
    sh2          standby_shardgroup  Ok        Deployed    region2   READ_ONLY
    sh3          primary_shardgroup  Ok        Deployed    region1   ONLINE
    sh4          standby_shardgroup  Ok        Deployed    region2   READ_ONLY
    sh5          primary_shardgroup  Ok        Deployed    region1   ONLINE
    sh6          standby_shardgroup  Ok        Deployed    region2   READ_ONLY
  7. チャンク構成を1-2分ごとにチェックして、チャンクの自動リバランスの進行状況を表示します。
    $ gdsctl config chunks -show_Reshard
    
    Chunks
    ------------------------
    Database                      From      To        
    --------                      ----      --        
    sh1                           1         4 
    sh2                           1         4 
    sh3                           7         10
    sh4                           7         10
    sh5                           5         6 
    sh5                           11        12
    sh6                           5         6 
    sh6                           11        12
    
    Ongoing chunk movement
    ------------------------
    Chunk     Source          Target             status
    -----     ------          ------             ------
  8. シャード(データベース)が自動的に登録されたことを確認します。
    $ gdsctl databases
    
    Database: "sh1" Registered: Y State: Ok ONS: N. Role: PRIMARY Instances: 1
     Region: region1
       Service: "oltp_ro_srvc" Globally started: Y Started: N
                Scan: N Enabled: Y Preferred: Y
       Service: "oltp_rw_srvc" Globally started: Y Started: Y
                Scan: N Enabled: Y Preferred: Y
       Registered instances:
         cust_sdb%1
    Database: "sh2" Registered: Y State: Ok ONS: N. Role: PH_STNDBY Instances: 1
     Region: region2
       Service: "oltp_ro_srvc" Globally started: Y Started: Y
                Scan: N Enabled: Y Preferred: Y
       Service: "oltp_rw_srvc" Globally started: Y Started: N
                Scan: N Enabled: Y Preferred: Y
       Registered instances:
         cust_sdb%11
    Database: "sh3" Registered: Y State: Ok ONS: N. Role: PRIMARY Instances: 1
     Region: region1
       Service: "oltp_ro_srvc" Globally started: Y Started: N
                Scan: N Enabled: Y Preferred: Y
       Service: "oltp_rw_srvc" Globally started: Y Started: Y
                Scan: N Enabled: Y Preferred: Y
       Registered instances:
         cust_sdb%21
    Database: "sh4" Registered: Y State: Ok ONS: N. Role: PH_STNDBY Instances: 1
     Region: region2
       Service: "oltp_ro_srvc" Globally started: Y Started: Y
                Scan: N Enabled: Y Preferred: Y
       Service: "oltp_rw_srvc" Globally started: Y Started: N
                Scan: N Enabled: Y Preferred: Y
       Registered instances:
         cust_sdb%31
    Database: "sh5" Registered: Y State: Ok ONS: N. Role: PRIMARY Instances: 1
     Region: region1
       Service: "oltp_ro_srvc" Globally started: Y Started: N
                Scan: N Enabled: Y Preferred: Y
       Service: "oltp_rw_srvc" Globally started: Y Started: Y
                Scan: N Enabled: Y Preferred: Y
       Registered instances:
         cust_sdb%41
    Database: "sh6" Registered: Y State: Ok ONS: N. Role: PH_STNDBY Instances: 1
     Region: region2
       Service: "oltp_ro_srvc" Globally started: Y Started: Y
                Scan: N Enabled: Y Preferred: Y
       Service: "oltp_rw_srvc" Globally started: Y Started: N
                Scan: N Enabled: Y Preferred: Y
       Registered instances:
         cust_sdb%51
    
  9. サービスが新しいシャードで自動的に起動されたことを確認します。
    $ gdsctl services
    
    Service "oltp_ro_srvc.cust_sdb.oradbcloud" has 3 instance(s). Affinity: ANYWHERE
       Instance "cust_sdb%11", name: "sh2", db: "sh2", region: "region2", status: ready.
       Instance "cust_sdb%31", name: "sh4", db: "sh4", region: "region2", status: ready.
       Instance "cust_sdb%51", name: "sh6", db: "sh6", region: "region2", status: ready.
    Service "oltp_rw_srvc.cust_sdb.oradbcloud" has 3 instance(s). Affinity: ANYWHERE
       Instance "cust_sdb%1", name: "sh1", db: "sh1", region: "region1", status: ready.
       Instance "cust_sdb%21", name: "sh3", db: "sh3", region: "region1", status: ready.
       Instance "cust_sdb%41", name: "sh5", db: "sh5", region: "region1", status: ready.
    

関連項目:

GDSCTLコマンドの使用方法については、Oracle Database Global Data Services概要および管理ガイドを参照してください

シャードの置換

シャードで障害が発生してリカバリ不能になった場合、またはその他の理由で新しいホストにシャードを移動する必要がある場合は、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

Oracle GoldenGate環境でのシャードの置換

GDSCTLコマンドのオプションADD SHARD -REPLACEは、Oracle GoldenGateではサポートされていません。

一般的なエラー

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

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

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

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

関連項目:

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

チャンク管理

Oracle Enterprise Manager Cloud ControlおよびGDSCTLを使用したOracle Shardingデプロイメントのチャンクを管理できます。

次のトピックでは、チャンク管理の概念およびタスクについて説明します。

チャンクの移動について

チャンクをあるシャードから別のシャードに移動することが必要となる場合があります。シャード環境のスケーラビリティを維持するには、すべてのシャード間で負荷とアクティビティが均等に配分されるように維持することが重要です。

コンポジットSDBの環境が長期間使用されると、一部のシャードがよりアクティブになり、他のシャードよりデータが多くなります。環境内のバランスを保つために、よりアクティブなサーバーからアクティブではないサーバーにチャンクを移動する必要があります。チャンクを移動する理由は他にもあります。

  • あるシャードが他のシャードよりアクティブになった場合は、よりアクティブではないシャードにチャンクを移動して、環境内で負荷が均等に配分されるようにできます。

  • 範囲、リストまたはコンポジット・シャーディングを使用しているときに、シャードをシャードグループに追加する場合。

  • 範囲、リストまたはコンポジット・シャーディングを使用しているときに、シャードグループからシャードを削除する場合。

  • チャンクを分割したら、分割されたチャンクのいずれかを新しいシャードに移動することを多くの場合お薦めします。

スケーラビリティを維持するためにシャードを移動する場合、チャンクの最適なターゲットはよりアクティブではないシャード、またはより少ないデータがあるシャードです。Oracle Enterprise ManagerおよびAWRのレポートは、シャード間のアクティビティの配分を識別するため、およびチャンクの移動のよい候補となるシャードを識別するために役立ちます。

ノート:

チャンクをあるシャードから別のシャードに移動する場合は、その操作に関係するデータベース(チャンクの移動のソースおよびターゲットの両方)のフル・バックアップを取得する必要があります。

関連項目:

GDSCTL MOVE CHUNKコマンドの使用方法の詳細は、Oracle Database Global Data Services概要および管理ガイドを参照してください

進行中のチャンク移動操作の更新

MOVE CHUNK操作の進行中は、GDSCTL ALTER MOVEコマンドを使用して、操作で移動がスケジュールされている(移動がまだ開始されていない)すべてのチャンクを一時停止、再開または取消しできます。

このコマンドには3つのバリエーションがあります。-SUSPENDを使用してチャンク移行操作を延期し、-RESUMEを使用して移動プロセスを再起動し、-CANCELによってチャンク移行を取り消します。

また、-CHUNKおよび-SHARDオプションを使用して、スケジュールされたチャンク移動のリストをフィルタします。CONFIG CHUNKS -SHOW_RESHARDコマンドを使用して、スケジュール済チャンク移動のリストを取得できます。

チャンク移動の一時停止

ALTER MOVE -SUSPENDは、操作を再開または取消しを実行するまで、指定されたスコープのチャンク移行を延期します。操作を一時停止するシャードを指定し、ソース・シャードとターゲット・シャードをリストできます。一時停止する特定のチャンクのリストを指定することもできます。

定義したスコープ内のチャンクがすでに移動されている場合(スケジュール済以外の状態)、そのチャンクは一時停止されません。

たとえば、次のコマンドは、shard1との間でスケジュールされたすべてのチャンク移動を一時停止します。

GDSCTL> alter move -suspend -shard shard1

チャンク移動の再起動

ALTER MOVE -RESUMEは、指定されたシャード上の「move failed」フラグをリセットし、停止中または一時停止中のチャンク移動をすべて再起動します。

オプションで、移動の再起動前に「move failed」フラグがリセットされるソースおよびターゲット・シャードのリストを指定できます。シャードが指定されていない場合、進行中の移動が完了すると、一時停止された移動が再開されます。

たとえば、次のコマンドは、shard1との間でスケジュールされた一時停止または失敗したチャンク移動で、チャンク移動を再起動します。

GDSCTL> alter move -resume -shard shard1

チャンク移動の取消し

ALTER MOVE -CANCELは、移動チャンク・スケジュールから指定されたチャンクを削除します。

-CHUNKオプションは、リストされたすべてのチャンクをスケジュールから削除することを指定し、-SHARDは、このデータベースとの間のすべてのチャンク移動をスケジュールから削除することを指定します。チャンクまたはシャードが指定されていない場合、まだ処理されていないチャンク移動はすべて取り消されます。

定義したスコープ内のチャンクが現在移動されている場合(スケジュール済以外の状態)、そのチャンク移動は取り消されません。

取り消されたチャンクは再開/再起動できません。これらのチャンクを移動するには、新しいMOVE CHUNKコマンドを発行する必要があります。

たとえば、チャンク1、2および3がまだ移動されていない場合は、次のコマンドによってチャンク移動スケジュールから削除されます。

GDSCTL> alter move -cancel -chunk 1,2,3

チャンクの移動

Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントの1つのシャードから他のシャードにチャンクを移動できます。

  1. シャード領域管理ページから、シャード・データベース・ターゲット・ページの左上隅にある「シャード領域」メニューを開き、「シャードグループの管理」を選択します。
  2. リストのシャードグループを選択して、「チャンクの移動」をクリックします。
  3. 「チャンクの移動」ダイアログで、チャンクを移動するソース・シャードと宛先シャードを選択します。
  4. オプションのいずれかを選択して、移動するチャンクを選択します。
    • IDリストの入力: チャンクID番号のカンマ区切りリストを入力します

    • 表からIDを選択: 表のチャンクIDをクリックします

  5. チャンクの移動が発生する時間を示します。
    • 即時: 確認後にチャンクの移動がプロビジョニングされます

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

  6. 「OK」をクリックします
  7. ページ上部にある「情報」ボックスのリンクをクリックして、チャンク移動のプロビジョニング・ステータスを表示します。

チャンクの分割について

チャンクが大きくなりすぎた場合や、チャンクの一部のみを別のシャードに移行する必要がある場合は、シャード・データベースのチャンクを分割する必要があります。

Oracle Shardingはチャンクのオンライン分割をサポートします。理論上は、各シャードに1つのチャンクを作成し、データ移行が必要になるたびに分割できます。ただし、チャンクの分割はデータの可用性に影響しないものの、分割するパーティションのすべての行をスキャンしてから、1行ずつ新しいパーティションに挿入するため、時間がかかり、CPUにも負荷がかかる操作です。コンポジット・シャーディングの場合、チャンクの分割には時間がかかり、シャード・キーまたはスーパー・シャード・キーの新しい値を再定義するために停止時間が必要となることがあります。

したがって、各シャードに事前に複数のチャンクを作成し、次のいずれかの場合に分割することをお薦めします。再シャーディング中にデータをバランスよく分散するにはチャンク数が足りない場合、または特定のチャンクがホット・スポットになっている場合です。

システム管理のシャーディングの場合でも、単一のチャンクが他のチャンクより大きくなったり、よりアクティブになったりすることがあります。この場合は、そのチャンクを分割し、分割されたチャンクのいずれかが自動再シャーディングによって別のシャードに移動されることを許可すると、環境内のデータおよびアクティビティがより均等に配分されるように維持されます。

Oracle Enterprise Managerのヒート・マップには、どのチャンクが他のチャンクよりもアクティブになっているかが表示されます。この機能を使用してどのチャンクを分割できるかを識別し、分割されたチャンクのいずれかを別のシャードに移動して環境をリバランスできます。

関連項目:

GDSCTL SPLIT CHUNKコマンドの使用方法の詳細は、Oracle Database Global Data Services概要および管理ガイドを参照してください

チャンクの分割

Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのチャンクを分割できます。

  1. シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「シャード領域」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. リストのシャード領域を選択して、「チャンクの分割」をクリックします。
  4. オプションのいずれかを選択して、分割するチャンクを選択します。
    • IDリストの入力: チャンクID番号のカンマ区切りリストを入力します

    • 表からIDを選択: 表のチャンクIDをクリックします

  5. チャンクの分割が発生する時間を示します。
    • 即時: 確認後にチャンクの分割がプロビジョニングされます

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

  6. 「OK」をクリックします
  7. ページ上部にある「情報」ボックスのリンクをクリックして、チャンク分割のプロビジョニング・ステータスを表示します。
チャンクを正常に分割すると、チャンクの数が「シャード領域」リストで更新されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。

シャード・ディレクタ管理

Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのシャード・ディレクタを追加、編集および削除できます。

次の各項では、シャード・ディレクタの管理タスクについて説明します。

シャード・ディレクタの作成

Oracle Enterprise Manager Cloud Controlを使用して、シャード・ディレクタをOracle Shardingデプロイメントに作成して追加します。

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

    「作成」を選択すると、フィールドのデフォルトの構成値とともに「シャード・ディレクタの追加」ダイアログが開きます。

    「類似作成」を選択すると、フィールドの選択されたシャード・ディレクタの構成値とともに「シャード・ディレクタの追加」ダイアログが開きます。リストからシャード・ディレクタを選択して「類似作成」オプションを有効化する必要があります。

  4. 「シャード・ディレクタの追加」ダイアログの必要な情報を入力して、「OK」をクリックします。

    ノート:

    シャード・ディレクタの作成後すぐに実行を開始しない場合、「作成後にシャード・ディレクタを開始」チェックボックスの選択を解除する必要があります。

  5. 確認ダイアログで「OK」をクリックします。
  6. ページ上部にある「情報」ボックスのリンクをクリックして、シャード・ディレクタのプロビジョニング・ステータスを表示します。
シャード・ディレクタが正常に作成されると、「シャード・ディレクタ」リストに表示されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。

シャード・ディレクタ構成の編集

Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのシャード・ディレクタ構成を編集します。

Cloud Controlのシャード・ディレクタのリージョン、ポート、ローカル・エンドポイントおよびホスト資格証明を変更できます。シャード・ディレクタ名、ホストまたはOracleホームは編集できません。
  1. シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「シャード・ディレクタ」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. リストからシャード・ディレクタを選択して、「編集」をクリックします。

    シャード・ディレクタ名、ホストまたはOracleホームは編集できないことに注意してください。

  4. フィールドを編集してGSMCATUSERパスワードを入力し、「OK」をクリックします。
  5. ページ上部にある「情報」ボックスのリンクをクリックして、シャード・ディレクタ構成変更のプロビジョニング・ステータスを表示します。

シャード・ディレクタの削除

Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントからシャード・ディレクタを削除します。

「シャード・ディレクタ」リストの列のチェック・マークに示されているように、削除するシャード・ディレクタが管理シャード・ディレクタの場合、削除する前に別のシャード・ディレクタを管理シャード・ディレクタに選択する必要があります。

  1. シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「シャード・ディレクタ」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. リストからシャード・ディレクタを選択して、「削除」をクリックします。
  4. ページ上部にある「情報」ボックスのリンクをクリックして、シャード・ディレクタ削除のプロビジョニング・ステータスを表示します。
シャード・ディレクタが正常に削除されると、「シャード・ディレクタ」リストに表示されなくなります。変更内容を参照するには、ページのリフレッシュが必要な場合があります。

リージョン管理

Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのリージョンを追加、編集および削除できます。

次の各項では、リージョンの管理タスクについて説明します。

リージョンの作成

Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのシャード・データベース・リージョンを作成します。

  1. シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「リージョン」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. 「作成」をクリックします。
  4. 「リージョンの作成」ダイアログのリージョンに一意の名前を入力します。
  5. オプションで、既存のリージョンからバディ・リージョンを選択します。
  6. 「OK」をクリックします
  7. ページ上部にある「情報」ボックスのリンクをクリックして、リージョンのプロビジョニング・ステータスを表示します。
リージョンが正常に作成されると、「リージョン」リストに表示されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。

リージョン構成の編集

Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのシャード・データベース・リージョン構成を編集します。

Cloud Controlのシャード・データベース・リージョンのバディ・リージョンを変更できます。リージョン名は編集できません。
  1. シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「リージョン」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」でシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. リストからリージョンを選択して、「編集」をクリックします。
  4. バディ・リージョンを選択または削除して、「OK」をクリックします。
  5. ページ上部にある「情報」ボックスのリンクをクリックして、リージョン構成変更のプロビジョニング・ステータスを表示します。

リージョン構成が正常に更新されると、変更が「リージョン」リストに表示されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。

リージョンの削除

Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのシャード・データベース・リージョンを削除します。

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

リージョン構成が正常に削除されると、変更が「リージョン」リストに表示されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。

シャード領域管理

Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのシャード領域を追加、編集および削除できます。

次の各項では、シャード領域の管理タスクについて説明します。

シャード領域の作成

Oracle Enterprise Manager Cloud Controlを使用して、コンポジットOracle Shardingデプロイメントのシャード領域を作成します。

コンポジット方法を使用してシャードされるデータベースのみ、複数のシャード領域を格納できます。システム管理のシャード・データベースは、1つのシャード領域のみ格納できます。
  1. シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「シャード領域」を選択します。
  2. 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
  3. 「作成」をクリックします。

    ノート:

    このオプションは、システム管理のシャード・データベースのシャード領域ページで無効化されます。
  4. 「シャード領域の追加」ダイアログのフィールドの値を入力して、「OK」をクリックします。
    • 名前: シャード領域の一意の名前を入力します(必須)

    • チャンク: シャード領域に作成されるチャンクの数を入力します(デフォルトは120です)

    • 保護モード: Data Guard保護モードを選択します(デフォルトは「最大パフォーマンス」です)

  5. ページ上部にある「情報」ボックスのリンクをクリックして、シャード領域のプロビジョニング・ステータスを表示します。
シャード領域が正常に作成されると、「シャード領域」リストに表示されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。

コンポジット・シャード・データベースへのシャード領域の追加

新しいシャード領域の作成、シャード領域へのシャードの追加、新しいシャード領域での表領域セットの作成、追加したシャード領域のシャード表へのパーティションセットの追加を学習します。次に、表内のパーティションが、対応する表領域に新しく追加されたシャードに作成されていることを確認します。

既存のシャード・データベースに新しいシャード領域を追加するには、コンポジット・シャード・データベースがデプロイされ、すべてのDDLがシャードに伝播されていることを確認してください。
  1. 新しいシャード領域を作成し、シャード領域にシャードを追加し、環境をデプロイします。
    1. シャード・カタログ・データベースに接続します。
      GDSCTL> connect mysdbadmin/mysdbadmin_password
    2. シャード領域を追加し、シャードグループをシャード領域に追加します。
      GDSCTL> add shardspace -chunks 8 -shardspace cust_asia
      GDSCTL> add shardgroup -shardspace cust_asia -shardgroup asia_shgrp1 -deploy_as primary -region region3
    3. シャードを追加します
      GDSCTL> add shard -shardgroup asia_shgrp1 –connect shard_host:TNS_listener_port/shard_database_name –pwd GSMUSER_password
      GDSCTL> add shard asia_shgrp1 –connect shard_host:TNS_listener_port/shard_database_name –pwd GSMUSER_password
    4. 環境をデプロイします。
      GDSCTL> deploy
    DEPLOYを実行すると、以前のすべてのDDLが新しいシャードでリプレイされ、すべての表が作成されます。パーティションは、デフォルトのSYS_SHARD_TS表領域に作成されます。
  2. シャード・カタログでシャード領域用の表領域セットを作成し、シャード・セットをシャード・ルート表に追加します。
    1. 表領域セットを作成します。
      SQL> CREATE TABLESPACE SET
        TSP_SET_3 in shardspace cust_asia using template
        (datafile size 100m autoextend on next 10M maxsize
         unlimited extent management
         local segment space management auto );
    2. パーティションセットを追加します。
      SQL> ALTER table customers add PARTITIONSET asia VALUES ('ASIA”') TABLESPACE SET TSP_SET_3 ;
    3. LOBが存在する場合は、lobの表領域セットを作成し、add partitionsetコマンドでLOB記憶域情報を記述します。
      SQL> alter table customers add partitionset asia VALUES ('ASIA') tablespace set TSP_SET_3 lob(docn) store as (tablespace set LOBTSP_SET_4)) ;
    4. ルート表にサブパーティションが含まれる場合、ストアを句として使用して、サブパーティションの表領域セットを指定します。
      SQL> alter table customers add partitionset asia VALUES ('ASIA') tablespace set TSP_SET_3 subpartitions store in(SUB_TSP_SET_1, SUB_TSP_SET_2);
    ADD PARTITIONSETコマンドは、子表を適切な表領域に移動します。
  3. 新しいシャード領域内のパーティションが新しい表領域に移動されていることを確認します。

    新しいシャードに接続し、パーティションが新しい表領域セットに作成されていることを確認します。

    SQL> select table_name, partition_name, tablespace_name, read_only from dba_tab_partitions;

シャードグループ管理

Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのシャードグループを追加、編集および削除できます。

次の各項では、シャードグループの管理タスクについて説明します。

シャードグループの作成

Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのシャードグループを作成します。

  1. シャードグループを追加するシャード領域を選択します。
  2. シャード領域ターゲット・ページの左上隅にある「シャード領域」メニューを開き、「シャードグループの管理」を選択します。
  3. 「作成」をクリックします。
  4. 「シャードグループの作成」ダイアログで値を入力して、「OK」をクリックします。
  5. ページ上部にある「情報」ボックスのリンクをクリックして、シャードグループのプロビジョニング・ステータスを表示します。

    たとえば、前述のスクリーンショットの入力された値を使用して、次のコマンドを実行します。

    GDSCTL Command: ADD SHARDGROUP -SHARDGROUP 'north' -SHARDSPACE 'shardspaceora'
     -REGION 'north' -DEPLOY_AS 'STANDBY'
シャードグループが正常に作成されると、「シャードグループの管理」リストに表示されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。

サービス管理

Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのサービスを管理できます。

Oracle Shardingサービスを管理するには、シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「サービス」を選択します。サービスページで、サービスのリストの上部にあるコントロールを使用して、サービスを起動、停止、有効化、無効化、作成、編集および削除できます。

サービスを選択すると、サービスを実行しているホストおよびシャード、ステータス、状態およびそれらの各インスタンスのData Guardロールを表示するサービス詳細リストが開きます。このリストのシャードを選択すると、個々のシャードのサービスを有効化、無効化、起動および停止できます。

次の各項では、サービスの管理タスクについて説明します。

サービスの作成

Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのサービスを作成します。

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

    「作成」を選択すると、フィールドのデフォルトの構成値とともに「サービスの作成」ダイアログが開きます。

    「類似作成」を選択すると、フィールドの選択されたサービスの構成値とともに「サービス{0}の類似作成」ダイアログが開きます。リストからサービスを選択して「類似作成」オプションを有効化する必要があります。

  4. ダイアログに必要な情報を入力し、「OK」をクリックします。

    ノート:

    サービスの作成後すぐに実行を開始しない場合、「作成後にすべてのシャードでサービスを開始します。」チェックボックスの選択を解除する必要があります。

  5. ページ上部にある「情報」ボックスのリンクをクリックして、サービスのプロビジョニング・ステータスを表示します。
サービスが正常に作成されると、「サービス」リストに表示されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。