9 シャード・データベースの管理
Oracle Shardingは、シャード・データベースの管理のためのツールおよびいくつかの自動化を提供しています。
次のトピックでは、シャード・データベースの管理についてさらに詳しく説明します。
シャーディング対応スタックの管理
この項では、シャード・データベース構成内のコンポーネントの起動および停止について説明します。次の項目が含まれます。
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
コマンドと組み合せて使用すると、必要に応じてパスワードを変更できます。
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
コマンドと組み合せて使用することで、デプロイメント後に必要に応じて変更できます。
シャード・データベースのバックアップおよびリカバリ
シャードは個別の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
パラメータ設定の伝播はサポートされていません。
シャード・データベースのソフトウェア・バージョンの管理
この項では、シャード・データベース構成内のソフトウェア・コンポーネントのバージョン管理について説明します。次の項目が含まれます。
シャード・データベースへのパッチ適用およびアップグレード
シャード・データベース環境への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 Database Global Data Services概要および管理ガイド(シャード・ディレクタのアップグレードの詳細)
Oracle Data Guard概要および管理(Oracle Data Guard構成内のパッチ適用およびアップグレードの詳細)
シャード・データベースのコンポーネントのアップグレード
コンポーネントが停止してオンライン状態に戻る際の停止時間を制限し、エラーを回避するためには、シャード・データベースのコンポーネントをアップグレードする順序が重要です。
シャード・データベースのコンポーネントをアップグレードするときは、次の点に注意する必要があります。
-
保留中の
MOVE CHUNK
操作が進行中の場合は、完了してください。 -
新しい
MOVE CHUNK
操作を開始しないでください。 -
アップグレード・プロセス中に新しいシャードを追加しないでください。
関連項目:
DBMS_ROLLINGを使用してローリング・アップグレードを実行する方法の詳細は、Oracle Data Guard概要および管理を参照してください。
Oracle Data Guard概要および管理(Oracle Data Guard構成内のデータベースのパッチ適用およびアップグレードの詳細)
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
アカウントもサポートするには、シャード・データベース・コンポーネントのアップグレードの説明に従って、アップグレード・プロセス中に次のステップを実行します。
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で検出されたシャード・データベースでのみ収集されます。
デフォルトのデータベース・メトリックでは、後述する拡張シャード・データベース・メトリックほど、頻繁にデータが提供されません。
マルチシャード問合せはメトリックの収集に使用されるため、シャード・データベース内のすべてのシャードにアクセスして問合せを実行できるユーザーも作成する必要があります。
デフォルト・メトリックを使用するには:
-
シャード間の問合せを実行する権限をユーザーに付与します。
alter session enable shard ddl;
-
すべてのシャードおよびシャード・カタログに新しいメトリック問合せアカウントを手動で作成します。
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*/
-
同じメトリック問合せアカウント資格証明を使用して、Enterprise Managerのシャード・カタログおよびすべてのシャード・データベースを検出します。
「前提条件: シャードされたデータベース・トポロジの検出」を参照してください
-
デフォルト・メトリックを有効にするには:
$emctl set property -sysman_pwd password -name oracle.sysman.db.ha.sdb.dd.usesdbmetrics -value false
拡張シャード・データベース・メトリックの使用
シャード・データベースの拡張メトリックを使用すると、シャードに関する情報をシャード・カタログから収集できるため、Enterprise Manager内のすべてのシャード・データベースを検出して、シャード・データベース・トポロジの完全なメトリックを取得する必要はありません。
拡張メトリックを使用するには:
-
Enterprise Managerでシャード・カタログを検出します。
「前提条件: シャードされたデータベース・トポロジの検出」を参照してください
-
コンソールまたはモニタリング・テンプレートを使用して、シャード・データベース・メトリックを有効にします。
$emctl set property -sysman_pwd password -name oracle.sysman.db.ha.sdb.dd.usesdbmetrics -value true
シャード・データベースのコンポーネントの検出
Enterprise Manager Cloud Controlでは、シャード・カタログおよびシャード・データベースを検出し、ガイドされた検出を使用してシャード・ディレクタ、シャード・データベース、シャード領域およびシャードグループを追加できます。
Cloud Controlでシャード・データベースを管理する前提条件として、まずシャード・ディレクタ・ホストおよびシャード・カタログ・データベースを少なくとも検出する必要があります。必要に応じて、シャード・データベース内のすべてのシャードを管理するために、シャード・データベースも検出する必要があります。
シャード・カタログ・データベースおよび各シャードはデータベースそのものであるため、標準のデータベース検出プロシージャを使用できます。
シャードの管理は、データベース検出を使用して個々のシャードを検出する場合のみ可能です。シャードの検出は、シャードなしのシャード・データベース構成にすることもできるため、シャード・データベースの検出ではオプションです。
ターゲット検出プロシージャが終了すると、シャード・データベース・ターゲットがCloud Controlに追加されます。Cloud Controlでシャード・データベースを開き、コンポーネントを監視および管理できます。
Oracle Enterprise Manager Cloud Controlによるシャード・データベースの管理の概要
シャード・データベースは、Oracle Enterprise Manager Cloud Controlを使用して構成、デプロイ、監視および管理できます
検出されたシャード・データベース・オブジェクトは、Enterprise Managerの「すべてのターゲット」ページで確認できます。
次に示すのは、「データベース」ターゲット・タイプ・カテゴリのOracle Shardingオブジェクトのシャード・ディレクタおよびシャード・データベースです。
![ターゲット・タイプ・データベースのOracle Shardingターゲット ターゲット・タイプ・データベースのOracle Shardingターゲット](img/shard_em_targets.png)
次に、「グループ」、「システムとサービス」ターゲット・タイプ・カテゴリのOracle Shardingオブジェクトのシャードグループおよびシャード領域を示します。
![「グループ」、「システムとサービス」ターゲット・タイプ・カテゴリ 「グループ」、「システムとサービス」ターゲット・タイプ・カテゴリ](img/shard_em_targets_b.png)
「シャードされたデータベース」ページでは、次に示すように、「プライマリ・シャードの追加」、「スタンバイ・シャードの追加」および「シャードのデプロイ」など、「シャードされたデータベース」メニューからほとんどの管理ツールにアクセスできます。
![「シャードされたデータベース」メニュー 「シャードされたデータベース」メニュー](img/shard_em_menu.png)
他のシャード・データベース・オブジェクトの管理ツールは、他のシャード・データベース・オブジェクト・ページのメニューにあります。このメニューは、これらのページにアクセスする必要がある手順で説明されています。
シャード・データベースの監視
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にある「シャードされたデータベース」ページの「データ分散およびパフォーマンス」では、シャード・データベースのデータの包括的ビューと、シャードの実行方法が表示されます。
概要
![トピックの残りの部分で説明されている全画面イメージ トピックの残りの部分で説明されている全画面イメージ](img/shard_em_ddp_screen.png)
ページ上部の「概要」セクションには、チャートのデータで表されるシャード・データベース構成のリージョン、シャード領域、シャードグループ、シャード(プライマリおよびスタンバイに分かれる)、チャンクおよびサービスの数が表示されます。チャートにフィルタを適用すると、これらの数値が変わります。
データ分散およびパフォーマンスのチャート・ビュー
チャートの左上隅にある2つのアイコンは、チャートを2つのビュー間で切り替えます。
図9-1 「ホーム」アイコンおよび上位シャード・アイコン
![「ホーム」および上位シャード 「ホーム」および上位シャード](img/shard_em_ddp_viewicons_b.png)
-
ホーム: デフォルト・ビューです。「ホーム」には、デフォルトでシャード・データベース内のすべてのシャードのデータが表示されます。次に示すように、チャートをフィルタしたり、表示上のメトリックを変更できます。
-
上位シャード: 特定のメトリックの上位5、10または20のシャードのチャートを示します。
シャード・ブロック
色分けされたチャートには、データがシャード別に表示されます。各シャードはブロックによって示されます。
図9-2 マウス・オーバー・テキストを使用したシャード・ブロック
![マウス・オーバー・テキストを使用したシャード・ブロック マウス・オーバー・テキストを使用したシャード・ブロック](img/shard_em_dpp_shard.png)
各ブロックには、シャード名のラベルが付けられます。ブロック上でマウスを移動すると、シャード名、Data Guardロール、シャード内のチャンク数およびサービス時間(ミリ秒/コール)が表示されます。
ノート:
デフォルトのデータベース・メトリックを使用している場合、チャートに未検出のシャードのデータは表示されません。拡張メトリックを使用している場合は、シャードがシャード・カタログで検出されるため、すべてのシャードのデータが表示されます。
ホーム・ビューのサマリー・アイコン
チャートの上にあるアイコンの行には、次の情報が表示されます。
図9-3 ホーム・ビューのサマリー・アイコン
![稼働中、停止中、未モニター、その他、クリティカル、警告 稼働中、停止中、未モニター、その他、クリティカル、警告](img/shard_em_dpp_sumicons.png)
-
稼働中: (上向きの緑色の矢印)稼働しているシャード・データベース数
-
停止中: (下向きの赤い矢印)停止しているシャード数
-
未モニター: (「X」が付いた黄色の矢印)監視されていないシャードの数。これは、Enterprise Managerで検出されなかったシャードの数です。
-
その他: (疑問符「?」が付いた黄色のギア) Enterprise Managerで検出されたが、到達不能なエージェントや可用性評価エラーなど、ターゲット監視に問題があるシャード・データベース・ターゲット。
-
クリティカル: (「X」が付いた赤い円)クリティカル・インシデントの数
-
警告: (感嘆符「!」が付いた黄色の三角形)警告インシデント数
チャート・ビュー・コントロール
各シャードのメトリックを、チャート内のブロックのサイズと色で比較します。
図9-4 チャート・ビュー・コントロール
![ビュー・サイズの基準、ビューの色の基準、しきい値の構成、ツリー・マップ表ビュー ビュー・サイズの基準、ビューの色の基準、しきい値の構成、ツリー・マップ表ビュー](img/shard_em_dpp_viewcontrols.png)
-
ビュー・サイズの基準: 選択したメトリックでブロックのサイズ分散を変更します
-
ビューの色の基準: 選択したメトリックでブロックの比較色を変更します
デフォルトでは、色は明るい青、中位の明るさの青色および濃い青色で、最も明るい色と最も暗い色のカテゴリのしきい値が任意のEnterprise Managerのデフォルトに設定されます。
「しきい値の構成」(3つのドットを含むボタン)をクリックして、各メトリックの低いカテゴリと高いカテゴリのカスタムしきい値を設定します。カスタムしきい値で構成されたチャートは、緑色=低、黄色=中、赤=高の各色のスペクトルで表示されます。
-
ツリー・マップ表ビュー: (チャートの右上隅にある表のボタン)チャートに表示されるデータの表ビューを表示します
フィルタ
チャートの左上隅にあるハンバーガ・アイコンをクリックして、データにフィルタを適用します。
図9-5 「フィルタ」アイコン
![フィルタの切替え フィルタの切替え](img/shard_em_ddp_filtericon.png)
-
シャード検索: シャード名でフィルタします。アスタリスク(*)を使用して、一致する名前パターンを持つシャードのグループを選択できます。
-
キー検索: シャード・キーの値を入力して、そのキーのデータを含むシャードを表示できます。表示されたチャートで、ブロックを右クリックしてシャード・レベル・データ分散を選択し、特定のシャードにドリルダウンできます。
-
SQL ID検索: 問合せのSQL IDによって問合せを実行しているシャードを表示します。これは、カタログ・データベースの
V$SQL_SHARD
ビューにあります。 -
ソート基準: デフォルトのタイル・ビューでチャート内のブロックをサイズでソートしたり、棒の順序でソートしたり、上位または下位の5ブロックのみを表示します。
-
フィルタ条件: 指定したロール、シャードグループまたはサービスのシャードのみを表示できます。
非アクティブなシャードを非表示: サービス・フィルタを使用すると、すべてのシャードが表示されますが、サービスが実行されていないシャードはグレー(非アクティブ)で表示されます。このチェック・ボックスを使用して非アクティブなシャードを非表示にできます。
-
グループ化: グループの集計の表示を切り替えます。これは、シャードグループの周りにボックス行で示されます。
-
「シャードグループ」では、グループ上部にシャードグループ・ボックスが表示され、ホバー時にシャードグループに関する集計情報が表示されます。シャードグループ・ベースのデータにドリルダウンできます。
-
「リージョン」では、グループの上部にリージョン・ボックスが表示され、ホバー時にリージョンに関する集計情報が表示されます。
-
Data Guard集計グループでは、各シャードとそのスタンバイが単一のエンティティとしてグループ化されるため、特定のシャードとそのスタンバイが全体として処理するデータ・セットを確認できます。
-
上位シャード・ビュー
チャートの左側にある上位シャード・ボタンをクリックして、データ・サイズ、チャンク数、スループットおよびサービス時間が最も大きいシャードのメトリックを含むグラフを表示します。
![前述のテキストで説明 前述のテキストで説明](img/em_shard_ddp_topfive.png)
ビューの右上隅にある「ビュー」リストを使用して、各グラフで上位5、10または20個のシャードを表示します。
![開いた「ビュー」リスト 開いた「ビュー」リスト](img/shard_em_dpp_topfiveno.png)
シャード管理
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にシャードを追加したときの自動再シャーディングの段階を示しています。
データまたはワークロードのスキューが発生したときに、シャード数を変更せずに、特定のチャンクを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スタンバイ・データベースはサポートされません。ただし、すでにシャード・データベースの一部であるシャードは、物理スタンバイからスナップショット・スタンバイに変換できます。物理スタンバイからスナップショット・スタンバイに変換する場合、次のステップに従う必要があります。
データベースが物理スタンバイに逆変換される場合、グローバル・サービスを有効化して再開できます。シャードはシャード・データベースのアクティブなメンバーになります。
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で監視している既存のターゲットである必要があります。
- シャードグループ管理ページから、シャードグループ・ターゲット・ページの左上隅にある「シャードグループ」メニューを開き、「シャードの管理」を選択します。
- 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
- リストからシャードを選択して、「検証」をクリックします。
- 「OK」をクリックして、シャードを検証することを確認します。
- ページ上部にある「情報」ボックスのリンクをクリックして、シャードのプロビジョニング・ステータスを表示します。
シャード検証スクリプトが正常に実行されると、出力にレポートされるエラーを確認します。
プライマリ・シャードの追加
Oracle Enterprise Manager Cloud Controlを使用して、プライマリ・シャードをOracle Shardingデプロイメントに追加します。
プライマリ・シャードは、Cloud Controlで監視している既存のターゲットである必要があります。
Oracle Sharding環境に追加する前にシャードを検証することを強くお薦めします。Cloud Controlを使用してシャードを検証するか(「シャードの検証」を参照)、またはSQL*Plusを使用してシャードに対してDBMS_GSM_FIX.validateShardプロシージャを実行します(「シャードの検証」を参照)。
上記の手順の「シャードされたデータベースにすべてのシャードをデプロイ」を選択しなかった場合、シャードのデプロイ・タスクを使用して、Oracle Shardingデプロイメントにシャードをデプロイします。
スタンバイ・シャードの追加
Oracle Enterprise Manager Cloud Controlを使用して、スタンバイ・シャードをOracle Shardingデプロイメントに追加します。
スタンバイ・シャードは、Cloud Controlで監視している既存のターゲットである必要があります。
Oracle Sharding環境に追加する前にシャードを検証することを強くお薦めします。Cloud Controlを使用してシャードを検証するか(「シャードの検証」を参照)、またはSQL*Plusを使用してシャードに対してDBMS_GSM_FIX.validateShardプロシージャを実行します(「シャードの検証」を参照)。
上記の手順の「シャードされたデータベースにすべてのシャードをデプロイ」を選択しなかった場合、シャードのデプロイ・タスクを使用して、Oracle Shardingデプロイメントにシャードをデプロイします。
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のチャンクは、新しいシャードが追加された後に自動的にリバランスされます。
新しいシャードのホストを準備するには、最初にシャード・データベース環境を準備したときと同じすべてのセットアップ手順(次の手順を含む)を行います。
関連項目:
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つのシャードから他のシャードにチャンクを移動できます。
チャンクの分割について
チャンクが大きくなりすぎた場合や、チャンクの一部のみを別のシャードに移行する必要がある場合は、シャード・データベースのチャンクを分割する必要があります。
Oracle Shardingはチャンクのオンライン分割をサポートします。理論上は、各シャードに1つのチャンクを作成し、データ移行が必要になるたびに分割できます。ただし、チャンクの分割はデータの可用性に影響しないものの、分割するパーティションのすべての行をスキャンしてから、1行ずつ新しいパーティションに挿入するため、時間がかかり、CPUにも負荷がかかる操作です。コンポジット・シャーディングの場合、チャンクの分割には時間がかかり、シャード・キーまたはスーパー・シャード・キーの新しい値を再定義するために停止時間が必要となることがあります。
したがって、各シャードに事前に複数のチャンクを作成し、次のいずれかの場合に分割することをお薦めします。再シャーディング中にデータをバランスよく分散するにはチャンク数が足りない場合、または特定のチャンクがホット・スポットになっている場合です。
システム管理のシャーディングの場合でも、単一のチャンクが他のチャンクより大きくなったり、よりアクティブになったりすることがあります。この場合は、そのチャンクを分割し、分割されたチャンクのいずれかが自動再シャーディングによって別のシャードに移動されることを許可すると、環境内のデータおよびアクティビティがより均等に配分されるように維持されます。
Oracle Enterprise Managerのヒート・マップには、どのチャンクが他のチャンクよりもアクティブになっているかが表示されます。この機能を使用してどのチャンクを分割できるかを識別し、分割されたチャンクのいずれかを別のシャードに移動して環境をリバランスできます。
関連項目:
GDSCTL SPLIT CHUNK
コマンドの使用方法の詳細は、Oracle Database Global Data Services概要および管理ガイドを参照してください
シャード・ディレクタ管理
Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのシャード・ディレクタを追加、編集および削除できます。
次の各項では、シャード・ディレクタの管理タスクについて説明します。
シャード・ディレクタの作成
Oracle Enterprise Manager Cloud Controlを使用して、シャード・ディレクタをOracle Shardingデプロイメントに作成して追加します。
シャード・ディレクタ構成の編集
Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのシャード・ディレクタ構成を編集します。
シャード・ディレクタの削除
Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントからシャード・ディレクタを削除します。
「シャード・ディレクタ」リストの列のチェック・マークに示されているように、削除するシャード・ディレクタが管理シャード・ディレクタの場合、削除する前に別のシャード・ディレクタを管理シャード・ディレクタに選択する必要があります。
- シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「シャード・ディレクタ」を選択します。
- 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
- リストからシャード・ディレクタを選択して、「削除」をクリックします。
- ページ上部にある「情報」ボックスのリンクをクリックして、シャード・ディレクタ削除のプロビジョニング・ステータスを表示します。
リージョン管理
Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのリージョンを追加、編集および削除できます。
次の各項では、リージョンの管理タスクについて説明します。
リージョンの作成
Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのシャード・データベース・リージョンを作成します。
- シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「リージョン」を選択します。
- 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」で管理するシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
- 「作成」をクリックします。
- 「リージョンの作成」ダイアログのリージョンに一意の名前を入力します。
- オプションで、既存のリージョンからバディ・リージョンを選択します。
- 「OK」をクリックします
- ページ上部にある「情報」ボックスのリンクをクリックして、リージョンのプロビジョニング・ステータスを表示します。
リージョン構成の編集
Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのシャード・データベース・リージョン構成を編集します。
- シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「リージョン」を選択します。
- 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」でシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
- リストからリージョンを選択して、「編集」をクリックします。
- バディ・リージョンを選択または削除して、「OK」をクリックします。
- ページ上部にある「情報」ボックスのリンクをクリックして、リージョン構成変更のプロビジョニング・ステータスを表示します。
リージョン構成が正常に更新されると、変更が「リージョン」リストに表示されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。
リージョンの削除
Oracle Enterprise Manager Cloud Controlを使用して、Oracle Shardingデプロイメントのシャード・データベース・リージョンを削除します。
- シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「リージョン」を選択します。
- 要求された場合、シャード・カタログ資格証明を入力し、「シャード・ディレクタ資格証明」でシャード・ディレクタを選択し、シャード・ディレクタ・ホスト資格証明を選択してログインします。
- リストからリージョンを選択して、「削除」をクリックします。
- ページ上部にある「情報」ボックスのリンクをクリックして、リージョン削除のプロビジョニング・ステータスを表示します。
リージョン構成が正常に削除されると、変更が「リージョン」リストに表示されます。更新内容を参照するには、ページのリフレッシュが必要な場合があります。
シャード領域管理
Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのシャード領域を追加、編集および削除できます。
次の各項では、シャード領域の管理タスクについて説明します。
シャードグループ管理
Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのシャードグループを追加、編集および削除できます。
次の各項では、シャードグループの管理タスクについて説明します。
サービス管理
Oracle Enterprise Manager Cloud Controlを使用したOracle Shardingデプロイメントのサービスを管理できます。
Oracle Shardingサービスを管理するには、シャード・データベース・ターゲット・ページの左上隅にある「シャードされたデータベース」メニューを開き、「サービス」を選択します。サービスページで、サービスのリストの上部にあるコントロールを使用して、サービスを起動、停止、有効化、無効化、作成、編集および削除できます。
サービスを選択すると、サービスを実行しているホストおよびシャード、ステータス、状態およびそれらの各インスタンスのData Guardロールを表示するサービス詳細リストが開きます。このリストのシャードを選択すると、個々のシャードのサービスを有効化、無効化、起動および停止できます。
次の各項では、サービスの管理タスクについて説明します。