プライマリ・コンテンツに移動
Oracle® Exadata Storage Server Softwareユーザーズ・ガイド
12cリリース2 (12.2)
E84909-03
目次へ移動
目次

前
次

10 Oracle Exadata Storageスナップショットの設定

この章のトピックは、次のとおりです:

10.1 Exadataスナップショットの概要

従来は、本番システムのデータベースをクローニングするには、Exadata以外のシステムにテスト・マスターとスナップショット・データベースを作成しました(図10-1)。場合によっては、これらのデータベースはソースのフル・コピーで、ソースと同じ容量のストレージが消費されます(図10-2)。

図10-1 従来のExadata以外のシステムへのクローニング

図10-1の説明が続きます
「図10-1 従来のExadata以外のシステムへのクローニング」の説明

図10-2 ソースのフル・コピーであるデータベース・クローン

図10-2の説明が続きます
「図10-2 ソースのフル・コピーであるデータベース・クローン」の説明

クローンが本番データベースのフル・コピーである場合、消費されるストレージ容量およびクローンの作成にかかる時間に関してコストが高くなります。数TBのデータベースのクローンを10個作成するケースを想像してみると、このアプローチが発展しない理由をすぐに理解できます。

このアプローチのもう1つのデメリットは、Exadata以外のシステムでOracle Exadata Storage Server Softwareの機能(スマート・スキャン、スマート・ロギング、スマート・フラッシュなど)が使用できないことです。

このような問題を解決するために、Exadataスナップショットを使用できます。Exadataスナップショットは、Oracleデータベースに対してスペース効率に優れた読取り専用クローンまたは読取り/書込みクローンを作成する理想的な方法です。このようなクローンは、開発やテストまたはその他の本番以外の目的で使用できます。また、複数のクローンが必要な場合にディスク領域や時間を節約することができます。次の図は、Exadataスナップショットで必要な領域を示します。

注意:

Exadataスナップショットは、開発およびテスト用にのみ使用してください。本番環境ではそれらを使用しないようにしてください。

図10-3 Exadataスナップショット

図10-3の説明が続きます
「図10-3 Exadataスナップショット」の説明

Exadataスナップショットは、ソース・データベースのフル・クローンであるテスト・マスターに基づいています。テスト・マスターはソース・データベースをフル・コピーしたものです。1つのテスト・マスターから複数のExadataスナップショットを作成することができ、追加ストレージと作業は最小限に抑えられます。各Exadataスナップショットで使用されるのはテスト・マスター用に必要な小容量のディスク領域のみで、スナップショットの作成も削除も数秒で行うことができます。各Exadataスナップショットはテスト・マスターの論理コピーです。

テスト・マスターからExadataスナップショットを作成する前に、必要であればテスト・マスターのデータを変更できます。たとえば、テスト・マスターの機密データを削除またはマスクしてから、権限を持たないユーザーがテスト・マスターを使用できるようにします。

テスト・マスターからのExadataスナップショットの作成は、子ファイルのヘッダーに親ファイル名を記録することにより行えます。この操作は数秒で完了し、必要なディスク領域も最小限です。追加のディスク領域が消費されるのは、スナップショットのユーザーがデータの変更を開始したときのみです。新しいデータのみがデータ・ブロックに書き込まれますが、そのデータ・ブロックは書込み時にスナップショットに割り当てられるものです。変更されていないデータに対するリクエストはすべて、テスト・マスターのデータ・ブロックによって処理されます。

複数のユーザーが、同じテスト・マスターから別々のスナップショットを作成することもできます。これにより、複数の開発環境およびテスト環境が、各ユーザー用のデータベースを別々に維持しつつ、領域を共有することができます。次の図は、同じテスト・マスターを使用する3つのExadataスナップショットがあるExadata環境です。

図10-4 同じテスト・マスターの3つのExadataスナップショットがあるExadata環境

図10-4の説明が続きます
「図10-4 同じテスト・マスターの3つのExadataスナップショットがあるExadata環境」の説明

階層型スナップショットおよび読取り-書込みスナップショット

Oracle Exadataリリース12.2.1.1.0では、階層型スナップショットおよび読取り-書込みスナップショットが導入されました。階層型スナップショットを使用すると、スナップショットからスナップショットを作成できます。スナップショットで作業しているときに、コピーを保存してから追加変更を加えたい場合に、これを行うことがあります。階層型スナップショットでは、テスト・マスターから枝分かれしたどのレベルでもスナップショットを作成できます。スナップショットは書込み可能です。スナップショットは、データの親のブロックを指します。スナップショットを編集すると、スナップショットは新しいデータを指すようになります。データが変更されていない場合は、親のブロックを指します。

スナップショットからスナップショットを取得して、親スナップショットを編集する場合は、そのスナップショットに依存するすべてのスナップショットを削除する必要があります。

10.1.1 Exadata機能のサポート

領域と時間の節約に加えて、Exadataスナップショットによって、Exadataでコスト効果の高い開発環境や品質が保証されたテスト環境が実現します。Exadataスナップショットは、完全に稼働するExadata環境(たとえば、Exadataスマート・フラッシュ、スマート・スキャン、ハイブリッド列圧縮など)において、機能の検証や保守および運用手順の実行を行う必要がある開発者およびテスト担当者が使用できます。

10.1.2 テスト/開発環境と本番環境の分離

テスト環境と開発環境は、本番データベースをホストするExadataラックとは別の物理Exadataラックでホストすることをお薦めします(図10-5および図10-6を参照)。開発とテスト専用のExadataシステムが理想です。テスト・マスターとそれに対応するExadataスナップショットをこのシステムでホストします。あるいは、容量が許す場合は、高可用性、障害時リカバリなどのためのData Guardスタンバイ・データベースをホストするExadataシステムを使用することもできます。テスト・マスターとそれに対応するスナップショットは、Exadataシステム上の物理マシンまたは仮想マシンに配置することができます。

10.1.3 Exadataスナップショットのタイプ

ご使用の環境の現在の設定に応じて、2種類のExadataスナップショットを作成できます。

  • プラガブル・データベース(PDB)がある場合は、そのデータベースからテスト・マスターを作成することができます。

    コンテナ・データベース(CDB)内の個々のPDBからExadataスナップショットPDBを作成できます。個々のPDBをクローニングしてテスト・マスターPDBを作成し、そこからExadataスナップショットPDBを生成できます。

    同一のExadataクラスタ内で、あるCDBから別のCDBへExadataスナップショットPDBを移動できます。また、2つのCDBが同じExadataクラスタにある場合、1つのコンテナに存在するテスト・マスターPDBから、もう1つのコンテナにExadataスナップショットPDBを作成することもできます。

    テスト・マスター・データベースと対応するExadataスナップショットは、同じASMクラスタ環境に存在する必要があります。

    次の図に、3つのPDBを含む本番CDBを示します。PDBのうち2つ(PDB1とPDB2)はクローニングされて、テスト・マスターPDBが作成されています。これらは、アンプラグされてからテストExadataシステムの別のCDBにプラグされました。この図では、6個のExadataスナップショットPDBがテスト・マスターPDBから作成されています。

    図10-5 ExadataスナップショットPDB

    図10-5の説明が続きます
    「図10-5 ExadataスナップショットPDB」の説明
  • 1つのコンテナ・データベース(CDB)があり、すべてのPDBからテスト・マスターを作成します。または、コンテナではない単純なデータベースがあり、そのデータベースからテスト・マスターを作成します。

    Exadataスナップショット・データベースは、非コンテナ・データベース(非CDB)またはコンテナ・データベース(CDB)のどちらにもすることができます。CDBのExadataスナップショット・データベースを作成すると、そのコンテナ内のすべてのプラガブル・データベースにアクセスできます。

    次の図は、本番データベースのフル・クローンです。クローン(つまりテスト・マスター・データベース)は、別のテスト/開発環境でホストされ、6個のExadataスナップショットが関連付けられています。

    テスト・マスター・データベースは、Data Guardスタンバイ・データベース(テスト・マスターを定期的にリフレッシュする場合に推奨)またはRMANを使用して作成されます。

    テスト・マスター・データベースと対応するExadataスナップショットは、同じASMクラスタ環境に存在する必要があります。

    図10-6 非マルチテナント環境でのExadataスナップショット・データベース

    図10-6の説明が続きます
    「図10-6 非マルチテナント環境でのExadataスナップショット・データベース」の説明

10.1.4 階層型スナップショット・データベース

Oracle Exadataリリース12.2.1.1.0では、階層型スナップショットが導入されました。階層型スナップショットを使用すると、他のスナップショット・データベースからスナップショット・データベースを作成できます。スナップショット・データベースで作業しているときに、コピーを保存してから追加変更を加える場合に、これを行うことがあります。スナップショット・データベースのレベルは希望する数だけ作成できますが、パフォーマンス上の理由により10レベルに制限することがあります。

図10-7 階層型スナップショット・データベース

図10-7の説明が続きます
「図10-7 階層型スナップショット・データベース」の説明

スナップショット・データベースは、データのその親のブロックを指します。スナップショット・データベースに変更を加えると、スナップショット・データベースは変更されたデータに新しいブロックを割り当てます。データが変更されていない場合は、親のブロックを指します。元のテスト・マスターから枝分かれした複数のレベルのスナップショットは、作成元のスナップショット・データベースを起点としたツリーを上に移動して、そのデータを取得します。

図10-8 階層型スナップショット・データベースでのブロックの割当て

図10-8の説明が続きます
「図10-8 階層型スナップショット・データベースでのブロックの割当て」の説明

別のスナップショット・データベースからスナップショット・データベースを取得して、親スナップショット・データベースに変更を加える場合は、そのスナップショット・データベースに依存するすべてのスナップショット・データベースを削除する必要があります。子スナップショットが親スナップショットから作成されると、親スナップショットは読取り専用になります。親スナップショットに再度書き込む場合は、すべての子スナップショットを削除する必要があります。

10.1.5 スパース・テスト・マスター

階層型スナップショットの導入に伴い、スパース・テスト・マスターを作成できるようになりました。

階層型スナップショット・データベースでは、スパース・テスト・マスターを作成できます。スパース・テスト・マスターは、データをフル・コピーしたものであり、複数のレベルのスナップショットに親ファイル・データを提供します。スナップショットを作成する準備ができたら、スパース・ファイルの追加セットを作成し、Data Guardなどのレプリケーション技術を使用して本番データベースから更新を受信します。現在のデータの新しいテスト・マスターを作成する必要がある場合は、その新しい時点で再度完全な本番データベースをクローニングするのではなく、以前の追加のスパース・ファイルを読取り専用とマークしてスパース・テスト・マスターを作成し、最新の状態の新しいスパース・ファイルのセットを作成します。このスパース・テスト・マスターに追加のスナップショットを作成して、アプリケーション開発者がテスト用に使用できるようにすることができます。 本番データベースの1つのフル・コピーで複数の時点のスナップショットをサポートできるように、このプロセスを合計9回まで繰り返すことができます。 新しいスパース・テスト・マスターは短時間(5分以内)で作成できるため、本番にあわせて簡単に最新に保つことができます。

図10-9 スパース・テスト・マスターを含む構成の例

図10-9の説明が続きます
「図10-9 スパース・テスト・マスターを含む構成の例」の説明

スパース・テスト・マスター・データベースは、CDBと非CDBの両方に適用されます。

10.2 Exadataスナップショット・データベースの前提条件

Exadataスナップショット・データベースを作成する前に、ご使用の環境が次の要件を満たしていることを確認します。

  • ストレージ・サーバーはExadata X3以降である必要があります

  • Exadata Storage Server Software 12.1.2.1.0以上(Exadataストレージ・サーバーおよびデータベース・サーバー用)

    セルにスパース・グリッド・ディスクがある状態では以前のバージョンにダウングレードできません。

  • Oracle Grid Infrastructure 12.1.0.2.0 BP5以上

    スパースASMグリッド・ディスクを含むASMディスク・グループでは、COMPATIBLE.RDBMSCOMPATIBLE.ASMの両方を12.1.0.2以上に設定する必要があります。

    親ディスク・グループは11.2と互換性を持つことができます。

  • Oracle Databaseバージョン12.1.0.2.0 BP5以上

    親データベースおよびスナップショット・データベースは12.1.0.2との互換性が必要です。

  • スナップショット・データベースと親データベースのデータ・ファイルは、同一のASMクラスタに存在する必要があります。

  • db_block_sizeは、4K以上で、4Kの倍数として指定する必要があります。

  • 階層型スナップショット・データベース、スパース・テスト・マスター・データベース、ASM cpコマンドの新しい--sparseオプションまたは新しいsetsparseparent ASMコマンドを使用している場合は、Oracle DatabaseおよびOracle Grid Infrastructure 12.2.0.1.0、およびOracle Exadata 12.2.1.1.0以降が必要です。

 

10.3 概念

この項では、Exadataスナップショットを作成して使用するために必要なオブジェクトについて説明します。内容は次のとおりです。

10.3.1 スパース・データベースおよびスパース・ファイル

データベースは次のファイルで構成されます。

  • 制御ファイル

  • オンラインREDOログ

  • 一時ファイル

  • データ・ファイル

Exadataスナップショットのようなスパース・データベースでは、データ・ファイルはスパース・ファイルです。図10-3に示すように、スパース・ファイルは、親ファイルのブロックに対する変更のみを含み(親ファイルは変更されません)、未変更データにアクセスするために親ファイルへのポインタを保持します。

Exadataスナップショットは、他のデータベース・ファイル(制御ファイル、オンラインREDOログおよび一時ファイル)のコピーを含みます。このような他のデータベース・ファイルはスパース・ファイルではありません。

10.3.2 スパース・グリッド・ディスク

スパースASMディスク・グループはスパース・グリッド・ディスクで構成されます。スパース・グリッド・ディスクには仮想サイズ属性と物理サイズ属性があります。

単一のセル・ディスクからスパース・グリッド・ディスクに割り当てることのできる最大物理サイズは4TBです。最大仮想サイズは100TBです。

スパース・グリッド・ディスクを作成してからスパースASMディスク・グループを作成します。新しいシステムをデプロイしている場合、または既存のシステムを再デプロイしている場合は、他のディスク・グループのケースと同様に、各セル・ディスクの領域の一部をディスク・グループ用に確保します。

再イメージ化せずに既存のシステムを使用する場合は、既存のグリッド・ディスクのサイズ変更の方法について、My Oracle Supportノート1467056.1を参照してください。

10.3.3 スパース・ディスク・グループ

Exadataスナップショットは、Oracle ASMスパース・ディスク・グループを利用します。つまり、スパース・データ・ファイルはOracle ASMスパース・ディスク・グループにしか作成できません。次の図に、3つのExadataスナップショットを含むスパース・ディスク・グループを示します。

図10-10 Exadataスナップショットを含むスパース・ディスク・グループ

図10-10の説明が続きます
「図10-10 Exadataスナップショットを含むスパース・ディスク・グループ」の説明

スパースASMディスク・グループは、スパース・ファイルと非スパース・ファイルを格納できます。スパースASMディスク・グループにすべてのデータベース・オブジェクトを作成できます。たとえば、Exadataスナップショットを含むスパースASMディスク・グループにテスト・マスター・データベースを作成できます。テスト・マスターはソース・データベースのフル・コピーであるため、領域は節約されないことに注意してください。

スパース・ディスク・グループには次の属性があります。

  • compatible.asmは12.1.0.2以上に設定する必要があります。

  • compatible.rdbmsは12.1.0.2以上に設定する必要があります。

  • cell.sparse_dgallsparseに設定する必要があります。これは、ディスク・グループがスパース・グリッド・ディスクで構成されていることをASMに示す新しい属性です。

  • appliance.modetrueに設定する必要があります。

  • スパース・ディスク・グループは、エクステントの16倍のサイズを使用します。4Mの割当て単位(AU)では、各エクステントは64Mになります。

  • スパース・ディスク・グループは仮想割当てメタデータを使用します。

たとえば、次のSQLコマンドによってスパース・ディスク・グループが作成されます。

SQL> create diskgroup SPARSE
  normal redundancy 
  disk 'o/*/SPARSE_*'
  attribute 
    'compatible.asm'          = '12.1.0.2',
    'compatible.rdbms'        = '12.1.0.2',
    'cell.smart_scan_capable' = 'true',
    'cell.sparse_dg'          = 'allsparse',
    'au_size'                 = '4M';

10.4 スパース・ディスクのサイズ変更および割当てメソドロジ

Exadataスナップショットを作成するには、スパース・グリッド・ディスクをそれらのディスクに基づいて作成されたASMディスク・グループで作成する必要があります。既存のディスク・グループを直接変更してスパース・ディスク・グループに変換することはできません。スパース属性で新規のグリッド・ディスクを作成する必要があります。既存のディスク・グループを使用する場合、ディスク・グループおよび関連付けられているグリッド・ディスクを削除して再作成する必要があります。

新しいスパース・ディスク・グループを作成する際、すべての領域が現在既存のディスク・グループに割り当てられている場合、1つ以上の既存のディスク・グループをサイズ変更して領域を空ける必要があります。このプロセスを実行するには、次の手順を実行します。

10.4.1 サイズ変更手順

サイズ変更を行う場合、非スパース・データベースをスパース・ディスク・グループに入れることもできます。非スパース・データベースおよびファイルは、全部の物理領域を使い切ります。

単一のセル・ディスクからスパース・グリッド・ディスクに割り当てることのできる最大物理サイズは4TBです。

スパース・グリッド・ディスクごとに割り当てることのできる最大仮想サイズは100TBです。しかし、さらなるパフォーマンスへの影響を回避するために、本当に必要な場合を除き、大きな仮想サイズを作成することは推奨されません。

  1. スナップショットの物理領域の容量を決定します。「グリッド・ディスクの物理サイズの計算」にある式を使用します。

    スパース・グリッド・ディスクへの物理領域割当ての最大開始点として、合計領域の15%が適しています。これは将来の利用パターンおよびニーズに基づき、必要に応じて増減できます。

  2. スナップショットに必要な仮想領域の容量を決定します。「グリッド・ディスクの仮想サイズの計算」にある式を使用します。

    基となるグリッド・ディスクには変更を加えずに、ASMディスク・グループを変更するだけで、仮想サイズをオンラインで変更できます。

  3. 一度に持つスナップショット数および行う予定の変更数を使用し、My Oracle Supportの「Exadataの新しいグリッド・ディスクおよびディスク・グループのサイズを計算するためのスクリプト」(Doc ID 1464809.1)のスクリプトを使用して、スパース・ディスク・グループに領域を空けるために縮小する既存のディスク・グループを決定します。このスクリプトの結果に基づき、複数のディスク・グループを縮小して、スパース・ディスク・グループに必要な領域を得ることができます。元のディスク・グループに最低15%の空き領域を残して、サイズ変更操作中にリバランスできるようにします。

    現在のディスク・グループに、スパース・ディスク・グループに必要な領域を提供する十分な空き領域がない場合:

    • この環境でのスパースの使用方法を再考し、それに応じて縮小します

    • この環境から空き領域のある別の環境に、オブジェクトとデータベースを再配置します

    • 記憶域を追加します

  4. サイズを変更するディスク・グループを決定したら、My Oracle Supportの「Exadataのグリッド・ディスクのサイズ変更: ローリングによるRECOグリッド・ディスクの再作成の例」(Doc ID 1465230.1)の手順に従って、ディスクのサイズを変更します。このプロセスでは、ローリング方式でサイズ変更を行うことができます。サイズ変更するディスク・グループに、1つのセルをグループ外にリバランスするのに十分な空き領域があることが、主要な前提条件になります。
  5. 「スパース・グリッド・ディスクの作成」に概説されているコマンドを使用して、解放したばかりの領域からスパース・グリッド・ディスクを作成します。
  6. 「物理領域のサイズ変更」に概説されているコマンドを使用して、スパースASMディスク・グループを作成します。
  7. スパース・グリッド・ディスクのアクティビティを監視するには、「スパース・ディスク・グループ・アクティビティの監視」を参照してください。
  8. スパース・グリッド・ディスクをサイズ変更する必要がある場合:
    • より多くの物理領域が必要な場合は、この項の手順1から4に従って領域を解放した後、「物理領域のサイズ変更」の手順に従います。単一のセル・ディスクからスパース・グリッド・ディスクに割り当てることのできる最大物理サイズは4TBです。

    • より多くの仮想領域が必要な場合は、「仮想領域のサイズ変更」の手順に従います。単一のセル・ディスクからスパース・グリッド・ディスクに割り当てることのできる最大仮想サイズは100TBです。

10.5 リフレッシュの考慮事項(Exadataスナップショットのライフサイクル)

リフレッシュ・サイクルが、Exadataスナップショットの使用および作成方法に影響することがあります。テスト・マスターは、READONLY状態(オープンしている場合)か、スナップショットが関連付けられているときはクローズ状態になっている必要があります。テスト・マスターをリフレッシュする必要がある場合は、そのテスト・マスターに依存するすべてのスナップショットを削除して再作成する必要があります。

様々なグループのスナップショット・ユーザーのリフレッシュ・サイクル要件が異なる場合、複数のテスト・マスターを維持する必要が生じます。次の図に、それぞれに独自のリフレッシュ・スケジュールがある3つのテスト・マスターを示します。

図10-11 PDB1の3つの開発者グループ(それぞれのリフレッシュ・サイクルが異なる)

図10-11の説明が続きます
「図10-11 PDB1の3つの開発者グループ(それぞれのリフレッシュ・サイクルが異なる)」の説明

 

10.6 テスト・マスターとしてのOracle Data Guardスタンバイ・データベースの使用

テスト・マスターが非コンテナ・データベースか、定期的にリフレッシュが必要なフルCDBである場合(つまり、テスト・マスターがPDBでない場合)、テスト・マスター・データベースを、その目的専用のData Guard物理スタンバイとして作成することをお薦めします。

この方法を使用すると次に示す複数のメリットが得られます。

  • 容易なリフレッシュ

    Oracle Data Guardは、本番データベースの複数の物理レプリカ(障害時リカバリ、本番の読取り専用オフロード、バックアップ・オフロードおよびテストに使用される)を同期するソリューションとして実績があります。これと同じ機能を使用すると、本番データベースのコピーをテスト・マスター・データベース専用として維持でき、定期的なリフレッシュも容易に行うことができます。Data Guard物理スタンバイを使用するメリットは、テスト・マスター・データベースのサイズやリフレッシュが必要な回数に応じて増大します。Data Guardレプリカの作成は、RMANバックアップからデータベースを単純にクローニングすることに比べて細々とした手順が必要になりますが、利点の方が大きく上回ります。

  • プライマリへの最小の影響

    Data Guardレプリカがテスト・マスター・データベースとして使用されている間、Data Guard REDOのトランスポートおよび適用は無効になります。本番データベースの影響はまったくありません。リフレッシュする際には、Data Guardレプリカがテスト・マスター・データベースに変換されて以降に生成されたデルタのみが本番データベースから取得され、テスト・マスター・データベースの再同期に使用されます。

    注意: このData Guardレプリカがテスト・マスターとして作動している間、トランスポートと適用は停止されるため、障害時リカバリなどテスト・マスター以外の目的には使用しないでください。すでに高可用性または障害保護の目的でData Guardを使用している場合は、Exadataスナップショット・データベース用のテスト・マスター・データベースとして使用するためにData Guardレプリカを作成することをお薦めします。

  • スナップショット・クローン作成前の容易な修正

    Data Guardでは、Exadataスナップショットの作成に使用する前に、テスト・マスター・データベースを簡単に変更できます。たとえば、Data Guardレプリカを読取り/書込みとして開き、マスクまたは修正してからExadataスナップショットを作成できます。その後、テストが完了したら、テスト・マスター・データベースをData Guardレプリカに再変換することができます。このときに、元のコピーに加えらえた変更が破棄され、本番データベースのデルタのみを使用してリフレッシュされます。Data Guardレプリカのリフレッシュ後は、テスト・マスターとして再使用する前に、データベースを再修正する必要があることに注意してください。

    RMANバックアップ・データベースを使用しているときに、データをマスクまたは修正した場合は、テスト・マスターをリフレッシュする必要があるときに、別のバックアップをテスト・マスターとして作成し、それを再修正して最新状態にする必要があります。

10.7 Exadataスナップショットの管理

Exadataスナップショットを作成および管理するには、次の手順を実行する必要があります。

10.7.1 スパース・グリッド・ディスクの作成

スパース・グリッド・ディスクを作成するときは、物理サイズと仮想サイズを指定する必要があります。

10.7.1.1 グリッド・ディスクの物理サイズの計算

次の式を使用して、スパースASMディスク・グループ用に確保する物理領域の合計を推計できます。

Total physical space =
   (SUM(size of all test masters in the sparse ASM disk group) +
    SUM(approximate size of all updates to the snapshot databases))
   * ASM Redundancy

この式では、ASM冗長性はエクステントのASMミラー化を考慮に入れています。Exadataでは、ASM冗長性を標準冗長性(エクステントを二重にミラー化)または高冗長性(エクステントを三重にミラー化)に設定する必要があります。スパースASMディスク・グループが標準冗長性を使用する場合は、2倍の領域が使用されると考えます。高冗長性を使用する場合は、3倍の領域が使用されると考えます。

たとえば、スパースASMディスク・グループ内に2つのテスト・マスターが必要で、このディスク・グループを合計容量500GB (それぞれ250GB)の標準冗長性で作成するとします。さらに、各テスト・マスターに対して5個のExadataスナップショットが生成され、各スナップショットがブロックの20%を変更すると推定した場合、必要となる合計物理領域は次のように計算されます。

Space for 2 test masters:   2 * 250 GB =                                500 GB
Space for 5 snapshots per test master, for a total of 10 snapshots:
    10 * 250 GB * 20% =                                                 500 GB
Subtotal                                                               1000 GB
Normal redundancy: 2 * 1000 GB =                                       2000 GB

この値をディスク数で割って、各ディスクのsizeパラメータを決定します。ASMグリッド・ディスクは、16MBごとの境界で割り当てる必要があります。各グリッド・ディスクのMBのsizeパラメータが16で均等に分割できない場合は、16MB境界に合うように調整します。

複数のプロジェクトや複数の反復で使用するために余分な領域を確保しておく必要があることに注意してください。

また、ディスクのリバランス操作に対応するには、スナップショットおよびテスト・マスターに使用される領域の上に15%の領域クッションを追加する必要があります。

10.7.1.2 グリッド・ディスクの仮想サイズの計算

次の式を使用して、スパースASMディスク・グループに割り当てる仮想サイズを推計できます。

Virtual size required for sparse disks =
   (SUM(full virtual size of all Exadata snapshots) + Physical space allocated)
   * ASM Redundancy

前の項の例を使用すると、10個のExadataスナップショットがあります。これらがテスト・マスターのフル・コピーである場合、それぞれ250GBになります。

次に、合計仮想領域の計算を示します。

Full size for 5 snapshots per test master, for a total of 10 snapshots:
    10 * 250 GB =                                                      2500 GB
Size of the 2 test masters: 2 * 250 GB =                                500 GB
Subtotal                                                               3000 GB
Normal redundancy: 2 * 3000 GB =                                       6000 GB

この値をディスク数で割って、各ディスクのvirtualsizeパラメータを決定します。各グリッド・ディスクの仮想サイズは、16MBごとの境界で割り当てる必要があります。各グリッド・ディスクのMBのvirtualSizeパラメータが16で均等に分割できない場合は、16MB境界に合うように調整します。

複数のプロジェクトや複数の反復で使用するために余分な領域を確保しておく必要があることに注意してください。

10.7.1.3 スパース・グリッド・ディスクの作成

スパースASMグリッド・ディスクを作成するには、CellCLIで各セルにログインし(またはdcliを使用し)、次のようなコマンドを実行します。サイズの値は必要に応じて変更してください。

CellCLI> create griddisk all harddisk prefix=SPARSE, size=56G, virtualsize=560G

これによって、物理サイズが56GBのグリッド・ディスクが作成されますが、ASMに対しては560GBのグリッド・ディスクとして表されます。sizeパラメータは、ASMグリッド・ディスクの実際の物理サイズと一致する必要がありますが、virtualsizeパラメータはASMグリッド・ディスクの物理サイズ以上に設定してください。

ここで作成されらASMグリッド・ディスクの属性は、LIST GRIDDISK DETAILコマンドでは次のように表示されます。

CellCLI> LIST GRIDDISK DETAIL
size:        56G
sparse:      TRUE
virtualSize: 560G

sizeは、グリッド・ディスクの実際の物理サイズです。

sparseの値はTRUEです。

virtualSizeは、グリッド・ディスクの仮想サイズです。

10.7.2 スパース・グリッド・ディスク用のASMディスク・グループの作成

スパース・グリッド・ディスクを作成した後で、ASMディスク・グループを作成して、それらのディスクにクラスタ上のデータベースがアクセスできるようにします。ディスク・グループを作成するには、SQL*Plusをsysasmとして使用してASMインスタンスにログインし、次のようなコマンドを実行します。

SQL> create diskgroup SPARSE high redundancy disk 'o/*/SPARSE_*' attribute
'compatible.asm'='12.1.0.2', 
'compatible.rdbms'='12.1.0.2', 
'au_size'='4M', 
'cell.smart_scan_capable'='true', 
'cell.sparse_dg'='allsparse', 
'appliance.mode' = 'TRUE';

compatible.asmは12.1.0.2以上に設定する必要があります。

compatible.rdbmsは12.1.0.2以上に設定する必要があります。

cell.sparse_dgallsparseに設定する必要があります。これは、ディスク・グループがスパース・グリッド・ディスクで構成されていることをASMに示します。

appliance.modetrueに設定する必要があります。

 

10.7.3 テスト・マスターの設定

次のいずれかの方法を使用してテスト・マスターを作成できます。

次に、「テスト・マスター・データ・ファイルの所有権の設定」で説明されているタスクを実行します。

10.7.3.1 新しいテスト・マスターの作成 - ASM ACLが有効化されたディスク・グループでのフル・クローン

データベースのフル・クローンを作成するには、RMANバックアップ/リストアやデータ・ポンプなど、データベースのフル・クローンの作成に一般的に使用される方法を使用します。

フル・クローンを作成したら、すべてのデータ・ファイルの書込み権限を削除して、誤って上書きされることを防ぎます。

ファイル権限を読取り専用に設定できるのはASMインスタンスでのSQLコマンドのみです。SQLでは書込み権限を削除できません。

SQL> ALTER DISKGROUP DATA set permission owner=read ONLY, group=read ONLY, other=none for file 'FILENAME';

10.7.3.2 既存のフル・クローンまたはスタンバイ・データベースのテスト・マスターへの変換

すでに存在しているフル・クローンまたはスタンバイ・データベースをテスト・マスターとして利用したい場合は、そのデータベースをテスト・マスターに変換できます。

スタンバイ・データベースは、テスト・マスターとして作動している間、REDO適用を実行できません。
  1. Oracle Data Guardスタンバイ・データベースを使用している場合は、次の手順を実行します。
    1. Data Guardレプリカを初めて作成する場合は、My Oracle Supportノート1617946.1の手順を使用します。

      Data Guardコピーを、READ ONLY状態で開くためには十分なREDOが適用されている必要があります。

      注意:

      Oracle Data Guardスナップショット・スタンバイはOracle Exadataスナップショットとは異なります。Oracle Data Guardスナップショット・スタンバイは、読取り/書込みで開いているソース・データベースの完全なコピーです。Oracle Data Guardスナップショット・スタンバイへの変換は1つのコマンドを使用する単純な操作です。Oracle Data Guardスナップショット・スタンバイでは、後の手順でのテストに備えて、テスト・マスターへの変更やリフレッシュを容易に行うことができます。Oracle Data Guardスナップショット・スタンバイ・データベースの詳細は、『Oracle Data Guard概要および管理』のスナップショット・スタンバイ・データベースの管理に関する項を参照してください。

    2. スタンバイ・データベースが一貫性のある状態で、READ ONLYモードで開くことができる場合は、スタンバイへのログのトランスポートを停止してスタンバイでのREDOの適用を無効にする必要があります。
      DGMGRL> edit database TESTMASTER set property logshipping=OFF;
      Property "logshipping" updated
      DGMGRL> edit database TESTMASTER set state=APPLY-OFF;
      Succeeded
      
    3. テスト・マスターに変更を行います。たとえば、必要な場合に機密データを削除します。
  2. compatible.ASMcompatible.RDBMSの両方が11.2.0.0以上であることを確認します。
  3. テストマスターのデータファイルが格納されるディスク・グループ上のアクセス制御がすでに有効化されていない場合は、ディスク・グループ上のアクセス・コントロールを有効にします。

    ディスク・グループはOracle Exadata上にあることが必要です。

    SQL> ALTER DISKGROUP DATA SET ATTRIBUTE 'ACCESS_CONTROL.ENABLED' = 'TRUE';
    
  4. すべてのデータ・ファイルに所有権を付与します。
  5. すべてのデータ・ファイルの書込み権限を削除して、誤って上書きされることを防ぎます。

    ファイル権限を読取り専用に設定できるのはASMインスタンスでのSQLコマンドのみです。SQLでは書込み権限を削除できません。

    SQL> ALTER DISKGROUP DATA set permission owner=read ONLY, group=read ONLY, other=none for file 'FILENAME';
    

    これにより、スナップショットが作成され、ベース・ファイル所有者以外のユーザーによって所有されます。

10.7.3.3 テスト・マスター・データ・ファイルの所有権の設定

データベースをクローニングしてテスト・マスター・データベースを作成したら、オペレーティング・システム・ユーザーをディスク・グループの所有者として設定し、そのオペレーティング・システム・ユーザーをテスト・マスター・データ・ファイルの所有者にします。

これには、SQLコマンドをSQL*Plusで手動で実行するか、スクリプトを実行します。

10.7.3.3.1 コマンドの手動実行

テスト・マスター・データ・ファイルの所有権を設定するには、SQL*Plusを使用してコマンドを手動で実行します。

次のコマンドをSQL*Plusで実行します。
  1. アクセス権限を付与するオペレーティング・システム・ユーザーがユーザーとしてディスク・グループに追加されていない場合は、ユーザーを追加します。

    注意:

    アクセス制御を有効にする場合、データベースを実行しているすべてのソフトウェア所有者をユーザーとしてディスク・グループに追加する必要があります。

    たとえば、SCOTTという名前のユーザーをDATAディスク・グループの所有者として追加するには、次のコマンドを使用します。

    SQL> ALTER DISKGROUP DATA ADD USER 'scott';
    
  2. このオペレーティング・システム・ユーザーをテスト・マスターのデータ・ファイルの所有者にします。
    SQL> ALTER DISKGROUP DATA SET OWNERSHIP OWNER='scott' FOR FILE
      '+DATA/TESTMASTER/DATAFILE/system.257.865863315';
    
    SQL> ALTER DISKGROUP DATA SET OWNERSHIP OWNER='scott' FOR FILE
      '+DATA/TESTMASTER/DATAFILE/sysaux.258.865863317';
    
    SQL> ALTER DISKGROUP DATA SET OWNERSHIP OWNER='scott' FOR FILE 
      '+DATA/TESTMASTER/DATAFILE/sysext.259.865863317';
    
    SQL> ALTER DISKGROUP DATA SET OWNERSHIP OWNER='scott' FOR FILE 
      '+DATA/TESTMASTER/DATAFILE/tbs_1.256.865863315';
    

関連項目

  • Oracle Automatic Storage Management管理者ガイド
10.7.3.3.2 スクリプトの実行

次の手順は、前のコマンドと同じ結果になりますが、ファイル名をv$datafileに問い合せる点が異なります。

  1. ディスク・グループの所有者としてオペレーティング・システム・ユーザーを追加します。
    SQL> ALTER DISKGROUP DATA ADD USER 'scott';
    
  2. set_owner.sqlという名前のスクリプトを生成して、テスト・マスター・データ・ファイルの所有者を設定します。
    • テスト・マスターがフル・データベースの場合は、テスト・マスター・データベースで次のコマンドを実行します。

      set newpage 0
      set linesize 999
      set pagesize 0
      set feedback off
      set heading off
      set echo off
      set space 0
      set tab off
      set trimspool on
      spool set_owner.sql
      select 'ALTER DISKGROUP DATA set ownership owner='||''''||'scott'||''''||' for file '||''''||name||''''||';' from v$datafile;
      exit
      
    • テスト・マスターがPDBの場合は、テスト・マスターPDBのCDB$ROOTで次のコマンドを実行します。

      次のselect文では、この例のテスト・マスターPDBのcon_idは10と想定しています。

      set newpage 0
      set linesize 999
      set pagesize 0
      set feedback off
      set heading off
      set echo off
      set space 0
      set tab off
      set trimspool on
      spool set_owner.sql
      select 'ALTER DISKGROUP DATA set ownership owner='||''''||'scott'||''''||' for file '||''''||name||''''||';' from v$datafile where con_id=10;
      exit
      
  3. set_owner.sqlの余分な行を削除します。
    sed -i '/SQL/d' set_owner.sql
    
  4. このスクリプトをASMインスタンスで実行します。
    SQL> @set_owner
    

10.7.4 テスト・マスター・データベース(読取り専用)からのスナップショット・データベースの作成

プラガブル・データベース(PDB)またはフル・データベースのExadataスナップショット・データベースを作成できます。テスト・マスター・データベースからスナップショット・データベースを作成する場合、テスト・マスター・データベースは読取り専用になります。

前者はExadataスナップショットPDB、後者はスナップショット・データベース(非CDBまたはCDB)です。

10.7.4.1 プラガブル・データベースのスナップショットの作成

プラガブル・データベース(PDB)のExadataスナップショットの作成は、手動の手順を加える必要がないため、スナップショットの作成の中で最も単純です。CREATE PLUGGABLE DATABASE文に、PDBをExadataスナップショットとして指定する2つの句が新たに追加されました。スナップショット作成プロセスにより、テスト・マスターPDBのファイルが修正されないように、ファイルに対する権限がREADONLYに変更されます。

個々のExadataスナップショットPDBの作成は、指定のCDB内のPDB数が少ない場合にスナップショットを作成するときに最適です。次の図に、2つのPDBスナップショットがあるPDBの典型的なライフサイクルの概要を例として示します。

図10-12 PDBを使用するExadataスナップショットのライフサイクル

図10-12の説明が続きます
「図10-12 PDBを使用するExadataスナップショットのライフサイクル」の例

OracleのマルチテナントとPDBのメリットの1つは、既存のPDBのクローンを容易にクローニングしてテスト・マスターを作成し、あるCDBから別のCDBに移動できることです。ソースPDBをクローニングしてテスト・マスターを作成し、必要なデータ修正を実行できるテスト環境にテスト・マスターを移行することをお薦めします。これが完了したら、テスト・マスターPDBを使用してExadataスナップショットPDBをいくつでも作成できます。

注意: ExadataスナップショットPDBはCDB内のPDBとして作成されます。1つのCDB内のPDBの合計数は252に制限されます。CDB内のPDBはすべて(テスト・マスター、スナップショット、またはスナップショットに使用されていないPDBのいずれでも)、この制限に含まれます。1つのCDBの制限を超えてPDBを作成する必要がある場合は、同じクラスタ上の別のCDBにExadataスナップショットPDBを作成できます。

テスト・マスターPDBを作成した後で、次の手順を実行してExadataスナップショットPDBを作成します。

  1. SQL*Plusでcdb$rootに接続します。
  2. すべてのインスタンスでテスト・マスターPDBをクローズします。
    SQL> alter pluggable database PDB1TM1 close instances=all;
    
  3. ローカル・インスタンスでテスト・マスターPDBを読取り専用モードでオープンします。
    SQL> alter pluggable database PDB1TM1 open read only;
    
  4. このテスト・マスターのExadataスナップショットPDBを作成します。
    SQL> create pluggable database PDB1S1 from PDB1TM1 tempfile reuse 
    create_file_dest='+SPARSE' snapshot copy;
    

    create_file_destには、スパース・ディスク・グループの名前を指定する必要があります。こうすることで、Exadataスナップショットのファイルが正しいディスク・グループに作成されます。snapshot copy句によって、フルPDBクローンではなくスナップショットとしてPDBが作成されます。

    注意: ExadataスナップショットPDBが作成されるとき、コマンドによって、テスト・マスターPDBに対するファイル権限が変更され、ファイルがASMでREADONLYとしてマークされます。

10.7.4.2 フル・データベースのスナップショットの作成

フル・データベースのExadataスナップショットを作成するのは、テスト・マスター・データベースが非CDBの場合、またはCDBであるが実質すべてのPDBがテストで使用される場合です。

テスト・マスター・データベースは、高可用性または障害時リカバリを提供するフェイルオーバー・ターゲットとして使用できないことに注意してください(Data Guard構成は、別の目的に使用される複数のレプリカを含むことができます)。テスト・マスターPDBと似ていますが、テスト・マスター・データベースは、対応するExadataスナップショットが存在している場合は変更できません。

テスト・マスター・データベースとして、リカバリ・モードの読取り専用スタンバイ・データベース(たとえばリアル・タイム適用のActive Data Guard)を使用することはできません。

テスト・マスター・データベースと対応するExadataスナップショットは、同じOracle ASMクラスタ環境に存在する必要があります。

次の図は、Exadataテスト・マスター・データベースおよびスナップショット・データベースのライフサイクルを示しています。

図10-13 テスト・マスター・データベースおよびスナップショット・データベースのライフサイクル

図10-13の説明が続きます
「図10-13 テスト・マスター・データベースおよびスナップショット・データベースのライフサイクル」の説明
  1. テスト・マスター・データベースで、トレースする既存の制御ファイルをバックアップすることにより、Exadataスナップショット・データベース用のサンプル制御ファイル・スクリプトを作成します。

    SYSDBAとしてSQL*Plusからテスト・マスター・データベースに接続し、次を実行します。

    1. セッションで生成されるすべてのトレース・ファイルの名前と場所を判別します。
      SQL> SELECT value FROM v$diag_info WHERE name = 'Default Trace File';
      
      VALUE
      ---------------------------------------------------------------------------------
      /u01/app/oracle/diag/rdbms/TESTMASTER/TESTMASTER1/trace/TESTMASTER1_ora_26756.trc
      
    2. BACKUP CONTROLFILE TO TRACEコマンドを実行し、CREATE CONTROLFILEコマンドをトレース・ファイルに含めます。
      SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
      
    3. デフォルト・トレース・ファイルとして示されるファイルを取得します。
  2. テスト・マスター・データベースで、名前を変更する手順(手順10で実行)のために既存のファイル名を判別します。

    SYSDBAとしてSQL*Plusにログインし、次のコマンドを実行します。

    SET newpage 0
    SET linesize 999
    SET pagesize 0
    SET feedback off
    SET heading off
    SET echo off
    SET space 0
    SET tab off
    SET trimspool on
    SPOOL rename_files.sql
    SELECT 'EXECUTE dbms_dnfs.clonedb_renamefile -
    ('||''''||name||''''||','||''''||REPLACE(REPLACE(REPLACE(name,'.','_'),-
    'TESTMASTER','JOHNTEST'),'+DATA','+SPARSE')||''''||');' FROM v$datafile;
    EXIT 
    

    前述の問合せにより、次のような、各データ・ファイル用の文を含むrename_files.sqlというファイルが作成されます。

    EXECUTE dbms_dnfs.clonedb_renamefile (
    '+DATA/TESTMASTER/DATAFILE/system.257.865863315',
    '+SPARSE/JOHNTEST/DATAFILE/system_257_865863315');
    

    REPLACEは、問合せ内で次にように働きます。

    • オリジナルのファイル名に含まれるピリオドをアンダースコアに置換

    • オリジナルのデータベース名のTESTMASTERをJOHNTESTに置換

    • オリジナルのディスク・グループ名の+DATAを+SPARSEに置換

  3. テスト・マスターを停止します。
    SQL> shutdown;
    
  4. Exadataスナップショット・データベースのinit.oraファイルを作成します。

    テスト・マスターのinit.oraファイルをテンプレートとして使用できますが、db_nameおよびcontrol_filesエントリを必ず変更してください。この手順では、Exadataスナップショット・データベースのinit.oraファイルは、コマンドおよび例でsnap_init.oraとして参照されます。

    $ cp init_TestMaster.ora snap_init.ora
    

    たとえば、snap_init.oraを次のように新しいデータベース名、新しい制御ファイルおよび監査ファイルの宛先で変更します。

    db_name = JohnTest
    control_files = '+DATA/JOHNTEST/control1.f'
    audit_file_dest=/u01/app/oracle/admin/johntest/adump
  5. 手順1で生成したトレース・ファイルを編集します。

    トレース・ファイルを変更して、Exadataスナップショット・データベースの制御ファイルを作成し、crt_ctlfile.sqlという名前のSQLファイルを作成します。このスクリプトは、手順9で使用します。

    制御ファイルは、Exadataスナップショット・データベース名、新しいログ・ファイル名、およびテスト・マスターのデータ・ファイル名を使用して作成してください。

    この後の例は、制御ファイル作成スクリプトです。JohnTestはExadataスナップショット・データベースです。LOGFILE行は新しいログ・ファイルの場所を指定し、DATAFILE行はテスト・マスター・データベースのデータ・ファイルの場所を指定します。新しいログ・ファイルは、十分な領域がある任意のディスク・グループに格納できますが、スパースOracle ASMディスク・グループ内に作成することはできません。

    SQL> CREATE CONTROLFILE REUSE SET DATABASE JohnTest RESETLOGS ARCHIVELOG
          MAXLOGFILES 32 
          MAXLOGMEMBERS 2 
          MAXINSTANCES 1 
          MAXLOGHISTORY 908 
      LOGFILE 
          GROUP 1 '+DATA/JOHNTEST/t_log1.f' SIZE 100M BLOCKSIZE 512,
          GROUP 2 '+DATA/JOHNTEST/t_log2.f' SIZE 100M BLOCKSIZE 512
      DATAFILE
          '+DATA/TESTMASTER/DATAFILE/system.257.865863315',
          '+DATA/TESTMASTER/DATAFILE/sysaux.258.865863317',
          '+DATA/TESTMASTER/DATAFILE/sysext.259.865863317',
          '+DATA/TESTMASTER/DATAFILE/tbs_1.256.865863315'
      CHARACTER SET WE8DEC; 
    
  6. スナップショットが動作するすべてのノードにaudit_file_destディレクトリを作成します。
    $ mkdir -p /u01/app/oracle/admin/johntest/adump
  7. Oracle ASMにスナップショット・データ・ファイルのディレクトリを作成します。
    ASMCDMを使用して、次のコマンドを実行します。
    $ asmcmd -p 
    ASMCMD > cd +SPARSE 
    ASMCMD [+sparse] > mkdir JOHNTEST 
    ASMCMD [+sparse] > cd JOHNTEST 
    ASMCMD [+sparse/johntest] > mkdir DATAFILE
  8. 次のコマンドを使用し、Exadataスナップショット・データベースのinit.oraファイルを指定してデータベース・インスタンスを起動します。
    $ sqlplus / as sysdba
    SQL> startup nomount pfile=snap_init.ora
    
  9. 手順5で作成されたスクリプトを使用してExadataスナップショット制御ファイルを作成します。

    次の例ではスクリプトの名前はcrt_ctlfile.sqlです。

    SQL> @crt_ctlfile
    
  10. 手順2で変更したスクリプトを実行します。

    Exadataスナップショット・データベースを開く前に、すべてのファイルの名前を変更する必要があります。

    SQL*Plusを使用してSYSDBAとしてExadataスナップショット・データベースに接続し、次のコマンドを実行します。

    SQL> @rename_files
    

    このスクリプトは、Oracle ASMに格納されたテスト・マスター・データベース・ファイルの権限を変更し、READONLYとしてマークします。

    dbms_dnfs.clonedb_renamefileプロシージャ(rename_files.sqlによって呼び出される)は、テスト・マスター・データベースとスナップショット・データベースの間の親子関係を設定し、スナップショット・データベースの制御ファイル内のファイル名を変更します。

  11. RESETLOGSオプションを指定してExadataスナップショット・データベースを開きます。
    SQL> ALTER DATABASE OPEN RESETLOGS;
    
  12. Exadataスナップショット・ファイルがテスト・マスター・データベースの子ファイルであることを確認します。SQL*Plusを使用してSYSASMとしてExadataスナップショットに接続し、次のコマンドを実行します。
    SQL> SELECT filenumber num, clonefilename child, snapshotfilename parent
    FROM x$ksfdsscloneinfo;
    

    問い合わせの出力例を、次に示します。

    NUM  CHILD                                        
    ---- ---------------------------------------------
    PARENT 
    -----------------
    1     +SPARSE/JOHNTEST/DATAFILE/system_257_865863315
    +DATA/TESTMASTER/DATAFILE/system.257.865863315
    
    2     +SPARSE/JOHNTEST/DATAFILE/sysaux_258_865863317
    +DATA/TESTMASTER/DATAFILE/sysaux.258.865863317
    
    3     +SPARSE/JOHNTEST/DATAFILE/sysext_259_865863317
    +DATA/TESTMASTER/DATAFILE/sysext.259.865863317
    
    4     +SPARSE/JOHNTEST/DATAFILE/tbs_1_256_865863315
     +DATA/TESTMASTER/DATAFILE/tbs_1.256.865863315 
  13. SQL*Plusを使用してExadataスナップショット・データベースにログインし、TEMP表領域に一時ファイルを追加します。これは、スパースではなく、フル・サイズの一時ファイルです。
    SQL> ALTER TABLESPACE temp ADD TEMPFILE '+DATA' SIZE 10G;
    

10.7.5 テスト・マスター・データベース(読取り専用)のリフレッシュ

テスト・マスター・データベース(読取り専用)をリフレッシュするための主な手順は次のとおりです。

10.7.5.1 手順1: スナップショット・データベースの削除

リフレッシュするテスト・マスター・データベースの子であるExadataスナップショット・データベースを削除します。

RMANを使用して削除できます。たとえば、ExadataスナップショットをターゲットとしたRMANを使用して、各Exadataスナップショット・データベースに接続し、次のコマンドを実行します。

RMAN> startup mount force;
RMAN> delete database;

注意: Exadataスナップショット・データベースの削除に失敗しても、テスト・マスター・データベースの状態には影響しません。ただし、テスト・マスター・データベースが削除またはリフレッシュされると、Exadataスナップショットで予期しない動作が発生することがあります。

10.7.5.2 手順2: テスト・マスターの権限の読取り/書込みへの変更

  1. すべてのExadataスナップショット・データベースが削除されたら、テスト・マスター・データベースをマウント・モードで起動します。

    テスト・マスターにSQL*Plusを使用して接続し、次のスクリプトを実行して、テスト・マスター・データベースに属するデータ・ファイルの権限をリセットするコマンドを含む新しいSQLスクリプトを作成します。

    set newpage 0 
    set linesize 999 
    set pagesize 0 
    set feedback off 
    set heading off 
    set echo off 
    set space 0 
    set tab off 
    set trimspool on 
    spool change_perm.sql 
    select 'ALTER DISKGROUP DATA set permission owner=read write, 
    group=read write, other=none for file '||''''||name||''''||';' from v$datafile; 
    exit 
    
  2. 次のsedコマンドを実行し、前の手順で作成されたchange_perm.sqlスクリプトから余分な行を削除します。change_perm.sqlスクリプトを含むディレクトリで、このコマンドをシェルから実行します。
    $ sed -i '/SQL/d' change_perm.sql
    
  3. SQL*PlusからASMインスタンスにsysasmとして接続し、change_perm.sqlスクリプトを実行します。このスクリプトは、テスト・マスターのデータ・ファイルを書込み可能にするために権限を変更します。
    SQL> @change_perm
    

10.7.5.3 手順3: テスト・マスター・データベースのData Guardレプリカへの再変換

最初にData Guardスナップショット・スタンバイを使用してテスト・マスター・データベースを用意していた場合は、Data Guard変換コマンドを使用して元の状態のData Guardレプリカに再変換します。これにより、レプリカをテスト・マスターとして準備するために加えられた変更は破棄されます。また、現在のバックアップを完全にリストアするかわりに、ソース・データベースの増分変更のみを使用してテスト・マスターをリフレッシュできるようになります。

10.7.5.4 手順4: テスト・マスター・データベースの更新

テスト・マスター・データベースのリフレッシュには2つのオプションがあります。

  • Data Guardによりテスト・マスター・データベースをリフレッシュ

    Data Guardレプリカがテスト・マスター・データベースとして使用されたのがごく短期間で、ソース・データベースでこの期間に生成されたすべてのREDOがディスク上のアーカイブ・ログにある場合、REDOの移動を有効にしてREDO適用を開始できます。テスト・マスター・データベースは標準のData Guardプロトコルを使用して、アーカイブ・ログを取得し、ログを適用して、プライマリ・データベースの状態に追い付きます。Data Guardレプリカが必要な状態までリフレッシュされたら、REDOの移動を無効化してREDOの適用を停止し、前に説明したテスト・マスター/スナップショットの作成サイクルを繰り返します。

    このオプションのメリットは、テスト・マスター・データベースを最新状態にする前の段階でREDO適用を停止できることです。

    Data Guardによってスタンバイをリフレッシュさせるには、スタンバイへのログの移動とスタンバイでのREDOの適用を有効にします。

    DGMGRL> edit database TESTMASTER set property logshipping=ON; 
    Property "logshipping" updated 
    DGMGRL> edit database TESTMASTER set state=apply-on; 
    Succeeded
    
  • RMAN RECOVER...FROM SERVICEを使用してテスト・マスター・データベースをロール・フォワード

    Data Guardレプリカがテスト・マスター・データベースとして長期にわたって使用されている場合、またはData Guardによってテスト・マスター・データベースを自動的にリフレッシュするためのREDOがディスク上にない場合は、RMANを使用してネットワークを介したライブ増分適用を実行します。

    この方法を使用する主なメリットは、追加のディスク領域が必要ないことです。RMANが、プライマリの変更済ブロックをネットワークを介してスタンバイに移し、直接適用します。また、RMANは、テスト・マスターのデータファイルのSCNに基づいて取得すべきブロックを判別することでプロセスを大幅に単純化します。この方法では中間の時点にリカバリすることはできません。リフレッシュによってテスト・マスター・データベースがプライマリと同じ状態になります。この方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』のRMANリカバリの実行の拡張シナリオに関する項を参照してください。

    RMANネットワーク増分を使用してテスト・マスター・データベースをリフレッシュするには、次の手順を実行します。

    1. RMANに接続するためにSQL*Netを準備します。このプロセスでこれらの手順を実行する必要があるのは初回のみです。

      1. テスト・マスター・データベース(Data Guardレプリカ)のlistener.oraエントリを作成して、RMANがSIDに接続できるようにします。データベースがNOMOUNTモードでオープンしている場合、このサービスは起動されないためです。次に、このエントリの例を示します。

        SID_LIST_LISTENER = 
          (SID_LIST =   
            (SID_DESC = 
              (SID_NAME = TESTMASTER1)
              (ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1)
            )
          )
        
      2. listener.oraに対する変更を反映するためにリスナーをリロードします。

         $ lsnrctl reload listener 
        
      3. ローカル・テスト・マスター・インスタンスのSIDを指すTNSエントリをテスト・マスター環境に作成します。このエントリでは、接続リクエストが正しいホストに送られるように、SCAN名ではなくローカル・ホスト名を使用する必要があります。

        TESTMASTER1 = 
          (DESCRIPTION = 
            (ADDRESS = (PROTOCOL = TCP)(HOST = standbydb01.us.oracle.com)(PORT = 1521))
            (CONNECT_DATA = 
              (SERVER = DEDICATED) 
              (SID = TESTMASTER1) 
              (UR=A) 
            ) 
          ) 
        
    2. RMAN経由でテスト・マスター・データベースに接続し、CURRENT_SCNを後で使用するために保存します。これを使用して、直前のリフレッシュ以降に新たに作成されたファイルをソース・データベースからリストアする必要があるかどうかを判別します。

      RMAN> select current_scn from v$database;
      CURRENT_SCN# 
      ------------------ 
                17081990 
      
    3. Data GuardレプリカのオンラインREDOログ・ファイル名およびスタンバイREDOログ・ファイル名をメモします。後の手順でこれらの名前が必要になる場合があります。

      次のコマンドでは、REDOログ・ファイル名およびグループ識別子が表示されます。

      RMAN> SELECT type, group#, member FROM v$logfile;
      
    4. ソース・データベースに基づいてData Guardレプリカのスタンバイ制御ファイルをリフレッシュして、制御ファイルを最新状態にします。

      1. RMANターゲットとしてData Guardレプリカに再接続します。

      2. これをNOMOUNTモードで再起動します。

        RMAN> startup nomount force;
        
      3. ソース・データベース上の制御ファイルを使用して、スタンバイ制御ファイルをリストアします。

        次のコマンド例では、SOURCEMASTER (ソース・データベース)のデータベース制御ファイルを使用して、Data Guardレプリカ上の制御ファイルがリストアされます。

        RMAN> RESTORE STANDBY CONTROLFILE FROM SERVICE SOURCEMASTER;
        
      4. 次のコマンドを使用してData Guardレプリカをマウントします。

        RMAN> ALTER DATABASE MOUNT;
        
    5. RMANカタログを使用していない場合、スタンバイ制御ファイル内のファイルの名前は、ソース・データベースで使用されていた名前になります。スタンバイ制御ファイル内のデータファイル名および一時ファイル名を更新する必要があります。

      CATALOGコマンドおよびSWITCHコマンドを使用してすべてのデータ・ファイルの名前を更新します。SWITCHコマンドは、ソース・データベースの新たに作成されたファイルを手順7でリストアした後で使用されます。

      RMAN> CATALOG START WITH '+DATA/TESTMASTER/DATAFILE/';
      

      この例で、+DATA/TESTMASTER/DATAFILE/はData Guardレプリカのデータ・ファイルの場所です。すべてのデータファイルを、この場所に格納する必要があります。

    6. 手順2のCURRENT_SCNを使用して、ソース・データベースからリストアする必要がある新しいファイルが追加されたかどうかを判別します。

      RMAN> select file# from v$datafile where creation_change# >= 17081990;
       FILE#
      ---------- 
               9 
              10 
      
    7. 前の問合せでファイルが返された場合は、それらのデータファイルをソース・データベースからリストアします。前の手順で返されたFILE#のリストを使用して、次のようなRMAN RUNブロックを実行します。FILE#が返されなかった場合はこの手順をスキップします。

      RMAN> run{ 
      2> set newname for database to '+DATA';
      3> restore datafile 9,10 from service SOURCEMASTER;
      4> } 
      
    8. RMANカタログを使用しない場合は、手順5でカタログ化されたコピーに切り替えて、スタンバイ制御ファイルのデータファイル名を変更します。

      RMAN> SWITCH DATABASE TO COPY;
      
    9. 次の方法で、スタンバイ制御ファイル内のオンラインREDOログとスタンバイREDOログの名前を更新します。

      • ALTER DATABASE CLEARコマンドを使用して、Data GuardレプリカのすべてのREDOログ・グループのログ・ファイルを消去します。RMANで、すべてのスタンバイREDOログおよびオンラインREDOログ・ファイルを再作成します。

        注意: Data Guardレプリカに、ソース・データベースのオンラインREDOログ・ファイルおよびスタンバイREDOログ・ファイルへのアクセス権がない場合のみ、ログ・ファイルを消去することをお薦めします。Data Guardレプリカに、ソース・データベースのREDOログ・ファイルへのアクセス権があり、ソース・データベースのREDOログ・ファイル名がOMF名である場合は、ALTER DATABASEコマンドでソース・データベース上のログ・ファイルを削除します。また、ログ・ファイルの消去により新しいログ・ファイルが作成されます。既存のファイルは使用されません。制御ファイルはそのような既存のファイルを認識しません。領域を節約するため、ALTER DATABASE CLEARコマンドを実行する前に既存のログ・ファイルをASMから削除します。

        手順5で問い合せたV$LOGFILEビューのGROUP#列に、消去する必要があるログ・グループのREDOログ・グループ識別子が示されます。個別にALTER DATABASE CLEARコマンドを使用して、各REDOログ・グループを消去します。

        次のコマンドで、識別子2を持つREDOログ・グループを消去します。

        SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
        
      • ALTER DATABASE RENAME FILEコマンドを使用して、REDOログ・ファイルの名前を変更します。個別のコマンドを使用して、手順5で示された各ログ・ファイルの名前を変更します。

        ログ・ファイルの名前を変更するには、STANDBY_FILE_MANAGEMENT初期化パラメータをMANUALに設定する必要があります。ソース・データベースとData Guardレプリカで、オンラインREDOログ・ファイルとスタンバイREDOログ・ファイルの数が同じ場合、ログ・ファイルの名前を変更することをお薦めします。

    10. RMAN RECOVER...FROM SERVICEを使用して、データ・ファイルを最新状態にロール・フォワードします。この操作には追加の領域は必要ありません。このプロセスではファイルは最新状態にしかリフレッシュできません。それよりも前の時点にファイルをリフレッシュすることはできません。手順3で作成したTNSエントリを使用して、RMAN経由でターゲットとしてData Guardレプリカに接続し、次のコマンドを発行します。指定されるサービスはプライマリを指す必要があります。

      RMAN> recover database noredo from service SOURCEMASTER;
      
    11. Data GuardレプリカへのREDOの移動を有効にし、REDOの適用を開始します。これは、手順10の中で適用したブロックで制御ファイルを更新するために必要です。

      DGMGRL> edit database TESTMASTER set property logshipping=ON;
      Property "logshipping" updated
      DGMGRL> edit database TESTMASTER set state=apply-on;
      Succeeded.
      
    12. REDOが適用されたら、Data Guardレプリカをテスト・マスター・データベースに変換するために使用したプロセスを繰り返して、Exadataデータベース・スナップショットを作成します。忘れずにスタンバイでログの移動とREDOの適用を再び無効にしてください。

10.7.5.5 手順5: テスト・マスターのクローズとすべてのテスト・マスター・データ・ファイルの読取り専用設定

次に、「テスト・マスター・データ・ファイルの所有権の設定」.で説明されているタスクのいずれかを完了します。

10.7.5.6 手順6: すべてのスナップショットの再作成

「テスト・マスター・データベース(読取り専用)からのスナップショット・データベースの作成」で説明されているフル・データベースまたはプラガブル・データベース(PDB)のExadataスナップショット・データベースを作成できます。

10.7.6 別のスナップショット・データベースからのスナップショット・データベースの作成

スナップショットからスナップショットを作成するには、次の手順を実行します。

  1. 第1レベルのスナップショットを作成します。次の例では、このスナップショットは、PDB1S1と呼ばれています。

    create pluggable database PDB1S1
      from PDB1TM1
      create_file_dest='+SPARSE'
      snapshot copy;
  2. 次の手順で読取り専用として再度開くことができるように、PDBを開いて閉じます。

    alter pluggable database PDB1S1 open;
    alter pluggable database PDB1S1 close;
    
  3. テスト・マスターとして機能できるように、PDBを読取り専用モードで開きます。

    alter pluggable database PDB1S1 open read only;
  4. 手順1で作成したスナップショットからスナップショットを作成します。次の例では、第2レベルのスナップショットは、PDB1S1_Aと呼ばれています。

    create pluggable database PDB1S1_A
      from PDB1S1
      create_file_dest='+SPARSE'
      snapshot copy;
    
    alter pluggable database PDB1S1_A open;

10.7.7 フル・データベースの1つのコピーからのスパース・テスト・マスターの作成

フル・データベースの1つのコピーから複数のスパース・テスト・マスターを作成できます。テスト・マスターのソースは、Data Guardのフィジカル・スタンバイ・データベースのフル・コピーです。このスタンバイ・データベースは、スイッチオーバーまたはフェイルオーバーのターゲットとして使用しないでください。これは、このプロセスで定義されたテスト・マスターのソースとしてのみ使用するようにしてください。

このプロセスでは、階層型スナップショット機能を利用してREDOを送信および適用できるようにし、スタンバイ・データベースを本番にあわせて最新に保ちます。また、Exadata Storageスナップショットで使用されるテスト・マスターのソースとして使用されるファイルを提供します。フィジカル・スタンバイ・データベースは、プライマリ・データベースのフル・コピーとして開始されます。ストレージ・スナップショットを作成する準備ができたら、フル・データベース・ファイルを指すスパース・データ・ファイルを作成し、プライマリから送信されたREDOを適用します。次に、これらのスパース・ファイルをスタンバイ・データベース・インスタンスで使用して、REDOを適用します。また、スパース・データ・ファイルをActive Data Guardモードで開いて、現在のデータの読取り専用アクセスを指定することもできます。

様々な時点で追加のスナップショットが必要な場合は、以前作成したスパース・ファイルの上に新しいスパース・ファイルを作成してREDOを適用し、データを最新に保つプロセスを繰り返します。これにより、データ・ファイルの1つのフル・コピーを使用して、様々な時点の複数のテスト・マスターとして使用できます。また、既存のスナップショットを削除する必要がないため、新しいテスト・マスターを短時間で作成することもできます。

制限事項

このプロセスは、非コンテナ・データベースでもコンテナ・データベースでも使用できますが、Oracle Data Guardで使用している場合は、プラガブル・データベース(PDB)に対する制限があります。

  • プライマリ・データベースのシードから新しいPDBを作成すると、スタンバイ・データベースでのActive Data Guard操作に関係なく、CREATE PLUGGABLE DATABASE文のREDOが適用されたときに、自動的にスタンバイ・データベースにロールされます。

  • ソースPDBがプライマリ・データベースに存在するプライマリ・データベースで実行されるクローンの場合は、スタンバイ・データベースでクローンPDBを自動的に開始するためにActive Data Guardモードにする必要があります。

  • ソースPDBが別のデータベースに存在するプライマリ・データベースで実行されるクローンの場合は、PDBの作成でメソッドを使用して、このスタンバイ・データベースでのリカバリを遅延する必要があります。これらのクローンPDBは、スタンバイが完全にリフレッシュされるまで、スタンバイに含まれません。

  • プライマリ・データベースにプラグインされたPDBの場合は、ファイルをスタンバイ・データベースに事前にコピーするか、PDBのプラグインでメソッドを使用して、このスタンバイ・データベースでのリカバリを遅延する必要があります。

PDBの移行操作が原因でスタンバイでのREDO適用が失敗した場合、またはPDBのリカバリを有効にする必要がある場合は、プライマリからフル・スタンバイ・データベースをリフレッシュする必要があります。

次のタスクは、フィジカル・スタンバイ・データベースがすでに作成されていて、テスト・マスターのソースとして使用することを前提としています。

関連項目:

『Oracle Data Guard概要および管理』プライマリ・データベースでのPDBの作成に関する項

10.7.7.1 タスク1: スタンバイ・データベースをスパース・テスト・マスターとして使用するための準備

スタンバイ・データベースの既存のファイルは、スナップショットのサポートに使用されます。スタンバイの既存のファイルを指す一連のスパース・ファイルを作成します。プライマリ・データベースから受信したREDOが、これらのファイルに適用されます。これらのスパース・ファイルにより、スタンバイ・データベースをスパース・テスト・マスターとして使用できるようになり、また、プライマリ・データベースを最新に保つことができます。

  1. スタンバイでREDO適用を停止します。

    サポート・ファイルを作成してスナップショットを作成するためにデータベースの構造を静止状態にするには、スタンバイ・データベースでREDO適用をオフにする必要があります。

    DGMGRL> edit database tm_standby set state='APPLY-OFF';
  2. 現在のスタンバイ・データベースのデータ・ファイルをテスト・マスターとして使用する準備をします。
    テスト・マスターとして使用するデータ・ファイルは、次の前提条件を満たす必要があります。
    1. ファイルが存在するディスク・グループは、access_control.enabled属性をTRUEに設定する必要があります。

      この例では、+DATAディスク・グループにこの属性を設定しています。この手順の実行は、ディスク・グループに対して1回のみ必要です。

      SYSASMとして、SQL*Plusを使用してOracle ASMインスタンスにログインし、次のコマンドを発行します。

      SQL> alter diskgroup DATA set attribute 'ACCESS_CONTROL.ENABLED'='TRUE';
    2. データベースの所有者ユーザーを、ファイルが存在するディスク・グループの明示的なユーザーとして追加する必要があります。

      この例では、+DATAディスク・グループへのアクセス権をユーザーSCOTTに付与しています。この手順の実行は、各ディスク・グループのユーザーごとに1回のみ必要です。

      SYSASMユーザーとして接続中にSQL*Plusを使用して、次のコマンドを発行します。

      SQL> alter diskgroup DATA add user 'scott';
    3. 使用するファイルでは、データベースの所有者ユーザーに明示的な権限が付与されている必要があります。

      これらのファイルを使用してスナップショットを作成するすべてのユーザー、およびスナップショットで参照されるすべてのファイルに対してこの手順を実行する必要があります。次のスクリプトを使用して、所有権の設定を実行するSQL文を作成できます。SQL*Plusを使用して、スタンバイ・データベースに接続中にこのスクリプトを実行します。スタンバイがコンテナ・データベース(CDB)の場合、cdb$rootコンテナに接続する必要があります。

      set newpage 0
      set linesize 999
      set pagesize 0
      set feedback offset heading off
      set echo off
      set space 0
      set tab off
      set trimspool on
      spool set_owner.sql
      select 'ALTER DISKGROUP DATA set ownership owner='||''''||'scott'||''''||' 
       for file '||''''||name||''''||';' from v$datafile;
      exit

      文を作成したら、SQL*Plusを使用してSYSASMユーザーとしてOracle ASMインスタンスにログインし、set_owner.sqlスクリプトを実行します。

      SQL> @set_owner
  3. 制御ファイルのバックアップを作成します。

    すべてのスナップショットは、スタンバイ・データベースの現在の状態を使用して作成されるため、スタンバイを構成するすべてのファイルを把握する必要があります。制御ファイルのバイナリ・バックアップを作成し、追加のスナップショットに必要なCREATE CONTROLFILEスクリプトを今後作成できるようにします。

    SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/home/oracle/snap_tm/control_monday_tm.ctl';
  4. rename_files.sqlスクリプトを作成し、スナップショットのスパース・データ・ファイルを作成します。

    このスクリプトは、スナップショットで使用するスパース・データ・ファイルを作成するための一連のRENAME文を作成し、プライマリから受信したREDOを適用します。次のようなSQL文を使用します。この文は元のファイルと同じディレクトリ構造を使用しますが、ファイルはSPARSEディスク・グループに作成されることに注意してください。新しいファイル名は、'_' (アンダースコア)と'.' (ピリオド)を置換して作成されます。

    set newpage 0
    set linesize 999
    set pagesize 0
    set feedback off
    set heading off
    set echo offset space 0
    set tab off
    set trimspool on
    spool rename_files.sql
    select 'EXECUTE dbms_dnfs.clonedb_renamefile ('||''''||name||''''||
    ','||''''||replace(replace(name,'.','_'),'DATA/','SPARSE/')||''''||
    ');' from v$datafile;
    exit

    このスクリプトでは、次のような出力が生成されます。

    EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/DATAFILE/system.515.9304
    75939','+SPARSE/TM_STANDBY/DATAFILE/system_515_930475939');
    
    EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/429CE0836E0166ACE05382C8
    E50A1154/DATAFILE/system.567.930475945','+SPARSE/TM_STANDBY/429CE0836E0166ACE053
    82C8E50A1154/DATAFILE/system_567_930475945');
    
    EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/DATAFILE/sysaux.571.9304
    75939','+SPARSE/TM_STANDBY/DATAFILE/sysaux_571_930475939');
    
    EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/429CE0836E0166ACE05382C8
    E50A1154/DATAFILE/sysaux.516.930475945','+SPARSE/TM_STANDBY/429CE0836E0166ACE053
    82C8E50A1154/DATAFILE/sysaux_516_930475945');
    
    EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/DATAFILE/undotbs1.497.93
    0475939','+SPARSE/TM_STANDBY/DATAFILE/undotbs1_497_930475939');
    
    EXECUTE dbms_dnfs.clonedb_renamefile ('+DATA/TM_STANDBY/429CE0836E0166ACE05382C8
    E50A1154/DATAFILE/undotbs1.564.930475945','+SPARSE/TM_STANDBY/429CE0836E0166ACE0
    5382C8E50A1154/DATAFILE/undotbs1_564_930475945');
  5. ASMCMDを使用して、スクリプトrename_files.sqlで識別されたすべてのディレクトリに対してディレクトリを作成します。

    dbms_dnfs_clonedb_renamefileコマンドを実行する場合は、ファイルに使用されるすべてのディレクトリ構造がすでにASMに存在している必要があります。前の手順の出力を使用して必要な構造を特定し、必要に応じてこれを作成します。次の例のように、ASMCMDを使用してディレクトリを作成できます。

    cd ASMCMD [+] > cd sparse
    ASMCMD [+sparse] > ls
    ASMCMD [+sparse] > mkdir tm_standby
    ASMCMD [+sparse] > cd tm_standby
    ASMCMD [+sparse/tm_standby] > mkdir datafile
    ASMCMD [+sparse/tm_standby] > mkdir 429DC0E1BCBD1B90E05382C8E50A8E80
    ASMCMD [+sparse/tm_standby] > mkdir 429CE0836E0166ACE05382C8E50A1154
    ASMCMD [+sparse/tm_standby] > cd 429DC0E1BCBD1B90E05382C8E50A8E80
    ASMCMD [+sparse/tm_standby/429DC0E1BCBD1B90E05382C8E50A8E80] > mkdir datafile
    ASMCMD [+sparse/tm_standby/429DC0E1BCBD1B90E05382C8E50A8E80] > cd ../429CE0836E0166ACE05382C8E50A1154
    ASMCMD [+sparse/tm_standby/429CE0836E0166ACE05382C8E50A1154] > mkdir datafile

10.7.7.2 タスク2: スタンバイ・サイトでのスパース・テスト・マスターおよびスパース・ファイルの構成

このタスクでは、スタンバイをテスト・マスターに変換し、スパース・ファイルを作成して、プライマリ・データベースからREDOを受信して適用します。

注意:

このプロセスでは、フル・スナップショット・データベースを作成せず、既存のスタンバイ・データベースの一部を使用して、スタンバイにスパース・データ・ファイルを追加します。スタンバイ・データベースの制御ファイルは、追加されるスパース・ファイルを使用するために変更されます。今後は、同じスタンバイ・インスタンスが使用されますが、REDO適用ではスパース・ファイルを使用して変更を格納し、スナップショットのスパース・テスト・マスター・ファイルとして機能する元のスタンバイ・データ・ファイルはそのままにします。

既存のデータ・ファイルを使用して、プロセスが実行された時点のデータでフル・データベース・スナップショットをサポートします。

  1. TM_STANDBYデータベースのすべてのインスタンスを停止します。
    $ srvctl stop db –d tm_standby –o abort
  2. SQL*Plusを使用して、マウント・モードでTM_STANDBYインスタンスのいずれかを起動します。
    SQL> startup mount
  3. SPARSEディスク・グループを指すように、スタンバイ・インスタンスのDB_CREATE_FILE_DEST設定を変更します。
    これにより、作成される新しいデータ・ファイルすべてが、SPARSEディスク・グループに格納されます。この手順を実行するには、スタンバイ・ファイルの管理を無効にする必要があります。
    SQL> alter system set standby_file_management='MANUAL';
    SQL> alter system set db_create_file_dest='+SPARSE';
  4. スタンバイ・データベースに対してタスク1で作成したrename_files.sqlスクリプトを実行します。
    スクリプトを実行すると、TM_STANDBY制御ファイルでデータ・ファイルの名前が変更され、スナップショットのスパース・ファイルが作成されます。
    SQL> @rename_files
  5. スタンバイ・ファイルの管理を再度有効にします。
    この手順を完了すると、REDOを受信してデータ・ファイルを作成するときに、プライマリに追加された新しいデータ・ファイルすべてが、スタンバイによって自動的に作成されます。
    SQL> alter system set standby_file_management='AUTO';
  6. TM_STANDBYへのREDO適用を有効にします。
    この手順を完了すると、スナップショットにREDOが適用され、次回のスナップショット作成に備えて最新に保たれます。
    DGMGRL> edit database tm_standby set state='APPLY-ON';
  7. 残りのインスタンスをマウント・モードで再起動します。
    $ srvctl start db –d tm_standby –o mount

    注意:

    プライマリ・データベースでローカルPDBをクローニングする場合は、スタンバイでActive Data Guardモードを有効にします。これには、Active Data Guardのライセンスが必要です。

図10-15 REDOを適用するテスト・マスター・ファイルおよびスパース・ファイルを含む構成

図10-15の説明が続きます
「図10-15 REDOを適用するテスト・マスター・ファイルおよびスパース・ファイルを含む構成」の説明

10.7.7.3 タスク3: 新しいスパース・テスト・マスターを使用したフル・データベース・スナップショットの作成

新しいスパース・テスト・マスターを使用して、フル・スナップショットを作成します。

この時点で、スタンバイ・データベースの元のファイルに対してフル・スナップショットを作成できます(「フル・データベースのスナップショットの作成」を参照)。

「タスク1: スタンバイ・データベースをスパース・テスト・マスターとして使用するための準備」の手順2で作成したバックアップ制御ファイルを使用して、CREATE CONTROLFILE文を作成する必要があります。このファイルを使用するには、一時データベース・インスタンスを作成して制御ファイルをマウントし、バックアップ制御ファイルを実行してコマンドをトレースします。

  1. インスタンスで使用するための小さいPFILEファイルを作成します。

    少なくとも、PFILEファイルに次のパラメータが含まれている必要があります。

    control_files='/home/oracle/snap_tm/control_monday_tm.ctl'  # This should be the control file name created above
    db_name=primary             # This should be the db_name used in the Data Guard configuration
    db_unique_name=temp         # This should be a unique name for a database instance on this host
    sga_target=5g               # Provide enough memory to start the instance
    enable_pluggable_database=true   # This is required if the database is a container database. Do not specify for non-CDBs.
  2. 一意のORACLE_SIDを指すように環境を設定します。
    $ export ORACLE_SID=temp
  3. SQL*Plusを使用し、手順1で作成したPFILEを使用してマウント・モードでインスタンスを起動します。
    SQL> startup mount pfile='/home/oracle/snap_tm/pfile.ora'
  4. create controlfile文およびrename filesスクリプトを作成します。
    「フル・データベースのスナップショットの作成」の手順1および2を使用して、CREATE CONTROLFILE文およびrename filesスクリプトを作成します。「タスク1: スタンバイ・データベースをスパース・テスト・マスターとして使用するための準備」の手順4で作成したrename filesスクリプトを使用できますが、作成するスパース・ファイルのディレクトリ構造を変更する必要があります。

図10-16 スナップショット作成後の構成

図10-16の説明が続きます
「図10-16 スナップショット作成後の構成」の説明

10.7.7.4 タスク4: 以前に作成したスパース・テスト・マスターを使用した新しいスパース・テスト・マスターの作成

新しいテスト・マスターおよび新しいREDO適用ファイルを提供するために新しいスナップショットのセットを作成します。

テスト・マスターの完全なコピーを作成することなく、定期的にスタンバイ・データベースを使用して追加のスナップショットを作成できます。階層型スナップショット機能を利用して、前の3つのタスクで実行したプロセスを繰り返すことにより、これを行うことができます。新しいテスト・マスターは、REDOを適用している既存の最新のスナップショットの上に作成されます。このスナップショットは読取り専用となり、新しいスナップショットは、REDO適用処理を続行するように作成されます。

次を実行して、新しいテスト・マスター・タイムラインのスタンバイを構成します。

  1. 「タスク1: スタンバイ・データベースをスパース・テスト・マスターとして使用するための準備」の手順を次のように変更して繰り返します。

    このプロセスに変更はありませんが、新しいスナップショットを作成するためにスパース・ファイルを使用している点が異なります。

    1. 手順2では、+DATAディスク・グループを変更するすべてのコマンドを、+SPARSEディスク・グループを変更するコマンドに変更します。
      アクセス制御を設定するコマンドおよびデータベース所有者ユーザーをディスク・グループに追加するコマンドは、1回のみ実行する必要があります。
    2. 手順4では、スナップショットに別の名前を指定します。

      新しいスナップショットを作成しているため、ファイルには、以前使用していたものに由来する一意名が必要です。たとえば、ファイル名の最後に識別子を追加すると、スナップショットの作成時に識別するのに役立ちます。たとえば、次に示すものが元のコマンドであるとします。

      EXECUTE dbms_dnfs.clonedb_renamefile ('+SPARSE/TM_STANDBY/DATAFILE/system_515
      _930475939','+SPARSE/TM_STANDBY/DATAFILE/system_515_930475939');

      一意のファイル名を作成するには、次のようにファイル名の最後に識別子を追加します。

      EXECUTE dbms_dnfs.clonedb_renamefile ('+SPARSE/TM_STANDBY/DATAFILE/system_515
      _930475939','+SPARSE/TM_STANDBY/DATAFILE/system_515_930475939_Dec_15_16');

      rename_files.sqlスクリプトの各文に対してこの手順を繰り返す必要があります。

  2. 「タスク2: スタンバイ・サイトでのスパース・テスト・マスターおよびスパース・ファイルの構成」の手順を繰り返します。

    これらの手順の変更は必要ありません。

図10-17 プロセス繰返し後の構成


図10-17の説明が続きます
「図10-17 プロセス繰返し後の構成」の説明

このプロセスは9回まで繰り返すことができ、10レベルの環境が作成されます(元のスタンバイ・データ・ファイルおよび9の階層型スナップショット)。 9回目のプロセスを繰り返すときは、新しいスナップショットを作成して、プライマリ・データベースからREDOを受信しないようにしてください。

図10-18 今後の考えられる構成


図10-18の説明が続きます
「図10-18 今後の考えられる構成」の説明

最大の10レベルに到達したら、次の複数のオプションから選択します。

  • スタンバイ・データベースおよびスナップショットの複数のコピーを管理するための十分な領域がある場合は、スタンバイ・データベースをリフレッシュして、新しい階層型スナップショットのツリーを作成します。 元の完全なファイルおよびスナップショットは、必要であれば残すことができます。

  • スタンバイ・データベースおよびスナップショットの複数のコピーを管理するための十分な領域がない場合は、すべてのデータ・ファイルおよびスナップショットを削除し、スタンバイをリフレッシュして、新しい階層型スナップショットのツリーを作成します。

  • 別の環境に新しいスタンバイ・データベースを作成し、新しい階層型スナップショットのツリーを作成します。

10.7.8 PDB用のスパース・テスト・マスターの作成

この手順では、Oracle Multitenant Databaseのプラガブル・データベース(PDB)用に階層型スナップショット・ツリーまたはスパース・テスト・マスターを手動で作成します。

参照用のdailyスナップショットを作成する間、テスト・マスターは閉じられている必要があります。停止時間はごく短い(5分未満)です。Oracle GoldenGateなどのレプリケーション・メカニズムを使用して、本番PDBでスパース・テスト・マスターを最新の状態に維持できます。PDBを使用したOracle GoldenGateの構成の詳細は、『Oracle GoldenGate Oracleインストレーションおよびセットアップ・ガイド』マルチテナント・コンテナ・データベースでのOracle GoldenGateの構成に関する項を参照してください。次の例では、Oracle GoldenGateを使用していると想定しています。

手順1:PROD PDBからの最初のテスト・マスターPDBの作成

これは、テスト・マスターPDBをインスタンス化する従来のPDBのクローニング操作です。クローニングが完了したら、Oracle GoldenGateを構成して、本番のPRODPDB1 PDBから変更を抽出し、これらの変更をテスト・マスターTMPDB1 PDBにレプリケートします。

  1. PRODコンテナ・データベース(CDB)のルートで次のコマンドを実行します。

    PRODCDB> alter pluggable database prodpdb1 close;
    
    PRODCDB> alter pluggable database prodpdb1 open read only;
  2. テスト・マスターCDBのルートから次のコマンドを実行します。

    TMCDB> create database link PROD_DBLINK
    connect to system identified by password using 'PROD_CDB';
    
    TMCDB> create pluggable database TMPDB1
    from PRODPDB1@PROD_DBLINK;
    
    TMCDB> alter pluggable database TMPDB1 open;
    
  3. PRODPDB1 PDBで行われた変更がTMPDB1 PDBに抽出、レプリケートおよび適用されるよう、Oracle GoldenGateを構成します。ExtractおよびReplicatを構成し、抽出プロセスを開始した後、PRODPDB1 PDBを読取り/書込みモードで開きます。

    注意:

    Oracle GoldenGateが構成され、抽出プロセスが開始されるまで、PRODPDB1 PDBを変更用に開くことはできません。
    PRODCDB> alter pluggable database PRODPDB1 close;
    PRODCDB> alter pluggable database PRODPDB1 open;

このとき、テスト・マスターにはPRODPDB1のフル・コピーがあり、TMPDB1PRODPDB1で行われたデータの変更をすべて受け取ります。

注意:

Oracle GoldenGateでは、CREATE TABLESPACEまたはADD DATAFILEのようなデータ・ディレクトリの変更をレプリケートしません。スキーマの変更のみ、PRODPDB1からTMPDB1にレプリケートされます。

図10-19 PRODPDB1プラガブル・データベースから作成されるTMPDB1

図10-19の説明が続きます
「図10-19 PRODPDB1プラガブル・データベースから作成されるTMPDB1」の説明

TMPDB1は読取り/書込みモードで開くことができますが、Oracle GoldenGateを通じて受け取る必要がある変更はPRODPDB1のみのため、読取り専用のままにしてください。

TMPDB1からスナップショットを作成するには、テスト・マスターPDBを読取り専用モードで開く必要があります。スナップショットを作成するテスト・マスターPDB、およびソースにより最新の状態に維持されるテスト・マスターPDBを提供するには、2つのPDBが必要です。その方法を次に示します。

手順2:読取り専用のdailyスナップショットの作成およびTMPDB1 PDBの新しいスパース・テスト・マスターPDBへの移動

この手順では、テスト・マスターとして動作する読取り専用のスナップショットPDBを作成します。その後、この読取り専用のスナップショットPDBから毎日、読取り/書込み用のPDBを作成できます。主な手順は次のとおりです。

  • プライベートの読取り/書込みクライアントが使用可能な読取り専用の(daily)スナップショットPDBを作成します。

  • 読取り専用のdailyスナップショットPDBを指す新しいスパースTMPDB1 PDBを作成します。また、新しいTMPDB1 PDBは、PRODPDB1から変更を受け入れ、適用します。

TMPDB1 PDBに接続し、次のコマンドを実行します。

TMCDB> alter session set container = CDB$ROOT;

# Stop the Oracle GoldenGate replicat process at the Test Master database.  This allows 
# all changes made at PRODPDB1 to continue to be extracted and then applied to  
# TMPDB1 when the replicat process is restarted.

# Close the test master PDB.
TMCDB> alter pluggable database TMPDB1 close;

# Write the test master PDB metadata to an XML file.
TMCDB> alter pluggable database TMPDB1 unplug into 
       '/home/oracle/snapshot/TMPDB1_monday.XML';

# Drop the test master PDB, but keep the data files.
TMCDB> drop pluggable database TMPDB1 keep datafiles;

# Create a TMPDB1_MONDAY PDB using the XML file you just created.
#Use the NOCOPY clause to reuse the original data files.

TMCDB> create pluggable database TMPDB1_MONDAY using 
       '/home/oracle/snapshot/TMPDB1_monday.XML' nocopy;

# Open the new TMPDB1_MONDAY PDB. The PDB must be opened
# once in read/write mode to complete the creation process.

TMCDB> alter pluggable database TMPDB1_MONDAY open;
TMCDB> alter pluggable database TMPDB1_MONDAY close;
TMCDB> alter pluggable database TMPDB1_MONDAY open read only;

# Create the new TMPDB1 PDB to receive changes from PRODPDB1. This PDB
# must have the same name as the original test master PDB to ensure no
# changes are required to the Oracle GoldenGate configuration.

TMCDB> create pluggable database TMPDB1 from TMPDB1_MONDAY
        create_file_dest='+SPARSE'
        snapshot copy;

# Open the new TMPDB1 PDB. The PDB must be opened once in read/write 
# mode to complete the PDB creation process.

TMCDB> alter pluggable database TMPDB1 open;
TMCDB> alter pluggable database TMPDB1 close;
TMCDB> alter pluggable database TMPDB1 open read only;


# Restart the Oracle GoldenGate replicat process to the new TMPDB1
# PDB. The Oracle GoldenGate replicat process now applies changes from  
# PRODPDB1 to the TMPDB1 snapshot and all changes are written to 
# sparse files.

次の図は、TMPDB1_MONDAYから作成されるTMPDB1を示しています。オリジナルのTMPDB1は、前述のDROP PLUGGABLE DATABASE/CREATE PLUGGABLE DATABASEの手順でTMPDB1_Mondayという名前に変更されています。新しいTMPDB1は、TMPDB1に対して変更が行われるまで、TMPDB1_Mondayとまったく同じに見えるスパース・スナップショット・プラガブル・データベースです。Oracle GoldenGateは新しいTMPDB1スナップショットにREDOを適用します。Replicat構成への変更は必要ありません。

図10-20 TMPDB1_MONDAYから作成されるTMPDB1

図10-20の説明が続きます
「図10-20 TMPDB1_MONDAYから作成されるTMPDB1」の説明

手順3:TMPDB1_MONDAYからの読取り/書込みスナップショットの作成

TMPDB1ではなく、TMPDB1_MONDAYからスナップショットを作成します。これにより、TMPDB1 PDBは、PRODPDB1から変更を受け取り、適用できます。

TMPDB1_MONDAY PDBに接続し、次のコマンドを実行します。

TMCDB> alter session set container = cdb$ROOT;

TMCDB> create pluggable database TEST_MONDAY_JIM from TMPDB1_MONDAY
   create_file_dest='+SPARSE'
   snapshot copy;

TMCDB> alter pluggable database TEST_MONDAY_JIM open;

次の図は、TMPDB1_MONDAYから作成されるTEST_MONDAY_JIMスナップショットPDBを示しています。TEST_MONDAY_JIMではTMPDB1_MONDAYが親として使用されています。よって、Jimが自分のスナップショットPDBを変更するまで、TMPDB1_MONDAY_JIMのすべてのデータはTMPDB1_MONDAYのデータと同じになります。Oracle GoldenGateは引き続きREDOを受け取り、TMPDB1に適用します。

図10-21 TMPDB1_MONDAYから作成されるTEST_MONDAY_JIM

図10-21の説明が続きます
「図10-21 TMPDB1_MONDAYから作成されるTEST_MONDAY_JIM」の説明

別のテスト・マスターおよびスナップショットを作成する必要がある場合は、手順2を繰り返す必要があります。たとえば、火曜日にテスト・マスターを作成するには、次を実行します。

TMPDB1 PDBのSQL*Plusセッションを開始します。

TMCDB> alter session set container = CDB$ROOT;

# Stop the Oracle GoldenGate replicat process from applying changes to
# TMPDB1

# Close the test master PDB
TMCDB> alter pluggable database TMPDB1 close;

# Write the test master PDB metadata to an XML file
TMCDB> alter pluggable database TMPDB1 unplug into 
'/home/oracle/snapshots/TMPDB1_tuesday.XML';

# Drop the test master PDB, but keep the data files
TMCDB> drop pluggable database TMPDB1 keep datafiles;

# Create a TMPDB1_TUESDAY PDB from the XML file
TMCDB> create pluggable database TMPDB1_TUESDAY using 
'/home/oracle/snapshot/TMPDB1_tuesday.XML' nocopy;

# Open the new TMPDB1_TUESDAY PDB
TMCDB> alter pluggable database TMPDB1_TUESDAY open;
TMCDB> alter pluggable database TMPDB1_TUESDAY close;
TMCDB> alter pluggable database TMPDB1_TUESDAY open read only;

# Create the new TMPDB1 PDB as a snapshot PDB
TMCDB> create pluggable database TMPDB1 from TMPDB1_TUESDAY
   create_file_dest='+SPARSE'
   snapshot copy;

# Open the TMPDB1 PDB
TMCDB> alter pluggable database TMPDB1 open;
TMCDB> alter pluggable database TMPDB1 close;
TMCDB> alter pluggable database TMPDB1 open read only;

# Restart the Oracle GoldenGate replicat process to apply changes to
# the new TMPDB1

前述の手順3と同様、TMPDB1_TUESDAYから読取り/書込みスナップショットPDBを作成できます。フル・データベースのスパース・テスト・マスターと同様、このプロセスを合計9回まで繰り返すことができます。その後は、新しいTMPDB1テスト・マスターを作成するか、オリジナルのTMPDB1を削除して再度作成し、新しい階層型スナップショット・ツリーを構築する必要があります。

10.7.9 スパース・コピーの実行

ASM cpコマンドは、スパース・ファイルを新しい宛先にコピーします。ただし、この操作では、すべてのブロックがインスタンス化されているスパース・ファイルが親からコピーされます。スパース・コピー機能を使用すると、ファイルのスパース・コピーを実行できます。

複数のASMインスタンスを同時に実行できます。操作に、操作が実行されている以外の別のASMインスタンスのソースまたは宛先が含まれる場合は、リモートASMインスタンスとして処理されます。スパース・コピーは、ローカルASMインスタンス上、またはローカルASMインスタンスとリモートASMインスタンス間で実行できます。ただし、スパース・コピーは、2つのリモートASMインスタンス間では機能しません。

スパース・コピーを実行するには、既存のASM cpコマンドで新しい--sparseオプションを使用します。構文は次のようになります。

ASMCMD> cp --sparse <src_sparse_file> <tgt_file>

setsparseparentという新しいASMコマンドを使用すると、スパース・ファイルの親を設定できます。ローカルASMインスタンス上のスパース宛先に対するファイルのスパース・コピーを実行すると、その親がスパース・コピー操作の一部として設定されます。ただし、この宛先がリモートASMインスタンスにある場合は、setsparseparentコマンドを使用してその親を明示的に設定する必要があります。

setsparseparentコマンドには、パラメータとしてスパース子ファイルと親ファイルが必要です。これにより、スパース子ファイルの親が新しい親ファイルに設定されます。構文は次のようになります。

ASMCMD> setsparseparent <sparse_file> <parent_file>

cp ASMコマンドは、スパース・コピー操作を実行する前に次の検証を実行します。この操作は、次の基準を満たす場合にのみ許可されます。

  • ソース・ファイルが存在し、これがスパース・ファイルである必要があります。

  • 複数のソース・スパース・ファイルを指定する場合は、これらすべてが同じASMインスタンス上に存在する必要があります。

  • リモートASMインスタンス上の複数のスパース・ファイルをローカルASMインスタンス上の宛先にコピーする(その逆も同様)ことは、すべてのソース・ファイルが同じASMインスタンス上にある場合に許可されます。

  • 宛先ファイルは、スパース・ディスク・グループでサポートされる必要があります。ただし、イベントKFTST_KFPKG_CP_SPARSEが設定されている場合は、非スパース・ファイルでも構いません。このイベントは、ファイルをスパース以外の宛先にマージしてコピーすることにより、スパース・コピー操作を検証する場合に必要です。

  • リモートASMインスタンスにソースと宛先の両方が存在することはできません。ただし、リモートASMインスタンスにソースまたは宛先のいずれかは存在できます。

  • この宛先がリモートASMインスタンスにある場合、そのファイル・タイプを検証できないため、スパース・ディスク・グループでサポートされていることを確認する必要があります。また、ASM setsparseparentコマンドを使用して、親を明示的に設定する必要があります。

  • 宛先が非スパース・ファイルの場合に、setsparseparentコマンドを実行すると、子ファイルがスパースである必要があるため、このコマンドは失敗します。宛先が非スパース・ファイルの場合、これは第2レベルの検証です。

setsparseparent ASMコマンドは、親を設定する前に次の検証を実行します。この操作は、次の基準を満たす場合にのみ許可されます。

  • 子ファイルが存在し、これがスパース・ファイルである必要があります。

  • 親ファイルが存在している必要があります。これは、スパース・ファイルでも非スパース・ファイルでも構いません。

  • 親ファイルおよび子ファイルが、同じASMインスタンス上に存在する必要があります。

注意:

setsparseparent ASMコマンドで指定するファイルに有効な親子関係があることを確認する必要があります。このコマンドは、リモートASMインスタンス上のファイルに対してこのチェックを実行できません。ファイルに有効な親子関係がない場合は、データの整合性および破損の問題が発生する可能性があります。

例1: 次のASMコマンドは、スパース・ファイルTBS_1.264.908376549を宛先+SPARSEDG/child_1にコピーします。

ASMCMD> cp –-sparse +SPARSEDG/MERGE/DATAFILE/TBS_1.264.908376549 +SPARSEDG/child_1

例2: 次のASMコマンドは、スパース・ファイルremote_child_10に親tbs_1.269.908374993を設定します。

ASMCMD> setsparseparent +SPARSEDG/remote_child_10 +DATAFILE/DATAFILE/tbs_1.269.908374993

例3: 次のコマンドは、スパース子ファイルchild_1、child_2およびchild_3を宛先ディレクトリ+SPARSEDGにコピーします。

ASMCMD> cp –-sparse +SPARSEDG/DATAFILE/child_1 +SPARSEDG/DATAFILE/child_2 +SPARSEDG/DATAFILE/child_3 +SPARSEDG/

10.8 スパース・グリッド・ディスクの管理

スパース・グリッド・ディスクのサイズ変更、再作成または活動の監視を行うことができます。

10.8.1 仮想領域のサイズ変更

V$ASM_DISKGROUP.FREE_MBまたはV$ASM_DISK.FREE_MBの値が低い場合、仮想アドレス領域を増やす必要があります。

  1. 仮想アドレス領域のサイズを増やす手順:
    1. 次のコマンドをセルで実行して、SPARSEディスク・グループのグリッド・ディスクを指定します。
      CellCLI> alter griddisk SPARSE_CD_00_CELL01,SPARSE_CD_01_CELL01,....,SPARSE_CD_11_CELL01 virtualSize=newSize
      

      たとえば、最初のセルでは、次のようにします。

      CellCLI> alter griddisk SPARSE_CD_00_CELL01,SPARSE_CD_01_CELL01,SPARSE_CD_02_
      CELL01,SPARSE_CD_03_CELL01,SPARSE_CD_04_CELL01,SPARSE_CD_05_CELL01,SPARSE_CD_
      06_CELL01,SPARSE_CD_07_CELL01,SPARSE_CD_08_CELL01,SPARSE_CD_09_CELL01,SPARSE_
      CD_10_CELL01,SPARSE_CD_11_CELL01 virtualSize=12000G
      
      GridDisk SPARSE_CD_00_CELL01 successfully altered
      GridDisk SPARSE_CD_01_CELL01 successfully altered
      ...
      

      たとえば、次のセルでは、次のようにします。

      CellCLI> alter griddisk SPARSE_CD_00_CELL02,SPARSE_CD_01_CELL02,SPARSE_CD_02_
      CELL02,SPARSE_CD_03_CELL02,SPARSE_CD_04_CELL02,SPARSE_CD_05_CELL02,SPARSE_CD_
      06_CELL02,SPARSE_CD_07_CELL02,SPARSE_CD_08_CELL02,SPARSE_CD_09_CELL02,SPARSE_
      CD_10_CELL02,SPARSE_CD_11_CELL02 virtualSize=12000G
      
      GridDisk SPARSE_CD_00_CELL02 successfully altered
      GridDisk SPARSE_CD_01_CELL02 successfully altered
      ...
      

      注意:

      Oracle ASMに変更を加える前に、すべてのセルでグリッド・ディスクのサイズを変更する必要があります。
    2. ASMインスタンスで、ディスク・グループをこの新しいサイズに変更します。
      SQL> alter diskgroup SPARSE resize all size newSize;

      次に例を示します。

      SQL> alter diskgroup SPARSE resize all size 12000G;
  2. 仮想アドレス領域のサイズを減らす手順:
    1. ASMインスタンスで、ディスク・グループをこの新しいサイズに変更します。
      SQL> alter diskgroup SPARSE resize all size newSize;
      

      次に例を示します。

      SQL> alter diskgroup SPARSE resize all size 8000G;
    2. 次のコマンドをセルで実行して、SPARSEディスク・グループのグリッド・ディスクを指定します。
      CellCLI> alter griddisk SPARSE_CD_00_CELL01,SPARSE_CD_01_CELL01,....,SPARSE_CD_11_CELL01 virtualSize=newSize
      

      たとえば、最初のセルでは、次のようにします。

      CellCLI> alter griddisk SPARSE_CD_00_CELL01,SPARSE_CD_01_CELL01,SPARSE_CD_02_
      CELL01,SPARSE_CD_03_CELL01,SPARSE_CD_04_CELL01,SPARSE_CD_05_CELL01,SPARSE_CD_
      06_CELL01,SPARSE_CD_07_CELL01,SPARSE_CD_08_CELL01,SPARSE_CD_09_CELL01,SPARSE_
      CD_10_CELL01,SPARSE_CD_11_CELL01 virtualSize=8000G
      
      GridDisk SPARSE_CD_00_CELL01 successfully altered
      GridDisk SPARSE_CD_01_CELL01 successfully altered
      ...
      

      たとえば、次のセルでは、次のようにします。

      CellCLI> alter griddisk SPARSE_CD_00_CELL02,SPARSE_CD_01_CELL02,SPARSE_CD_02_
      CELL02,SPARSE_CD_03_CELL02,SPARSE_CD_04_CELL02,SPARSE_CD_05_CELL02,SPARSE_CD_
      06_CELL02,SPARSE_CD_07_CELL02,SPARSE_CD_08_CELL02,SPARSE_CD_09_CELL02,SPARSE_
      CD_10_CELL02,SPARSE_CD_11_CELL02 virtualSize=8000G
      
      GridDisk SPARSE_CD_00_CELL02 successfully altered
      GridDisk SPARSE_CD_01_CELL02 successfully altered
      ...
      

関連項目

  • Oracle Automatic Storage Management管理者ガイド

10.8.2 物理領域のサイズ変更

グリッド・ディスクが物理領域外で動作している場合は、グリッド・ディスクの物理サイズを増やす必要があります。

V$ASM_DISK_SPARSETOTAL_MAT_MBおよびALLOCATED_MAT_MB列の値を比較して、残りの物理領域の容量を確認できます。これら2つの列の値が近い場合は、グリッド・ディスクの物理サイズを増やす必要があります。

  1. ディスクの物理領域のサイズを増やす手順:
    1. グリッド・ディスクの物理サイズを増やす前に、各セル・ディスクに使用可能な空き領域があることを確認します。
      [root@exa01adm01 tmp]# dcli -g ~/cell_group -l root "cellcli -e list celldisk \
        attributes name,freespace" 
      exa01celadm01: CD_00_exa01celadm01 0 
      exa01celadm01: CD_01_exa01celadm01 0 
      exa01celadm01: CD_02_exa01celadm01 0 
      exa01celadm01: CD_03_exa01celadm01 0 
      exa01celadm01: CD_04_exa01celadm01 0 
      exa01celadm01: CD_05_exa01celadm01 0 
      exa01celadm01: CD_06_exa01celadm01 0 
      exa01celadm01: CD_07_exa01celadm01 0 
      exa01celadm01: CD_08_exa01celadm01 0 
      exa01celadm01: CD_09_exa01celadm01 0 
      exa01celadm01: CD_10_exa01celadm01 0 
      exa01celadm01: CD_11_exa01celadm01 0 
      ...

      使用可能な空き領域がない場合は、Oracle ASMディスク・グループが使用しているディスク領域を開放する必要があります。

    2. 次のコマンドをセルで実行して、サイズを変更するグリッド・ディスクを指定します。
      CellCLI> alter griddisk CD_00_exa01celadm01,CD_01_exa01celadm01,...,CD_11_exa01celadm01 size=newPhysicalSize

      たとえば、最初のセルでは、次のようにします。

      CellCLI> alter griddisk CD_00_exa01celadm01,CD_01_exa01celadm01,CD_02_exa01celadm01,CD_03_exa01celadm01,CD_04_exa01celadm01,CD_05_exa01celadm01,CD_06_exa01celadm01,CD_07_exa01celadm01,CD_08_exa01celadm01,CD_09_exa01celadm01,CD_10_exa01celadm01,CD_11_exa01celadm01 size=12000G
      

      次に、次のセルで次のようにします。

      CellCLI> alter griddisk CD_00_exa01celadm02,CD_01_exa01celadm02,CD_02_exa01celadm02,CD_03_exa01celadm02,CD_04_exa01celadm02,CD_05_exa01celadm02,CD_06_exa01celadm02,CD_07_exa01celadm02,CD_08_exa01celadm02,CD_09_exa01celadm02,CD_10_exa01celadm02,CD_11_exa01celadm02 size=12000G
      
    3. Oracle ASMインスタンスでは何もする必要はありません。
  2. ディスクの物理領域のサイズを減らす手順:
    1. Oracle ASMインスタンスでは何もする必要はありません。
    2. Oracle ASMディスク・グループで使用する領域が、縮小するディスクの物理領域を超えていないことを確認してください。
      SQL> SELECT sum(allocated_mat_mb) FROM v$asm_disk_sparse
            WHERE group_number = group_number_of_diskgrp_to_shrink;

      使用済の物理領域の量が、縮小する予定のディスクのサイズより大きい場合は、使用済の領域が物理領域のしきい値を下回るまで、スパース・ディスク・グループからオブジェクトを削除する必要があります。

    3. 次のコマンドをセルで実行して、サイズを変更するグリッド・ディスクを指定し、ディスクのサイズを縮小します。
      CellCLI> alter griddisk CD_00_exa01celadm01,CD_01_exa01celadm01,...,CD_11_exa01celadm01 size=newPhysicalSize

      たとえば、最初のセルでは、次のようにします。

      CellCLI> alter griddisk CD_00_exa01celadm01,CD_01_exa01celadm01,CD_02_exa01celadm01,CD_03_exa01celadm01,CD_04_exa01celadm01,CD_05_exa01celadm01,CD_06_exa01celadm01,CD_07_exa01celadm01,CD_08_exa01celadm01,CD_09_exa01celadm01,CD_10_exa01celadm01,CD_11_exa01celadm01 size=4000G
      

      次に、次のセルで次のようにします。

      CellCLI> alter griddisk CD_00_exa01celadm02,CD_01_exa01celadm02,CD_02_exa01celadm02,CD_03_exa01celadm02,CD_04_exa01celadm02,CD_05_exa01celadm02,CD_06_exa01celadm02,CD_07_exa01celadm02,CD_08_exa01celadm02,CD_09_exa01celadm02,CD_10_exa01celadm02,CD_11_exa01celadm02 size=4000G
      

10.8.3 スパース・ディスク・グループ・アクティビティの監視

V$ASM_DISKビューおよびV$ASM_DISKGROUPビューには、仮想サイズとスパースASMディスク・グループの使用率に関する情報が含まれます。新しいビューV$ASM_DISK_SPARSEおよびV$ASM_DISKGROUP_SPARSEには、スパースASMディスク・グループの実際のサイズと使用率に関する情報が含まれます。V$ASM_DISK_SPARSEにもパフォーマンスと使用率のメトリックが含まれます。

次の表に、V$ASM_DISK_SPARSEの各列についての説明を示します。

表10-1 V$ASM_DISK_SPARSE

説明

GROUP_NUMBER

ディスクを含むディスク・グループの番号

DISK_NUMBER

このディスク・グループ内のディスクに割り当てられた番号

INCARNATION

ディスクのインカネーション番号

ALLOCATED_MAT_MB

このディスクの合計使用済物理容量

TOTAL_MAT_MB

このディスクの合計物理容量

SPARSE_READS

このディスクのスパース・リージョンの読取りリクエスト数

SPARSE_BYTES_READ

このディスクのスパース・リージョンの読取りバイト数

SPARSE_READ_TIME

スパース読取りI/Oにかかった時間

次の表に、V$ASM_DISKGROUP_SPARSEの各列についての説明を示します。

表10-2 V$ASM_DISKGROUP_SPARSE

説明

GROUP_NUMBER

ディスク・グループに割り当てられたクラスタ全体の番号

ALLOCATED_MAT_MB

このディスク・グループの合計使用済物理容量

TOTAL_MAT_MB

このディスク・グループの合計物理容量

次の例は、いくつかのディスクの使用済領域と合計領域を示します。

SQL> select 
     DISK_NUMBER          dsk_num,
     ALLOCATED_MAT_MB     alloc,
     TOTAL_MAT_MB         total
from V$ASM_DISK_SPARSE
where GROUP_NUMBER = 5;
 
DSK_NUM    ALLOC      TOTAL
---------- ---------- ----------
         0       5536      57336
         1       5424      57336
         2       5532      57336
         3       5424      57336
         4       5424      57336

次の例のスパースASMグリッド・ディスクは、実際のサイズが56GB、仮想サイズが560GBで作成されています。V$ASM_DISKOS_MB列とTOTAL_MB列を問い合せると、仮想サイズが573440MB (573440MB / 1024 = 560GB) と表示されます。

SQL> select os_mb, total_mb from v$asm_disk where group_number=4;

     OS_MB   TOTAL_MB 
---------- ---------- 
    573440     573440 
    573440     573440 
    573440     573440 

V$ASM_DISK_SPARSETOTAL_MBを問い合せると、ASMグリッド・ディスクで使用可能な実際のサイズを確認できます。各ASMグリッド・ディスクには、スパースASMグリッド・ディスクに割り当てられている16GBごとに約2MBのメタデータ情報が格納されることに注意してください。この例ではグリッド・ディスク当たり56GBが割り当てられ、8MBの領域がスパース・ディスク・メタデータ用に確保されます(57336MB + 8MB = 57344MB / 1024 = 56GB)。

SQL> select total_mb from v$asm_disk_sparse where group_number=4; 

 TOTAL_MB 
--------- 
 57336 
 57336 
 57336 

10.8.4 スパース・グリッド・ディスクの再利用

スパース・グリッド・ディスクを通常のグリッド・ディスクに変更できます。

以前に作成したスパース・グリッド・ディスクを通常のグリッド・ディスクとして使用する場合、ディスクを削除して再度作成できます。
  1. スパース・グリッド・ディスクを使用しているスナップショット・データベースを削除します。
    RMAN> startup mount force;
    RMAN> delete database;
  2. SQL*PlusまたはASMCMDを使用して、スパース・グリッド・ディスクが格納されているOracle ASMディスク・グループを削除します。
    SQL> DROP DISKGROUP sparse INCLUDING CONTENTS force;
  3. CellCLIを使用して、ストレージ・セルのグリッド・ディスクを削除します。
    cellcli -e drop griddisk all harddisk prefix=SPARSEC1
  4. グリッド・ディスクを再度作成します。

    グリッド・ディスクを作成する際、他のディスクと同様のサイズを使用し、ディスク・グループに再度追加します。スパース属性を指定しないでください。

  5. 再作成したグリッド・ディスクをOracle ASMディスク・グループに追加します。

    SQL ALTER DISKGROUPコマンドを使用してADD DISK句を指定し、次の構文を使用してOracle ASMディスク・グループにディスクを追加します。

    SQL> ALTER DISKGROUP disk_group_name ADD DISK 'o/cell_IPaddress/data*';