3 データベース・インスタンスおよびクラスタ・データベースの管理
この章では、Oracle Real Application Clusters (Oracle RAC)データベースおよびデータベース・インスタンスの管理方法について説明します。
注意:
マルチテナント・コンテナ・データベースは、Oracle Database 20cで唯一サポートされているアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、"データベース"と"非CDB"は、文脈に応じてCDBまたはPDBを指しています。アップグレードなどでは、"非CDB"が以前のリリースの非CDBを指している場合もあります。
- Oracle RACデータベースの管理の概要
Oracle RACデータベース管理には特定の権限が必要であり、管理タスクはデプロイメント・モデルによって異なります。 - Oracle RACの管理ツール
Oracle Real Application Clusters (Oracle RAC)データベースおよびインスタンスの管理に最も一般的に使用されるツールは、SRVCTLユーティリティ、Oracle Enterprise ManagerおよびSQL*Plusです。 - インスタンスおよびOracle RACデータベースの起動および停止
Oracle Enterprise Manager、SQL*PlusまたはSRVCTLを使用して、インスタンスを起動および停止できます。 - Oracle RACでのPDBの起動および停止
SRVCTLコマンドを使用してPDBを管理できます。 - データベースおよびインスタンスの停止時の停止時間の短縮
停止には、計画されたもの(メンテナンス)と、計画外のものがあります。どちらのタイプの停止も最小限になるように支援する機能を使用できます。 - インスタンスの実行の確認
データベース・インスタンスが使用可能であることを確認するには、Oracle Enterprise Manager、SRVCTLまたはSQL*Plusを使用します。 - 特定のクラスタ・インスタンス上でのセッションの終了
ALTER SYSTEM KILL SESSION
文を使用して、特定のインスタンスのセッションを終了できます。 - Oracle RACでの初期化パラメータ・ファイルの概要
Oracle RACデータベースの初期化パラメータは、SPFILEに格納されます。 - Oracle RACでの初期化パラメータの使用
デフォルトでは、ほとんどのパラメータがデフォルト値に設定されていて、すべてのインスタンスで同じ値です。 - 管理者管理データベースのポリシー管理データベースへの変換
管理者管理データベースをポリシー管理データベースに変換できます。 - データベース・サーバーのメモリー不足の管理
Memory Guardは、サーバー上のメモリー不足をリアルタイムで検出し、新しいセッションを他のサーバーにリダイレクトして、メモリーが不足しているサーバー上のすべての使用可能メモリーが使用されることを防止します。 - Oracle RACデータベースの静止
Oracle RACデータベースを静止する手順は、非クラスタ・データベースを静止する場合と同じです。 - LinuxおよびUNIXプラットフォームでの複数のクラスタ・インターコネクトの管理
LinuxおよびUNIXプラットフォームで実行されるOracle RAC環境では、CLUSTER_INTERCONNECTS
初期化パラメータを使用して、Oracle Clusterwareがプライベート・ネットワーク用に使用しているものの代替インターコネクトを指定できます。 - Oracle ClusterwareでのOracle RACデータベースの管理方法のカスタマイズ
これらの例は、Oracle ClusterwareによるOracle RACデータベースに対する制御を最小化するために使用します(アップグレード中に必要となる可能性があります)。 - Oracle Enterprise Managerの高度な管理
Oracle Enterprise Manager Cloud Controlを使用すると、Oracle Real Application Clusters (Oracle RAC)データベースのインストール、構成および監視を1つの場所から実行できます。
関連項目:
Oracle Enterprise Manager Cloud Controlの詳細は、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照してください。3.1 Oracle RACデータベースの管理の概要
Oracle RACデータベース管理には特定の権限が必要であり、管理タスクはデプロイメント・モデルによって異なります。
Oracle Grid Infrastructure 20c以降、ポリシー管理データベースは非推奨です。
- Oracle RACデータベースの管理に必要な権限
SYSRAC管理権限を使用して、Oracle RACデータベースを管理します。 - Oracle RACデータベースのデプロイメント・モデル
Oracle Database 20c以降、Oracle RACデータベースには1つの統合された管理スタイルがあります。 - 管理者管理データベースとポリシー管理データベースへの同じクラスタの使用
すでにポリシー管理データベースがホストされているクラスタに管理者管理データベースを作成する場合、管理者管理データベース用のノードは慎重に選択する必要があります。
3.1.1 Oracle RACデータベースの管理に必要な権限
SYSRAC管理権限を使用して、Oracle RACデータベースを管理します。
セキュリティの強化と管理業務の分離を進めるために、Oracle RACデータベースの管理者はOracle RACデータベースをSYSRAC管理権限で管理します。SYSDBA管理権限は必要ではなくなりました。
SYSRAC管理権限は、SRVCTLなどのOracle RACユーティリティのかわりにOracle Clusterwareエージェントによってデータベースに接続するためのデフォルト・モードです。データベースへのSYSDBA接続は、Oracle RACデータベース・クラスタの日常的な管理に不要になりました。
親トピック: Oracle RACデータベースの管理の概要
3.1.2 Oracle RACデータベースのデプロイメント・モデル
Oracle Database 20c以降、Oracle RACデータベースには1つの統合された管理スタイルがあります。
注意:
Oracle Grid Infrastructure 20c以降、ポリシー管理データベースは非推奨です。Oracle Database 20cより前のOracle RACデータベースでは、2つの異なる管理スタイルおよびデプロイメント・モデルがサポートされています。
管理者管理デプロイメントは、Oracle Database 11gリリース2 (11.2)の前に存在していたOracle RACデプロイメント・タイプに基づき、クラスタ内の特定のノードで実行されるように各データベース・インスタンスを静的に構成する必要があり、また、preferred
およびavailable
指定を使用して、特定のデータベースに属する特定のインスタンスで実行されるようにデータベース・サービスを構成する必要があります。
ポリシー管理デプロイメントはサーバー・プールに基づいており、データベース・サービスは、サーバー・プール内でシングルトンまたは均一として、サーバー・プール内のすべてのサーバーにわたって実行されます。データベースは1つ以上のサーバー・プールにデプロイされ、サーバー・プールのサイズによってデプロイメント内のデータベース・インスタンスの数が決まります。
Oracle Database 20c以降、2つの管理スタイルは、各モデルの最良の特徴を組み合せた1つのデプロイメント・モデルに統合されています。管理者管理データベース・デプロイメント・スタイルには、以前はポリシー管理データベースでのみ使用可能だった機能が追加されています。これらの拡張機能により、デプロイメント・スタイルが新たにまとめられました。統合されたデータベース管理スタイルを使用するには、1つ以上のプラガブル・データベース(PDB)が含まれるコンテナ・データベース(CDB)が必要です。
以前と同じコマンドまたはメソッド(DBCAやOracle Enterprise Managerなど)を使用して、統合されたデータベース・デプロイメント・モデルを管理します。すべてのコマンドおよびユーティリティは、Oracle Database 20cより前のOracleデータベースの管理をサポートする下位互換性を維持しています。
一般にデータベースは、Oracle Clusterwareのリソースとして定義されます。データベース・リソースは、DBCAでデータベースを作成する際、高速ホーム・プロビジョニングを使用してデータベースをプロビジョニングする際、またはSRVCTLでデータベース・リソースを手動で作成する際に自動的に作成されます。データベース・リソースには、Oracleホーム、SPFILE、データベースの起動に必要な1つ以上のOracle ASMディスク・グループが含まれます。Oracle ASMディスク・グループは、DBCAを使用するか、srvctl add database
またはsrvctl modify database
コマンドのいずれかを使用して指定できます。データベースがOracle ASMディスク・グループのリストにないディスク・グループ上のデータファイルをオープンすると、そのディスク・グループがリストに追加されます。
また、データベース・リソースにはリスナー・タイプに弱い起動依存性があり、これは、データベース・インスタンスの起動時にリソースがノードのすべてのリスナーを起動しようとすることを意味しています。Oracle Clusterwareは、データベース・インスタンスが起動するノードのリスナーを起動しようとします。リスナーを順に起動すると、ノードのVIPが起動します。
統合されたデータベース管理スタイルにより、動的システムの管理が簡略化されます。クラスタおよびデータベースは、要件の変化に従って拡張または縮小できます。Oracleホーム・ソフトウェアは、クラスタ内のすべてのノードにインストールする必要があります。統合されたデータベース
注意:
同じノードで同じデータベースの複数のインスタンスを実行することはできません。クラスタ・データベース内のPDBは、PDBのカーディナリティ設定に基づき、すべてのノードまたはノードのサブセットで使用できます。PDBのカーディナリティにより、PDBを同時に実行できるノードの数が管理されます。ALL
ではなくカーディナリティに数値を使用する場合、PDBがオープンされるインスタンスは各インスタンスの使用可能なリソースによって決まります。
データベース・インスタンスは、PDBをホストするクラスタ内のすべてのサーバーで起動されます。データベース記憶域に、Oracle Automatic Storage Management(Oracle ASM)およびOracle Managed Filesを使用していて、かつインスタンスの起動時に使用可能なREDOスレッドがない場合、Oracle RACは自動的にREDOスレッドを使用可能にし、必要なREDOログ・ファイルとUNDO表領域を作成します。
クライアントは、その時点でPDBが実行されているサーバーに関係なく、同じSCANベースの接続文字列を使用してPDBに接続できます。
親トピック: Oracle RACデータベースの管理の概要
3.1.3 管理者管理データベースとポリシー管理データベースへの同じクラスタの使用
すでにポリシー管理データベースがホストされているクラスタに管理者管理データベースを作成する場合、管理者管理データベース用のノードは慎重に選択する必要があります。
注意:
Oracle Grid Infrastructure 20c以降、ポリシー管理データベースは非推奨です。管理者管理データベースとポリシー管理データベースの両方を使用する場合、インスタンスの配置は慎重に行う必要があります。これは、管理者管理データベース用に選択したノードはポリシー管理サーバー・プールにあり、このプロセスの一環として汎用サーバー・プールに移動されるためです。
すでに他のポリシー管理データベース・インスタンスを実行しているノードを選択した場合、DBCAが管理者管理データベースを作成する際に停止されるインスタンスおよびサービスがリストされたメッセージがDBCAによって表示されます。DBCAによって「続行しますか。」と尋ねられ、そのダイアログ・ボックスで「はい」を選択すると、ポリシー管理データベースのインスタンスおよびサービスは、管理者管理データベース作成プロセスのために停止されます。
注意:
srvctl add instance
コマンドを使用した場合もポリシー管理データベース・インスタンスおよびサービスは影響を受け、データベースが停止されることを示す同様のメッセージが返されます。srvctl add instance
コマンドで強制オプション(-f
)を使用した場合も、DBCAダイアログで「はい」を選択するのと同じです。-f
オプションを使用すると、ノードを汎用サーバー・プールに移動する前に、そのノードで実行されているポリシー管理データベースが停止されます。
親トピック: Oracle RACデータベースの管理の概要
3.2 Oracle RACの管理ツール
Oracle Real Application Clusters (Oracle RAC)データベースおよびインスタンスの管理に最も一般的に使用されるツールは、SRVCTLユーティリティ、Oracle Enterprise ManagerおよびSQL*Plusです。
多くの場合、これらのツールを使用してOracle RAC環境を管理する方法は、非クラスタOracle Databaseを管理する場合と同様です。
- SRVCTLを使用したOracle RACの管理
サーバー制御ユーティリティ(SRVCTL)は、集中管理的にOracle Databasesを管理するために使用できるコマンドライン・インタフェースです。 - Oracle Enterprise Managerを使用したOracle RACの管理
Oracle Enterprise Managerでは、Oracle RAC環境を集中的に制御し、複数のクラスタ・データベースで同時に管理タスクを実行できます。 - SQL*Plusを使用したOracle RACの管理
SRVCTLまたはOracle Enterprise Managerとは異なり、SQL*Plusはインスタンス指向の管理ツールです。 - インスタンスへのSQL*Plusコマンドの適用方法
Oracle RACデータベースでのインスタンスの起動および停止に、SQL*Plusを使用できます。
3.2.1 SRVCTLを使用したOracle RACの管理
サーバー制御ユーティリティ(SRVCTL)は、集中管理的にOracle Databasesを管理するために使用できるコマンドライン・インタフェースです。
Oracleは、クラスタ用のOracle Grid Infrastructureに基づいて、非クラスタ環境とOracle RACデータベースの両方向けのOracle Grid InfrastructureのOracle ASMを使用して、単一インスタンスOracle Databases用のOracle Database 11gリリース2 (11.2)で中央集中型のSRVCTLベースのデータベース管理を使用できるようにしました。これにより、SRVCTLを使用した、すべてのOracle Databaseタイプの同機種管理が可能になります。SRVCTLを使用して、データベースおよびインスタンスの起動と停止、インスタンスおよびサービスの削除または移動を実行できます。また、SRVCTLを使用すると、クラスタ内の他のリソースに加え、サービスの追加および構成情報の管理を行うこともできます。
SRVCTLを使用してクラスタに構成操作を実行すると、SRVCTLは、クラスタ内のOracle Cluster Registry (OCR)に、またはOracle Restart環境内のOracle Local Registry (OLR)に構成データを格納します。SRVCTLは、Oracle Clusterwareリソース(Oracle Call Interface APIを使用してデータベースの起動および停止操作を実行するエージェントを定義)を構成および管理することによって、インスタンスの起動および停止のようなその他の操作を実行します。
注意:
特定の環境変数を使用してデータベース(またはデータベース・インスタンス)を起動する必要がある場合は、srvctl setenv
コマンドを使用して、SRVCTLの使用によってデータベース用に維持されているデータベース・プロファイルに対してこれらの変数を設定します。ORACLE_HOME
およびORACLE_SID
環境変数を設定する必要はありません。SRVCTLが自動的にこれらのパラメータを維持および設定するためです。
関連項目
親トピック: Oracle RACの管理ツール
3.2.2 Oracle Enterprise Managerを使用したOracle RACの管理
Oracle Enterprise Managerでは、Oracle RAC環境を集中的に制御し、複数のクラスタ・データベースで同時に管理タスクを実行できます。
Oracle Enterprise Manager Cloud Control (Oracle Enterprise Manager 11gではGrid Control)グラフィカル・ユーザー・インタフェース(GUI)に基づいて、非クラスタ環境とOracle RAC環境の両方を管理できます。
Oracle Enterprise Managerでは、通常、Oracle RAC固有の管理タスクは、クラスタ・データベース全体に関係するタスクおよび特定のインスタンスに関係するタスクの2つのレベルが中心です。たとえば、Oracle Enterprise Managerでは、ジョブのスケジュールやメトリックのアラートしきい値の設定に加え、データベース、クラスタ・データベース・インスタンスおよびそのリスナーを起動、停止および監視できます。または、パラメータの設定やリソース・プランの作成のようなインスタンス固有のコマンドを実行できます。また、Oracle Enterprise Managerを使用して、スキーマ、セキュリティおよびクラスタ・データベースの記憶域機能を管理できます。
親トピック: Oracle RACの管理ツール
3.2.3 SQL*Plusを使用したOracle RACの管理
SRVCTLまたはOracle Enterprise Managerとは異なり、SQL*Plusはインスタンス指向の管理ツールです。
SQL*Plusコマンドは、現行のインスタンスで動作します。現行のインスタンスは、SQL*Plusセッションを開始したローカルのデフォルト・インスタンスまたはOracle Net Servicesの接続先リモート・インスタンスです。1つのデータベースで複数のインスタンスを同時に実行するOracle RAC環境の場合、これは、このインスタンス上でSQL*Plusが動作できる範囲を考慮する必要があることを意味しています。これらの制限のため、ポリシー管理データベースを管理する場合はSQL*Plusを使用しないでください。
注意:
Oracle Grid Infrastructure 20c以降、ポリシー管理データベースは非推奨です。たとえば、プラガブル・データベース(PDB)が管理者管理スタイルとポリシー管理スタイルのいずれで管理されているかにかかわらず、これらのデータベースを使用する場合、SQL*Plus接続を使用してPDBに実行される変更は、デフォルトで現行のインスタンスにのみ影響することを考慮する必要があります。PDBに属するすべてのインスタンスに影響するような変更を行うには、ALTER PLUGGABLE DATABASE
コマンドとinstance=all
を使用する必要があります。PDBを使用する場合、動的データベース・サービス(net_service_name
)を使用してインスタンスに接続する必要があります。PDBは、自らを、Oracle RACデータベースの1つ以上のインスタンスに関連付けられた動的データベース・サービスとして表しているためです。
デフォルトでは、SQL*Plusのプロンプトで現行のインスタンスが識別されないため、正しいインスタンスにコマンドを発行する必要があります。SQL*Plusセッションを開始して、インスタンスを指定せずにデータベースに接続すると、すべてのSQL*Plusコマンドはローカル・インスタンスで処理されます。この場合も、デフォルト・インスタンスが現行のインスタンスです。
デフォルトでは、SQL*Plusのプロンプトでは現行のインスタンスが識別されないため、正しいインスタンスにコマンドを発行する必要があります。SQL*Plusセッションを開始して、インスタンスを指定せずにデータベースに接続すると、すべてのSQL*Plusコマンドはローカル・インスタンスで処理されます。この場合も、デフォルト・インスタンスが現行のインスタンスです。SQL*Plusで別のインスタンスに接続するには、次の例のように、新しいCONNECT
コマンドを発行し、リモート・インスタンスのネット・サービス名を指定します(password
はパスワードです)。
CONNECT user_name@net_service_name
Enter password: password
SYSOPER
またはSYSRAC
として接続すると、インスタンスの起動や停止などの権限が必要になる操作を実行できます。複数のSQL*Plusセッションが、同時に同じインスタンスに接続できます。他のインスタンスに接続すると、SQL*Plusによって最初のインスタンスとの接続が自動的に切断されます。
注意:
Oracle ASMインスタンスに接続して管理するには、SYSRAC
権限ではなく、SYSASM
権限を使用します。SYSRAC
権限を使用してASMインスタンスで実行されるコマンドは非推奨であるため、Oracle ASMインスタンスへの接続にSYSRAC
権限を使用すると、Oracle Databaseはアラート・ログ・ファイルに警告を書き込みます。
3.2.4 インスタンスへのSQL*Plusコマンドの適用方法
Oracle RACデータベースでのインスタンスの起動および停止に、SQL*Plusを使用できます。
ほとんどのSQL文は、現行のインスタンスに適用されます。SQL*Plusコマンドを、LinuxおよびUNIXシステムではroot
として、またWindowsシステムではAdministrator
として実行する必要はありません。非クラスタのOracle Databaseで通常使用する権限を持つ適切なデータベース・アカウントのみが必要です。SQL*Plusコマンドのインスタンスへの適用方法の例を示します。
-
ALTER SYSTEM CHECKPOINT LOCAL
は、デフォルトのインスタンスまたはすべてのインスタンスではなく、現在接続しているインスタンスにのみ適用されます。 -
ALTER SYSTEM CHECKPOINT
またはALTER SYSTEM CHECKPOINT GLOBAL
は、クラスタ・データベースのすべてのインスタンスに適用されます。 -
ALTER SYSTEM SWITCH LOGFILE
は、現行のインスタンスにのみ適用されます。-
グローバル・ログ・スイッチを強制するには、
ALTER SYSTEM ARCHIVE LOG CURRENT
文を使用します。 -
ALTER SYSTEM ARCHIVE LOG
のINSTANCE
オプションにより、特定のインスタンスについて各オンラインREDOログ・ファイルをアーカイブできます。
-
次の表に、SQL*Plusコマンドのインスタンスへの適用方法を示します。
表3-1 インスタンスへのSQL*Plusコマンドの適用方法
SQL*Plusコマンド | 関連するインスタンス |
---|---|
|
常に現行のインスタンスに対して適用されます。 |
|
|
|
現行のインスタンスおよびデフォルト・インスタンスの場所に関係なく、SQL*Plusセッションを実行しているノードに適用されます。 |
|
特定のインスタンスではなく、データベースに適用されます。 |
|
現行のインスタンスに関する情報を表示します。リモート・インスタンスにコマンドをリダイレクトしている場合、現行のインスタンスはデフォルトのローカル・インスタンスではない場合があります。 |
および
|
現行のインスタンスからパラメータおよびSGA情報を表示します。 |
および
|
常に現行のインスタンスに対して適用されます。権限付きのSQL*Plusコマンドです。 |
親トピック: Oracle RACの管理ツール
3.3 インスタンスおよびOracle RACデータベースの起動および停止
Oracle Enterprise Manager、SQL*PlusまたはSRVCTLを使用して、インスタンスを起動および停止できます。
Oracle Enterprise ManagerとSRVCTLのいずれにも、Oracle Real Application Clusters (Oracle RAC)データベースのすべてのインスタンスの起動および停止を1ステップで行うオプションがあります。
任意のツールを使用して、データベースを起動する起動状態を選択できます。データベースおよびデータベース・インスタンスの状態によって、実行できる操作が決まります。データベースがMOUNT
(NOMOUNT
)状態にある場合のみ特定の操作を実行できます。他の操作を実行するには、データベースがOPEN
状態である必要があります。
注意:
同じノードで同じデータベースの複数のインスタンスを実行することはできません。クラスタ内のノードでOracle RACデータベース・インスタンスを起動するには、まずノードでOracle Grid Infrastructureスタックを起動する必要があります。Oracle Grid Infrastructureスタックが実行されていないサーバーでは、Oracle RACデータベース・インスタンスは起動しません。
Oracle Database QoS Managementポリシー・ワークロードの重要性によるデータベースの起動順序の決定
ユーザー作成のOracle Database Quality of Service Management (Oracle Database QoS Management)ポリシーがアクティブな場合、パフォーマンス・クラスのランク付けされた順序により、関連するOracle RACデータベースによるリアルタイムLMSプロセス・スロットの開始またはリクエストの順序が決定されます。パフォーマンス・クラス・ランキングの使用により、統合環境で実行しているミッションクリティカルなデータベースに、リアルタイムで実行するLMSプロセスが確実に含まれることになるので、ノード間通信でのリソースのボトルネックが解消されます。Oracle Database QoS Managementポリシーでは各ワークロードのランクを指定するため、各データベースにMax(Ranks)
の値を使用することにより、各データベースのビジネスの重要度を一貫性のある表現で示すことができます。
- SRVCTLを使用した1つ以上のインスタンスおよびOracle RACデータベースの起動
SRVCTLを使用して、Oracle RACデータベースおよびインスタンスを起動します。 - SRVCTLを使用した1つ以上のインスタンスおよびOracle RACデータベースの停止
SRVCTLを使用して、インスタンスとOracle RACデータベースを停止します。 - CRSCTLを使用したすべてのデータベースおよびインスタンスの停止
ノード上でcrsctl stop crs
コマンドを使用するか、crsctl stop cluster -all
コマンドを使用してノード上またはクラスタ全体のすべてのインスタンスを停止できます。 - SQL*Plusを使用した個々のインスタンスの起動と停止
ローカル・ノードに接続された状態で、1つのインスタンスのみを起動または停止するには、まず、現行の環境にローカル・インスタンスのSIDが含まれていることを確認する必要があります。
3.3.1 SRVCTLを使用した1つ以上のインスタンスおよびOracle RACデータベースの起動
SRVCTLを使用して、Oracle RACデータベースおよびインスタンスを起動します。
注意:
この項では、データベースにSPFILEを使用していることを前提にしています。次のSRVCTL構文をコマンドラインから入力し、必要なデータベース名およびインスタンス名を提供するか、または複数のインスタンス名を指定して、複数の特定のインスタンスを起動します。
-
クラスタ・データベース全体(すべてのインスタンスとその依存性)を起動するには、次のSRVCTLコマンドを入力します。
$ srvctl start database -db db_unique_name [-startoption start_options]
たとえば、次のSRVCTLコマンドは、Oracle RACデータベースの実行中でないすべてのインスタンスをマウントします。
$ srvctl start database -db orcl -startoption mount
-
データベースの特定のインスタンスを起動するには、インスタンス名のカンマ区切りリストを入力します。
$ srvctl start instance -db db_unique_name -instance "instance_name_list" [-startoption start_options]
カンマ区切りリストを二重引用符(
""
)で囲む必要があります。 -
特定のノード上のデータベースのインスタンスを起動するには、1つのノード名を指定して次のコマンドを使用します。
$ srvctl start instance -db db_unique_name -node node_name [-startoption start_options]
注意:
Oracle Grid Infrastructure 20c以降、ポリシー管理データベースは非推奨です。
CRS構成ポリシーおよびCRSポリシー・セットの使用は、将来のリリースでサポートされなくなる可能性があります。サーバー・プールおよびポリシー管理型データベースのかわりに、新しいマージ型管理スタイルの使用をお薦めします。
また、このコマンドでは、使用可能で実行されていないすべてのサービスが開始されます。そのサービスには、
AUTOMATIC
管理ポリシーが設定され、サービスのいずれかのロールがデータベース・ロールと一致します。
3.3.2 SRVCTLを使用した1つ以上のインスタンスおよびOracle RACデータベースの停止
SRVCTLを使用して、インスタンスとOracle RACデータベースを停止します。
Oracle RACインスタンスの停止手順は、次に説明する例外を除いて、非クラスタのOracle Databaseのインスタンスの停止と同じです。
-
Oracle RACでは、1つのインスタンスを停止しても、実行中の他のインスタンスの操作を妨げることはありません。
-
Oracle RACデータベースを完全に停止するには、データベースがオープン状態またはマウントされた状態となっているすべてのインスタンスを停止します。
-
NORMAL
またはIMMEDIATE
での停止後は、インスタンスのリカバリは不要です。ただし、SHUTDOWN ABORT
コマンドを発行した後、またはインスタンスが異常終了した後は、リカバリが必要です。まだ実行中のインスタンスが、停止したインスタンスに対してインスタンス・リカバリを実行します。他に実行中のインスタンスがない場合は、次にデータベースをオープンするインスタンスが、リカバリが必要なすべてのインスタンスのリカバリを実行します。 -
SHUTDOWN TRANSACTIONAL
コマンドとともにLOCAL
オプションを使用すると、特定のOracle RACデータベース・インスタンスを停止する場合に有用です。他のインスタンス上のトランザクションがこの操作を妨げることはありません。LOCAL
オプションを省略した場合、この操作は、SHUTDOWN
コマンドを実行する前に起動した他のすべてのインスタンスのトランザクションがコミットまたはロールバックされるまで待機します。これは、Oracle RACデータベースのすべてのインスタンスを停止する場合は有効なアプローチです。注意:
SHUTDOWN TRANSACTIONAL
とSHUTDOWN TRANSACTIONAL LOCAL
の両方は、非クラスタ化データベースに対して同じアクションを実行しますが、この2つのコマンドは、Oracle RACデータベースでは異なっています。
次のSRVCTL構文をコマンドラインから入力し、必要なデータベース名およびインスタンス名を指定するか、または複数のインスタンス名を指定して、複数の特定のインスタンスを停止します。
-
クラスタ・データベース全体(すべてのインスタンスおよび有効になっているサービス)を停止するには、次のSRVCTLコマンドを入力します。
$ srvctl stop database -db db_unique_name [-stopoption stop_options]
TRANSACTIONAL
停止オプションはsrvctl stop database
コマンドとともに、TRANSACTIONAL LOCAL
停止オプションはsrvctl stop instance
コマンドとともに使用します。 -
1つ以上のノードでOracle Clusterwareによって管理されているすべてのインスタンスおよび有効になっているサービスを停止するには、次のSRVCTLコマンドを入力します。
$ srvctl stop instance -node "node_list" [-stopoption stop_options]
-
1つ以上のインスタンスを停止するには、コマンドラインから次のSRVCTL構文を入力します。
$ srvctl stop instance -db db_unique_name {-node "node_list" | -instance "inst_name_list"} [-stopoption stop_options]
複数のインスタンス名のカンマ区切りリストを指定して複数のインスタンスを停止することも、1つのノード名を指定して1つのインスタンスを停止することもできます。Windowsでは、カンマ区切りリストを二重引用符(
""
)で囲む必要があります。このコマンドにより、インスタンスが実行されていたノード上で終了したインスタンスと関連するサービスも停止します。例のとおり、次のコマンドで、
immediate
stopオプションを使用してorcl
データベースの2つのインスタンス(orcl3
およびorcl4
)を停止することができます。$ srvctl stop instance -db orcl -instance "orcl3,orcl4" -stopoption immediate
3.3.3 CRSCTLを使用したすべてのデータベースおよびインスタンスの停止
ノード上でcrsctl stop crs
コマンドを使用するか、crsctl stop cluster -all
コマンドを使用してノード上またはクラスタ全体のすべてのインスタンスを停止できます。
ノード全体またはクラスタ全体を停止する場合(たとえばメンテナンス目的など)、必要なクラスタ権限があるときは、ノードでcrsctl stop crs
コマンドを実行するか、crsctl stop cluster -all
コマンドを実行します。これらのコマンドによって、サーバー上またはクラスタ内で実行されているすべてのデータベース・インスタンスは停止し、クラスタを再起動した後でその状態は確実にリカバリされます。CRSCTLを使用すると、Oracle Clusterwareは、他の場所で実行できるサービスおよび他のリソースを再配置することもできます。
これらのCRSCTLコマンドのいずれかを使用してサーバー上またはクラスタ内のすべてのデータベース・インスタンスを停止すると、shutdown abortと同様にデータベース・インスタンスが停止される可能性があり、起動時にインスタンスのリカバリが必要になります。クラスタを停止する前にSRVCTLを使用してデータベース・インスタンスを手動で停止する場合は、shutdown abortを回避できますが、この場合は、Oracle Clusterwareの再起動後にデータベース・インスタンスを手動で再起動する必要があります。
3.3.4 SQL*Plusを使用した個々のインスタンスの起動と停止
ローカル・ノードに接続された状態で、1つのインスタンスのみを起動または停止するには、まず、現行の環境にローカル・インスタンスのSIDが含まれていることを確認する必要があります。
SQL*Plusセッションかどうかに関係なく、セッション内の後続のすべてのコマンドは、そのSIDに対応付けられます。
注意:
この項では、SPFILEを使用していることを前提にしています。
ローカル・インスタンスを起動または停止するには、SQL*Plusセッションを開始し、SYSRACまたはSYSOPER権限で接続した後に、必要なコマンドを発行します。たとえば、ローカル・ノード上でインスタンスを起動しマウントする場合は、SQL*Plusセッション内で次のコマンドを実行します。
CONNECT / AS SYSRAC
STARTUP MOUNT
注意:
Oracle ASMディスク・グループを使用する場合、Oracle ASMインスタンスへの接続と管理には、SYSRAC権限ではなくSYSASM権限を使用します。
Oracle RAC環境でOracle ASMインスタンスを管理する場合は、SQL*Plusを使用しないことをお薦めします。Oracle Clusterwareは、必要に応じてOracle ASMインスタンスを自動的に管理します。手動操作が必要な場合は、それぞれのSRVCTLコマンドを使用します。
Oracle Net Servicesを使用して、単一のSQL*Plusセッションから複数のインスタンスを起動できます。Net Services接続文字列(通常は、tnsnames.ora
ファイルからのインスタンス固有の別名)を使用して、各インスタンスに順次接続します。
たとえば、ローカル・ノード上でSQL*Plusセッションを使用すると、インスタンスの個々の別名を使用して、各インスタンスに順次接続し、リモート・ノード上の2つのインスタンスのトランザクションの停止を実行できます。最初のインスタンスの別名をdb1
、2つ目のインスタンスの別名をdb2
と仮定します。次のコマンドを入力して、最初のインスタンスに接続してから停止します。
CONNECT /@db1 AS SYSRAC
SHUTDOWN TRANSACTIONAL
注意:
正しいインスタンスに接続するには、接続文字列で1つのインスタンスにのみ対応付けられた別名を使用する必要があります。サービスに接続するTNS別名を使用する接続文字列、または複数のIPアドレスを表示するOracle Netアドレスを使用する場合、停止する特定のインスタンスに接続できないことがあります。
次のコマンドを入力して、SQL*Plusセッションから2つ目のインスタンスに接続した後、停止します。
CONNECT /@db2 AS SYSRAC
SHUTDOWN TRANSACTIONAL
SQL*Plusでは複数のインスタンスを同時に起動または停止することはできないため、単一のSQL*Plusコマンドでクラスタ・データベースのすべてのインスタンスを起動または停止することはできません。各インスタンスに順次接続し、起動および停止するスクリプトを作成することができます。ただし、インスタンスの追加または削除を行う場合は、このスクリプトを手動でメンテナンスする必要があります。
3.4 Oracle RACでのPDBの起動および停止
SRVCTLコマンドを使用してPDBを管理できます。
注意:
Oracle Database 20c以降、非CDB Oracle Databaseアーキテクチャのインストールはサポートされなくなりました。Oracle Grid Infrastructure 20c以降、ポリシー管理データベースは非推奨です。Oracle Database 20c以降、PDBはOracle Clusterwareによって管理されるリソースです。spark
というポリシー管理PDBがあるraccont
というCDBを考えてみます。
注意:
先にPDBを作成せずにサービスを作成しようとすると、PDBリソースを先に作成する必要があることを示すエラー・メッセージが表示されます。カーディナリティを1、2またはALLに設定してspark
PDBを作成した場合、PDBにplug
というサービスを作成すると、そのサービスでは–cardinality
引数も使用できます。-preferred
または-available
引数を使用してspark
PDBを作成した場合、PDBに作成した新しいサービスでは–cardinality
引数ではなく、-preferred
または-available
引数を使用します。
PDBはOracle Clusterwareリソースとして管理されるため、一般的なOracle RACベースの管理プラクティスが適用されます。このため、PDB spark
がオンライン状態で、このサービスをホストしているサーバー上でOracle Clusterwareが停止している場合、このサーバー上のOracle Clusterwareの再起動後に、PDBは元の状態にリストアされます。このようにして、PDBの起動は、他のOracle RACデータベースと同様に自動化されます。
$ srvctl start pdb -db db_name -pdb pdb_name [-startoption start_options]
$ srvctl start pdb -db db_name -pdb pdb_name -node node_list
[-startoption start_options]
IMMEDIATEオプションを使用して、データベース内のすべてのノードでPDBおよびすべてのサービスを停止するには、次のようにします。
$ srvctl stop pdb -db db_name -pdb pdb_name -stopoption IMMEDIATE -drain_timeout 0
-stopsvcoption IMMEDIATE
$ srvctl stop pdb -db db_name -pdb pdb_name -node node_list
[-stopoption stop_options] [-stopsvcoption stop_service_options
[-drain_timeout timeout]
Oracle RACデータベースがすべてのノードまたは特定のノードで再起動されたときに、spark
PDBを再起動しない場合は、次のコマンドを使用します。
srvctl disable pdb -db raccont -pdb spark [-node node_name]
PDBサービスplug
のステータスを表示するには、次のコマンドを使用します。
srvctl status service -db raccont -service plug -verbose
PDB spark
のステータスを表示するには、次のコマンドを使用します。
srvctl status pdb -db raccont -pdb plug -detail
PDBの構成を変更するには、次のコマンドを使用します。
srvctl modify pdb -db db_unique_name -pdb pdb_name
[-cardinality {num_of_instances | ALL}]
[-maxcpu max_cpu_usage] [-mincpuunit min_cpu_usage]
[-rank rank] [-startoption start_options]
[-stopoption stop_options] [-policy policy]
3.5 データベースおよびインスタンスの停止時の停止時間の短縮
停止には、計画されたもの(メンテナンス)と、計画外のものがあります。どちらのタイプの停止も最小限になるように支援する機能を使用できます。
Oracle RACデータベースでは、単一インスタンスの停止がデータベースの可用性に影響することはありません。サーバーまたはインスタンスに障害が発生した場合、データベースだけでなく、リスナーやOracle Automatic Storage Management (Oracle ASM)プロセスなどのサブシステムの再起動も含めた、再起動およびリカバリが自動的に実施されます。サービスを使用して接続しているユーザー・セッションは、正常に稼働しているインスタンスに自動的に移行されます。これは透過的に実行され、ユーザーに対する影響はほとんどありません。
データベース全体を停止する必要がある場合は、ローリング方式で実行できます。各インスタンスの停止は、データベース全体を停止することで個別に実行できます。インスタンスの停止中に、データベースの停止が必要になったタスクを実行して、その後でインスタンスを再起動します。Oracle RACデータベース内のインスタンスが、すべて停止および再起動されるまで繰り返されます。
計画された停止と計画外の停止の両方で、停止時間を最小化するために使用できる追加機能があります。
- Oracle RACの高可用性フレームワークでは、Oracle Clusterwareとリソース・プロファイルを使用して、サービスの可用性を維持します。Oracle Clusterwareは、ビジネス・ルールとサービス属性に従って、サービスをリカバリするか、サービスを均等に分散します。こうしたサービスがデータベースへのクライアント接続に使用されている場合は、停止エラーを発生させるかわりに、正常に稼働しているインスタンスに自動的にリダイレクトされます。
- 1つ以上のインスタンスまたはノードを隔離する必要がある修復、アップグレードおよび変更のために、Oracle RACでは、アプリケーション・ユーザーに対するサービスの中断の影響を最小限に抑えて、サービスを再配置、無効化および有効化するインタフェースを使用できます。
- 高速アプリケーション通知(FAN)は、データベース、ノードおよびネットワークに関連する停止後に、クライアントの即時割込みを実現します。FANは、リソースが使用可能になると即座にクライアントに通知して、クライアントが計画メンテナンス中の停止を認識しないようにデータベース・セッションの排出を開始します。たとえば、Oracle接続プールは、FANを使用して、障害についての非常に高速な通知を受信し、障害後の接続を均等に分散します。障害が発生したコンポーネントが修復されると、接続を再度均等に分散します。
- アプリケーション・コンティニュイティは、データベース・セッションを使用不可にするリカバリ可能なエラーの後に、データベースに対するリクエストを中断することなく、迅速な方法でリプレイできるようにする機能です。そのため、ユーザーにとって停止は、単なるリクエストの実行の遅延にしか見えなくなります。
計画された停止の場合、Oracle Database 20cのユーザーに対する中断は、ほとんど排除できます(ゼロ・ブラウンアウト)。インスタンスの段階的な停止によって、正常に稼働しているインスタンスがロックなどのリソースの所有権を取得できるため、インスタンス停止後の再構成に必要な作業量が減少します。DBAがインスタンスに向けて停止コマンドを発行すると、そのインスタンスはアクティブ・インスタンスからパッシブ・インスタンスに遷移します。
パッシブ・インスタンスは、アクティブ・インスタンスに、できるだけ多くのリソースとロックを遷移するために停止していることが理想的です。Oracle RACクラスタでは、同時に存在可能なパッシブ・インスタンスは常に1つのみです。このプロセスが開始されると、次のアクションが実行されます。
- パッシブ・インスタンスで実行中のサービスが停止されて、別のインスタンスに再配置されます。これには、ターゲット排出タイムアウトが指定されたパッシブ・インスタンスからアクティブ・インスタンスへの接続の移動が含まれます。この排出タイムアウトは、パッシブ・インスタンスの停止など、すべての完了を待機する時間を示します。
- パッシブ・インスタンスからのサービスの排出後、すべてのプラガブル・データベース(PDB)がクローズされます。パッシブ・インスタンスから、すべてのロック・マスターがアクティブ・インスタンスに転送されます。
- インスタンスが、正常にシャットダウンされます。
3.6 インスタンスの実行の確認
データベース・インスタンスが使用可能であることを確認するには、Oracle Enterprise Manager、SRVCTLまたはSQL*Plusを使用します。
- インスタンスが実行中であることを確認するためのSRVCTLの使用
SRVCTLを使用すると、特定のデータベースでインスタンスが実行中であることを確認できます。 - インスタンスが実行中であることを確認するためのSQL*Plusの使用
SQL*Plusを使用すると、データベース・インスタンスが実行中であることを確認できます。
3.6.1 インスタンスが実行中であることを確認するためのSRVCTLの使用
SRVCTLを使用すると、特定のデータベースでインスタンスが実行中であることを確認できます。
次のコマンドは、mailというOracle RACデータベースのデータベース・インスタンスのステータスを確認するためのSRVCTLの使用例を示しています。
$ srvctl status database -db mail
このコマンドによって、次のような出力が返されます。
Instance mail1 is running on node betal011
Instance mail2 is running on node betal010
また、次のようにして、PDBがクラスタ内で実行されているかどうかを確認できます。
$ srvctl status pdb -db db_unique_name -pdb pdb_name
親トピック: インスタンスの実行の確認
3.6.2 インスタンスが実行中であることを確認するためのSQL*Plusの使用
SQL*Plusを使用すると、データベース・インスタンスが実行中であることを確認できます。
-
任意のノードで、SQL*Plusプロンプトから、Net Services接続文字列(通常は
tnsnames.ora
ファイルからのインスタンス固有の別名)を使用することによって、データベース・インスタンスに接続します。CONNECT /@db1 as SYSRAC
-
次の文を使用して、V$ACTIVE_INSTANCESビューを問い合せます。
CONNECT SYS/as SYSRAC Enter password: password SELECT * FROM V$ACTIVE_INSTANCES;
次のような出力が表示されます。
INST_NUMBER INST_NAME ----------- ----------------- 1 db1-sun:db1 2 db2-sun:db2 3 db3-sun:db3
次の表に、この例で出力される列を示します。
表3-2 V$ACTIVE_INSTANCES列の説明
列 | 説明 |
---|---|
INST_NUMBER |
インスタンス番号を識別します。 |
INST_NAME |
ホスト名およびインスタンス名を |
関連項目
親トピック: インスタンスの実行の確認
3.7 特定のクラスタ・インスタンス上でのセッションの終了
ALTER SYSTEM KILL SESSION
文を使用して、特定のインスタンスのセッションを終了できます。
セッションが停止すると、セッションのアクティブ・トランザクションがロールバックされ、そのセッションが保持していたリソース(ロックやメモリー領域など)がただちに解放されて、他のセッションで使用可能になります。
ALTER SYSTEM KILL SESSION
文を使用すると、Oracle RAC環境で厳密なアプリケーション品質保証契約を維持できます。多くの場合、品質保証契約は、指定された期限内にトランザクションを実行することを目的としています。Oracle RAC環境では、このためには、指定された期限内にインスタンスでトランザクションを終了し、別のインスタンスでトランザクションを再試行することが必要な場合があります。
注意:
当初アプリケーションがアプリケーション・コンティニュイティ対応の動的データベース・サービスを使用してデータベース・インスタンスに接続する場合、アプリケーション・コンティニュイティを使用して、トランザクションの取消しをユーザーから隠すことができます。
サービス・レベル管理に対してよりきめ細かいアプローチを求める場合、すべてのOracle RACベースのデータベースに対して、Oracle Database Quality of Service Management (Oracle Database QoS Management)を使用することをお薦めします。
セッションを終了するには、次のステップに従います。
-
GV$SESSION
動的パフォーマンス・ビューのINST_ID
列の値を問い合せ、どのセッションを終了するかを特定します。 -
ALTER SYSTEM KILL SESSION
を発行し、GV$SESSION
動的パフォーマンス・ビューを使用して特定したセッションのセッション索引番号(SID)とシリアル番号を指定します。KILL SESSION 'integer1, integer2[, @integer3]'
-
integer1
には、SID列の値を指定します。 -
integer2
には、SERIAL#
列の値を指定します。 -
オプションの
integer3
には、強制終了するセッションが存在するインスタンスのIDを指定します。GV$
表を問い合せると、インスタンスIDを見つけることができます。
この文を使用するには、インスタンスでデータベースがオープン状態であり、
integer3
を指定しない場合には、セッションと終了するセッションが同じインスタンスにある必要があります。 -
完了する必要があるアクティビティ(リモート・データベースからの応答の待機やトランザクションのロールバックなど)がセッションで実行されている場合、Oracle Databaseはそのアクティビティが完了するのを待機し、セッションに終了のマークを付けてから、ユーザーに制御を戻します。待機が数分間続く場合、セッションに終了予定のマークが付けられ、セッションに終了予定のマークを付けたというメッセージとともにユーザーに制御が戻されます。アクティビティが完了すると、PMONバックグラウンド・プロセスによってセッションに終了のマークが付けられます。
セッションの特定および終了の例
次の例に、ユーザーが特定のセッションを特定し、終了する3つのシナリオを示します。各例で、SYSDBAは、まずSCOTTユーザーのセッションの
GV$SESSION
ビューを問い合せて終了するセッションを特定し、次に、ALTER SYSTEM KILL SESSION
文を実行してインスタンスでセッションを終了します。
例3-1 ビジー状態のインスタンスでのセッションの特定および終了
この例で、実行しているセッションがインスタンスINST_ID=1
のSYSDBA
であるとします。一部のアクティビティを完了してからセッションを終了する必要があるため、ORA-00031
メッセージが戻されます。
SQL> SELECT SID, SERIAL#, INST_ID FROM GV$SESSION WHERE USERNAME='SCOTT';
SID SERIAL# INST_ID
---------- ---------- ----------
80 4 2
SQL> ALTER SYSTEM KILL SESSION '80, 4, @2';
alter system kill session '80, 4, @2'
*
ERROR at line 1:
ORA-00031: session marked for kill
SQL>
例3-2 アイドル状態のインスタンスでのセッションの特定および終了
この例で、実行しているセッションがインスタンスINST_ID=1
のSYSDBA
であるとします。インスタンスINST_ID=2
のセッションは、Oracle Databaseが60秒以内に文を実行すると、ただちに終了されます。
SQL> SELECT SID, SERIAL#, INST_ID FROM GV$SESSION WHERE USERNAME='SCOTT';
SID SERIAL# INST_ID
---------- ---------- ----------
80 6 2
SQL> ALTER SYSTEM KILL SESSION '80, 6, @2';
System altered.
SQL>
例3-3 IMMEDIATEパラメータの使用
次の例には、未完了のアクティビティが完了するのを待機せずにただちにセッションを終了する、オプションのIMMEDIATE
句が含まれています。
SQL> SELECT SID, SERIAL#, INST_ID FROM GV$SESSION WHERE USERNAME='SCOTT';
SID SERIAL# INST_ID
---------- ---------- ----------
80 8 2
SQL> ALTER SYSTEM KILL SESSION '80, 8, @2' IMMEDIATE;
System altered.
SQL>
3.8 Oracle RACでの初期化パラメータ・ファイルの概要
Oracle RACデータベースの初期化パラメータは、SPFILEに格納されます。
データベースを作成すると、Oracle Databaseにより、指定したファイルの場所にSPFILEが作成されます。この場所には、Oracle Automatic Storage Management (Oracle ASM)ディスク・グループまたはクラスタ・ファイル・システムを指定できます。手動でデータベースを作成する場合は、初期化パラメータ・ファイル(PFILE)からSPFILEを作成することをお薦めします。
注意:
Oracle RACで従来のPFILEが使用されるのは、SPFILEが存在しないか、STARTUP
コマンドでPFILE
を指定した場合のみです。管理の単純化、パラメータ設定の一貫性の維持、データベースの停止および起動イベント全体にわたるパラメータ設定の永続性の保証のために、SPFILEを使用することをお薦めします。また、SPFILEをバックアップするようにOracle Recovery Manager (RMAN)を構成することもできます。
クラスタ・データベース内のインスタンスはすべて、起動時に同じSPFILEを使用します。SPFILEはバイナリ・ファイルであるため、エディタを使用して直接編集しないでください。かわりに、Oracle Enterprise ManagerまたはALTER SYSTEM
SQL文を使用して、SPFILEパラメータ設定を変更します。
- Oracle RAC用のSPFILEの作成について
Oracle Real Application Clusters環境のすべてのインスタンスは、同じサーバー・パラメータ・ファイルを使用する必要があります。 - Oracle RACのSPFILEパラメータ値の設定
SPFILEの設定は、Oracle Enterprise ManagerまたはALTER SYSTEM
文のSET
句を使用して変更できます。 - Oracle RACでのパラメータ・ファイルの検索順序
Oracle Databaseでは、プラットフォームに応じてパラメータ・ファイルが特定の順序で検索されます。Oracle RACデータベースの場合、srvctl config database
コマンドを使用すると、パラメータ・ファイルの場所を簡単に調べることができます。 - サーバー・パラメータ・ファイルのバックアップ
リカバリのために、サーバー・パラメータ・ファイルを定期的にバックアップすることをお薦めします。
3.8.1 Oracle RAC用のSPFILEの作成について
Oracle Real Application Clusters環境のすべてのインスタンスは、同じサーバー・パラメータ・ファイルを使用する必要があります。
ただし、別途許可されている場合は、個々のインスタンスで、1つのファイル内の同じパラメータの設定値をそれぞれ変えて使用できます。インスタンス固有のパラメータ定義は、SID.parameter = value
で指定します(SID
はインスタンス識別子です)。
Oracle RACでは、SPFILEの場所はOracle Clusterwareで管理されるデータベース・リソースの属性です。新しいSPFILEを作成する際にコマンドの発行元となるインスタンスが実行されている場合は、次のコマンドによって新しいSPFILEが作成され、新しいSPFILEの場所でデータベース・リソースが自動的に更新されます。
CREATE SPFILE='location' FROM PFILE;
この場合、サーバー・パラメータ・ファイルを名前で参照せずにデータベースを起動できます。
コマンドの発行元となるインスタンスが実行されていない場合は、srvctl modify database -db dbname -spfile spfile_path
を使用して、データベース・リソースのSPFILEを手動で更新する必要があります。また、次のコマンドを使用すると、データベース・リソースのSPFILEの場所が自動的に更新されません。
CREATE SPFILE FROM PFILE [AS COPY];
CREATE SPFILE='location' FROM PFILE AS COPY;
CREATE SPFILE FROM MEMORY;
SPFILEの作成時に、FROM MEMORY
句(CREATE PFILE FROM MEMORY
やCREATE SPFILE FROM MEMORY
など)を含める場合、CREATE
文では、現行のシステム全体のパラメータ設定を使用して、PFILEまたはSPFILEが作成されます。FROM MEMORY
句では、パラメータ・ファイルを作成しようとしているインスタンスに他のすべてのインスタンスがパラメータ設定を送信する必要があるため、合計実行時間は、インスタンスの数、各インスタンスのパラメータ設定の数およびそれらの設定のデータ量によって異なります。
親トピック: Oracle RACでの初期化パラメータ・ファイルの概要
3.8.2 Oracle RACのSPFILEパラメータ値の設定
SPFILEの設定は、Oracle Enterprise ManagerまたはALTER SYSTEM
文のSET
句を使用して変更できます。
注意:
Oracle Enterprise ManagerまたはSQL*Plus以外のツールを使用してSPFILEを変更すると、ファイルが破損してデータベースを起動できなくなる可能性があります。ファイルを修復するにはPFILEを作成し、SPFILEを再生成する必要があります。SPFILEはバイナリ・ファイルですが、この項の例では、ASCIIテキストとして記述してあります。次のエントリを含むSPFILEでインスタンスを起動するとします。
*.OPEN_CURSORS=500
prod1.OPEN_CURSORS=1000
SPFILEエントリのピリオド(.)の前にある値は、特定のパラメータの値が適用されるインスタンスを識別します。ピリオドの前にアスタリスク(*)がある場合、その値は、SPFILEに後続の個別の値が示されていないすべてのインスタンスに適用されます。
Oracleシステム識別子(SID)がprod1
のインスタンスでは、データベース全体のパラメータが500
に設定されていても、OPEN_CURSORS
パラメータの設定は1000
です。ワイルドカード文字のアスタリスク(*)が使用されたパラメータ・ファイルのエントリは、インスタンス固有のエントリがないインスタンスのみに適用されます。したがって、データベース管理者は、インスタンスprod1
のパラメータ設定を制御できます。この2種類の設定は、パラメータ・ファイル内でいずれの順序でも指定できます。
別のDBAが次の文を実行した場合、SIDがprod1
以外のすべてのインスタンスの設定がOracle Databaseによって更新されます。
ALTER SYSTEM SET OPEN_CURSORS=1500 sid='*' SCOPE=SPFILE;
これで、SPFILEにはOPEN_CURSORS
の次のエントリが含まれます。
*.OPEN_CURSORS=1500
prod1.OPEN_CURSORS=1000
次の文を実行して、prod1
を除くすべてのインスタンスのOPEN_CURSORS
をデフォルト値にリセットします。
ALTER SYSTEM RESET OPEN_CURSORS SCOPE=SPFILE;
これで、SPFILEにはprod1
の次のエントリのみが含まれます。
prod1.OPEN_CURSORS=1000
次の文を実行して、インスタンスprod1
のみのOPEN_CURSORS
パラメータをデフォルト値にリセットします。
ALTER SYSTEM RESET OPEN_CURSORS SCOPE=SPFILE SID='prod1';
親トピック: Oracle RACでの初期化パラメータ・ファイルの概要
3.8.3 Oracle RACでのパラメータ・ファイルの検索順序
Oracle Databaseでは、プラットフォームに応じてパラメータ・ファイルが特定の順序で検索されます。Oracle RACデータベースの場合、srvctl config database
コマンドを使用すると、パラメータ・ファイルの場所を簡単に調べることができます。
LinuxおよびUNIXプラットフォームでは、検索順序は次のとおりです。
- Oracle Clusterwareによって管理されるデータベース・リソースの
-spfile
属性で指定される場所。 -
サブディレクトリ
/dbs
の、$ORACLE_HOME/bin/orabaseconfig
ユーティリティによって戻される場所にあるspfilesid.ora
ファイル。 -
サブディレクトリ
/dbs
の、$ORACLE_HOME/bin/orabaseconfig
ユーティリティによって戻される場所にあるspfile.ora
ファイル。 -
サブディレクトリ
/dbs
の、$ORACLE_HOME/bin/orabaseconfig
ユーティリティによって戻される場所にあるinitsid.ora
ファイル。
Windowsプラットフォームでは、検索順序は次のとおりです。
-
%ORACLE_HOME%\database\spfile
sid
.ora
-
%ORACLE_HOME%\database\spfile.ora
-
%ORACLE_HOME%\database\init
sid
.ora
注意:
すべてのインスタンスで同じファイルを使用する必要があり、すべてのインスタンスのSIDが異なっているため、デフォルトのSPFILE名は使用しないことをお薦めします。かわりに、Oracle ASMにSPFILEを格納します。SPFILEをクラスタ・ファイル・システムに格納する場合は、SPFILEにpath/dbs/spfiledb_unique_name.ora
というネーミング規則を使用します。path/dbs/initsid.ora
という名前のPFILEを作成し、名前SPFILE=path/dbs/spfiledb_unique_name.ora
を含めます。
親トピック: Oracle RACでの初期化パラメータ・ファイルの概要
3.8.4 サーバー・パラメータ・ファイルのバックアップ
リカバリのために、サーバー・パラメータ・ファイルを定期的にバックアップすることをお薦めします。
Oracle Enterprise Managerを使用してこれを実行するか、CREATE PFILE
文を使用します。次に例を示します。
CREATE PFILE='/u01/oracle/dbs/test_init.ora'
FROM SPFILE='/u01/oracle/dbs/test_spfile.ora';
Recovery Manager (RMAN)を使用して、サーバー・パラメータ・ファイルのバックアップを作成できます。SPFILEは、クライアント側の初期化パラメータ・ファイルを使用してインスタンスを起動することによって、リカバリすることもできます。その後、CREATE SPFILE
文を使用して、サーバー・パラメータ・ファイルを再生成します。この操作に使用されるパラメータ・ファイルがシングル・インスタンス用である場合、Oracle RACインスタンスで一意であっても、パラメータ・ファイルにはインスタンス固有の値は含まれません。したがって、前述のようにパラメータ・ファイルに適切な設定が含まれていることを確認してください。
通常のバックアップ操作の実行中にSPFILE(および制御ファイル)が自動的にRMANによってバックアップされるようにするには、Oracle Enterprise ManagerまたはRMANのCONTROLFILE AUTOBACKUP
文を使用して、RMANの自動バックアップ機能を使用可能にします。
3.9 Oracle RACでの初期化パラメータの使用
デフォルトでは、ほとんどのパラメータがデフォルト値に設定されていて、すべてのインスタンスで同じ値です。
ただし、多くの初期化パラメータに対しては、Oracle RACに固有の初期化パラメータで説明されているように、各インスタンスで別々の値を設定することもできます。これ以外のパラメータは、次の項で説明されているように、一意または同一である必要があります。:
- Oracle RACに固有の初期化パラメータ
次の表に、Oracle RACデータベースで特に使用される初期化パラメータをまとめます。 - すべてのインスタンスで同じ値を設定する必要があるパラメータ
データベースの作成に重要な特定のパラメータ、または特定のデータベース操作に影響する特定のパラメータには、Oracle RACデータベースの各インスタンスで同じ値を設定する必要があります。 - すべてのインスタンスで一意の値を設定するパラメータ
INSTANCE_NUMBER
パラメータなど、特定のパラメータは各インスタンスに固有です。 - すべてのインスタンスで同じ値を設定する必要があるパラメータ
ここにリストされているパラメータをすべてのインスタンスで同じ設定にすることをお薦めします。
関連項目
3.9.1 Oracle RACに固有の初期化パラメータ
次の表に、Oracle RACデータベースで特に使用される初期化パラメータをまとめます。
パラメータ | 説明 |
---|---|
ACTIVE_INSTANCE_COUNT |
この初期化パラメータは、Oracle RAC 11gリリース2 (11.2)で非推奨になりました。かわりに、1つの優先インスタンスと1つの使用可能なインスタンスを伴うサービスを使用します。 |
ASM_PREFERRED_READ_FAILURE_GROUPS |
ミラー・データのコピーの読取り元の優先ディスクにする一連のディスクを指定します。このパラメータに設定する値はインスタンス固有で、すべてのインスタンスで同じにする必要はありません。 |
CLUSTER_DATABASE |
クラスタ・モードで起動するデータベースを使用可能にするパラメータです。このパラメータを |
CLUSTER_DATABASE_INSTANCES |
Oracle RACはこのパラメータを使用して、十分なメモリー・リソースを割り当てます。すべてのインスタンスに同じ値を設定する必要があります。 注意: Oracle Grid Infrastructure 20c以降、ポリシー管理データベースは非推奨です。 また、インスタンスを追加する場合、現行のインスタンスの数より大きい値をこのパラメータに設定できます。 |
CLUSTER_INTERCONNECTS |
複数のインターコネクトが存在する場合、プライベート・ネットワークの代替クラスタ・インターコネクトを指定します。 注意:
|
DB_NAME |
インスタンス固有のパラメータ・ファイルで |
DISPATCHERS |
少なくとも、 |
GCS_SERVER_PROCESSES |
この静的パラメータでは、Oracle RACインスタンスのグローバル・キャッシュ・サービス(GCS)のサーバー・プロセスの初期数を指定します。GCSプロセスでは、Oracle RACインスタンスのインスタンス間トラフィックのルーティングが管理されます。GCSサーバー・プロセスのデフォルト数は、最小が2で、システム・リソースに基づいて計算されます。CPUが1つのシステムでは、1つのGCSサーバー・プロセスがあります。CPUが2つから8つのシステムでは、2つのGCSサーバー・プロセスがあります。CPUが9つ以上あるシステムでは、GCSサーバー・プロセスの数は、CPUの数を4で割り、端数を切り捨てた数と同じになります。たとえば、CPUが10ある場合は10を4で割るため、システムには2つのGCSプロセスがあることになります。異なるインスタンスで、このパラメータを異なる値に設定できます。 |
INSTANCE_NAME |
一意のインスタンス名を指定します。クライアントは、この名前を使用して、セッションをクラスタ内の特定のインスタンスに強制的に接続します。通常、 注意: グリッドのプラグ・アンド・プレイ環境では、 |
RESULT_CACHE_MAX_SIZE |
クラスタ化されたデータベースでは、すべてのインスタンスで
Oracle Database 20c以降、結果キャッシュのフェッチ機能が強化されています。キャッシュされた結果をリモート・インスタンスからフェッチする前に、データベースはヒューリスティックを使用して、ローカル・インスタンスで結果を再計算するほうが効率的かどうかを判断します。この機能の使用を監視するには、 |
SERVICE_NAMES |
サービスを使用する場合は、 「動的データベース・サービスによるワークロード管理」で説明するサービスの機能は、 注意: クライアント接続ではインスタンス名ではなくサービスを使用することをお薦めします。 |
SPFILE |
SPFILEを使用する場合は、Oracle RACデータベースのすべてのインスタンスがSPFILEを使用し、このファイルが共有記憶域に存在する必要があります。 |
THREAD |
インスタンスで使用されるREDOスレッドの数を指定します。使用可能な未使用のREDOスレッド番号であれば、どれでも指定できます。指定する場合、このパラメータの値はすべてのインスタンスに対して一意である必要があります。 |
3.9.2 すべてのインスタンスで同じ値を設定する必要があるパラメータ
データベースの作成に重要な特定のパラメータ、または特定のデータベース操作に影響する特定のパラメータには、Oracle RACデータベースの各インスタンスで同じ値を設定する必要があります。
これらの初期化パラメータ値は、SPFILEに指定するか、または各インスタンスの個々のPFILEに指定します。次のリストに、すべてのインスタンスで同一である必要があるパラメータを示します。
COMPATIBLE
CLUSTER_DATABASE
CONTROL_FILES
DB_BLOCK_SIZE
DB_DOMAIN
DB_FILES
DB_NAME
DB_RECOVERY_FILE_DEST
DB_RECOVERY_FILE_DEST_SIZE
DB_UNIQUE_NAME
INSTANCE_TYPE
(RDBMSまたはASM)PARALLEL_EXECUTION_MESSAGE_SIZE
REMOTE_LOGIN_PASSWORDFILE
UNDO_MANAGEMENT
次のパラメータは、パラメータの値を0 (ゼロ)に設定する場合のみ、すべてのインスタンスで同じにする必要があります。
DML_LOCKS
RESULT_CACHE_MAX_SIZE
親トピック: Oracle RACでの初期化パラメータの使用
3.9.3 すべてのインスタンスで一意の値を設定するパラメータ
INSTANCE_NUMBER
パラメータなど、特定のパラメータは各インスタンスに固有です。
Oracle Grid Infrastructure 20c以降、ポリシー管理データベースは非推奨です。
ポリシー管理データベースで一意の設定を持つパラメータを設定する必要がある場合は、データベースのサーバー・プールに割り当てられる各サーバーに対してsrvctl modify instance -n node_name -i instance_name
コマンドを実行することにより、インスタンスが特定のノードで常に同じ名前を使用するようにできます。その後、パラメータの一意の値をinstance_name
に指定できます(この値は、node_name
上でデータベースが実行されるときに使用されます)。
データベース名と、インスタンスに割り当てられたINSTANCE_NAME番号で構成される環境変数
ORACLE_SID
を指定します。
CLUSTER_INTERCONNECTS
初期化パラメータを使用して、Oracle Clusterwareがプライベート・ネットワークに使用している代替インターコネクトを指定します。CLUSTER_INTERCONNECTS
初期化パラメータを設定すると、Oracle RACデータベースの各インスタンスに対して一意の値が使用されます。
Oracle Databaseは、INSTANCE_NUMBER
パラメータを使用して起動時にインスタンスを識別し、INSTANCE_NAME
パラメータを使用して特定のインスタンスにREDOログ・グループを割り当てます。インスタンス名はdb_unique_name_instance_number
の形式にすることが可能で、名前と番号がアンダースコアで区切られたこの形式の場合、アンダースコアの後の番号がINSTANCE_NUMBER
として使用されます。グリッドのプラグ・アンド・プレイを使用するOracle Database 11.2では、ポリシー管理データベースのインスタンス番号を明示的に割り当てる必要がなくなり、インスタンス名はデフォルトのdb_unique_name_instance_number
に設定され、Oracle Databaseによってインスタンス番号が割り当てられます。
自動UNDO管理を使用可能にしてUNDO_TABLESPACE
を指定する場合、各インスタンスでこのパラメータに一意のUNDO表領域名を設定します。
ROLLBACK_SEGMENTS
パラメータを使用する場合は、SPFILEでSID
識別子を使用して、これらのパラメータに一意の値を設定することをお薦めします。ただし、各インスタンスのINSTANCE_NUMBER
に一意の値を設定する必要があり、デフォルト値は使用できません。
ASM_PREFERRED_READ_FAILURE_GROUPS
初期化パラメータを使用すると、優先読取り障害グループ名のリストを指定できます。これらの障害グループのディスクは、優先読取りディスクになります。したがって、すべてのノードはそのローカル・ディスクから読み取ることができます。この結果、効率およびパフォーマンスが向上し、ネットワーク・トラフィックが削減されます。このパラメータの設定はインスタンス固有で、すべてのインスタンスで同じにする必要はありません。
3.9.4 すべてのインスタンスで同じ値を設定する必要があるパラメータ
ここにリストされているパラメータをすべてのインスタンスで同じ設定にすることをお薦めします。
表3-3のパラメータには、すべてのインスタンスで同じ値を設定することをお薦めします。これらのパラメータにはインスタンスごとに異なる値を設定できますが、すべてのインスタンスでパラメータに同じ値を設定すると管理が簡単です。
表3-3 すべてのインスタンスで同じ値を設定する必要があるパラメータ
パラメータ | 説明 |
---|---|
ARCHIVE_LAG_TARGET |
Oracle RACデータベースのインスタンスごとに異なる値を設定すると、データベース処理によって追加の自動同期化が実行されるため、多くの場合、オーバーヘッドが増加します。 Oracle RACデータベースのダウンストリーム取得構成で、Oracle GoldenGateダウンストリーム取得またはOracle GoldenGate統合取得モードを使用する場合、値は0 (ゼロ)より大きい必要があります。 |
CLUSTER_DATABASE_INSTANCES |
このパラメータについては、すべてのOracle RACデータベース・インスタンスで同一の設定であることが望まれますが、これは必須ではありません。 |
LICENSE_MAX_USERS |
このパラメータでは、データベースに定義されるユーザー数のデータベース全体における制限が決定されるため、このパラメータにはデータベースのすべてのインスタンスに同じ値を指定して、どのインスタンスの使用時にも現在の値を確認できるようにすると便利です。異なる値を設定すると、インスタンスの起動時にOracle Databaseによって追加で警告メッセージが生成されたり、データベース・ユーザーの管理に関連するコマンドが一部のインスタンスで失敗する可能性があります。 |
LOG_ARCHIVE_FORMAT |
すべてのインスタンスで同じ値を使用しない場合、メディア・リカバリが複雑になります。アーカイブ・ログ・ファイルを作成したインスタンスにかかわらず、リカバリを行うインスタンスでは、必要なアーカイブ・ログ・ファイル名のフォーマットがそのインスタンス自体の Oracle Data Guardをサポートするデータベースでは、アーカイブREDOログ・ファイルの送受信を行うために、すべてのインスタンスで |
SPFILE |
すべてのインスタンスでこのパラメータに同じファイルを指定しない場合、各インスタンスは、フェイルオーバー、ロード・バランシングおよび通常の操作中に、異なる動作または予測できない動作を行う場合があります。また、 サーバーによって値が設定されているインスタンスでSPFILEの値が異なる場合、デフォルトのSPFILEを使用していないインスタンスを再起動する必要があります。 |
TRACE_ENABLED |
診断トレース情報をOracle RACデータベースで常に使用可能にするには、すべてのデータベース・インスタンスで |
UNDO_RETENTION |
各インスタンスで |
親トピック: Oracle RACでの初期化パラメータの使用
3.10 管理者管理データベースのポリシー管理データベースへの変換
管理者管理データベースをポリシー管理データベースに変換できます。
注意:
Oracle Grid Infrastructure 20c以降、ポリシー管理データベースは非推奨です。
既存のサーバー・プールは引き続き使用でき、新しいプールおよびポリシーも作成できます。既存のサーバー・プールを使用するリソースは、引き続きこれらを透過的に使用できます。
CRS構成ポリシーおよびCRSポリシー・セットの使用は、将来のリリースでサポートされなくなる可能性があります。サーバー・プールおよびポリシー管理型データベースのかわりに、新しいマージ型管理スタイルの使用をお薦めします。
管理者管理データベースが権限の弱いユーザー用に構成されており、このデータベースをポリシー管理データベースに変換しようとする場合は、この権限の弱いユーザーにウォレットを(まだ存在しない場合)手動で追加し、Oracle Database用のWindowsサービスを作成できるようにする必要があります。
管理者管理データベースを変換するには、次の手順を実行します。
-
すべてのサービスとデータベースの現在の構成を確認します(間違いがあったためにリカバリが必要な場合、元の構成がどうであったかを確認できます)。
srvctl config database -db db_unique_name srvctl config service -db db_unique_name
-
ポリシー管理データベース用のサーバー・プールを作成します(これを実行するには、クラスタ管理者である必要があります)。
srvctl add srvpool -serverpool server_pool -min 0 -max n
前述のコマンドでは、0 (ゼロ)はサーバー・プールで希望するサーバーの最小数で、
n
は最大数です。注意:
このステップでは、必ずしも新しく作成したサーバー・プールにサーバーを配置するとはかぎりません。たとえば、新しいサーバー・プールがサーバーを割り当てることができる元の空きプールにサーバーがない場合は、変換が完了したときに、
srvctl relocate server
コマンドを使用して別のサーバー・プールからサーバーを再配置する必要がある可能性があります。 -
次のようにOracle Enterprise ManagerまたはSRVCTLを使用して、データベースを停止します。
srvctl stop database -db db_unique_name
-
新しいサーバー・プールに存在するようにデータベースを変更します。
srvctl modify database -db db_unique_name -serverpool server_pool
-
次のように、サービス・ユーザーをウォレットに追加します。
crsctl add wallet -type OSUSER -user user_name -passwd
-
ステップ1のコマンドを繰り返してデータベースのステータスを確認し、データベースがポリシー管理になったことを確認します。
次のように、前述の手順で行った変更を認識させるために、Oracle Enterprise Managerを構成します。
-
Oracle Enterprise Manager Cloud Controlに新しいデータベース・インスタンスを認識させるために、インスタンス名を
db_unique_name#
からdb_unique_name_#
に変更(シャープ記号(#)の前にアンダースコア(_)を追加)する必要があります。 -
dbs/database
ディレクトリ内のorapwd
ファイルの名前を変更します(または、orapwd
コマンドを実行して、新しいorapwd
ファイルを作成します)。デフォルトの
orapwd
ファイルには、orapwdORCL1
などのようにインスタンス名が付加されています。前述のステップで変更したインスタンス名に対応するように、ファイル名を変更する必要があります。たとえば、orapwdORCL1
をorapwdORCL_1
に変更するか、または新しいorapwd
ファイルを作成する必要があります。
ポリシー管理データベースを管理者管理データベースに直接変換することはできません。その場合は、srvctl remove database
コマンドおよびsrvctl remove service
コマンドでポリシー管理構成を削除してから、srvctl add database
コマンドおよびsrvctl add instance
コマンドで同じデータベースを管理者管理データベースとして登録します。データベースおよびインスタンスの登録後に、srvctl add service
コマンドを使用して、削除したサービスを元どおりに追加する必要があります。
管理者管理データベースのサービスは、引き続きPREFERRED
およびAVAILABLE
定義によって定義されます。ポリシー管理データベースの場合、サービスはデータベース・サーバー・プールに対して定義され、uniform(サーバー・プール内のすべてのインスタンスで実行)またはsingleton(サーバー・プール内の単一インスタンスでのみ実行)のいずれかになります。データベースの管理ポリシーを変更した場合、選択したデータベースの管理ポリシーに応じて、UNIFORMかSINGLETON、またはPREFERRED
/AVAILABLE
のいずれかになるように、データベース・サービスを再作成する必要があります。
3.11 データベース・サーバーのメモリー不足の管理
Memory Guardは、サーバー上のメモリー不足をリアルタイムで検出し、新しいセッションを他のサーバーにリダイレクトして、メモリーが不足しているサーバー上のすべての使用可能メモリーが使用されることを防ぎます。
オープン・セッションまたはランナウェイ・ワークロードが多すぎるため、エンタープライズ・データベース・サーバーが使用可能メモリーをすべて使用することがあります。メモリーが不足すると、トランザクションが失敗することがあります。極端な場合には、サーバーが再起動し、アプリケーションの貴重なリソースが失われることもあります。Memory Guardは、サーバー上のメモリー不足をリアルタイムで検出し、新しいセッションを他のサーバーにリダイレクトして、メモリーが不足しているサーバー上のすべての使用可能メモリーが使用されることを防ぎます。
新しいセッションを別のサーバーに再ルートすると、メモリーが不足しているサーバー上の既存のワークロードが保護され、サーバーを使用可能な状態に保つことができます。Memory Guardはサーバーのメモリー不足を管理するOracle RACの機能で、Oracle RACデータベースにホストされているアプリケーションのサービス・レベルの管理に新しいリソース保護機能を追加します。
Oracle Database Quality of Service Managementが有効になっていると、クラスタ・ヘルス・モニターは、クラスタ・サーバーのメモリー・リソースに関するリアルタイム情報を提供するメトリック・ストリームをメモリー・ガードに送信します。この情報の内容は次のとおりです。
- 使用可能メモリーの量
- 現在使用されているメモリーの量
ノードのメモリーが不足しているとMemory Guardが判断した場合は、新しい接続が作成されないように、そのノード上のOracle Clusterwareで管理されているデータベース・サービスが停止されます。メモリー不足が緩和されると、そのノードのサービスが自動的に再開し、リスナーはそのサーバーへの新規接続の送信を開始します。メモリー不足は、いくつかの方法で緩和できます(たとえば、既存のセッションの終了やユーザーの介入など)。
3.12 Oracle RACデータベースの静止
Oracle RACデータベースを静止する手順は、非クラスタ・データベースを静止する場合と同じです。
1つのインスタンスからALTER SYSTEM QUIESCE RESTRICTED
文を使用します。データベースの静止処理中は、どのインスタンスからもデータベースを開くことはできません。DBA以外のすべてのセッションが非アクティブになると、ALTER SYSTEM QUIESCE RESTRICTED
文は終了し、データベースは静止状態にあるとみなされます。Oracle RAC環境では、この文を発行したインスタンスのみでなく、すべてのインスタンスにこの文が適用されます。
Oracle RAC環境でALTER SYSTEM QUIESCE RESTRICTED
文を正しく発行するには、データベース・リソース・マネージャ機能をアクティブにしておくだけでなく、その機能がクラスタ・データベースのすべてのインスタンスに対しても、インスタンス起動時からアクティブになっている必要があります。DBA以外のセッションがアクティブにならないようにするのは、データベース・リソース・マネージャの機能です。また、この文が適用されている間に現行のリソース・プランを変更しようとすると、システムが静止状態でなくなるまで、その変更はキューに入れられます。
次の条件がOracle RACに適用されます。
-
ALTER SYSTEM QUIESCE RESTRICTED
文を発行しても、Oracle Databaseがその処理を完了していない場合、データベースを開くことはできません。 -
データベースが静止状態にある場合、そのデータベースを開くことはできません。
-
ALTER SYSTEM QUIESCE RESTRICTED
文およびALTER SYSTEM UNQUIESCE
文は、このコマンドを発行したインスタンスのみでなく、Oracle RAC環境のすべてのインスタンスに適用されます。
注意:
コールド・バックアップを実行するために静止状態を使用することはできません。データベースが静止状態にある場合でも、Oracle Databaseのバックグラウンド・プロセスがOracle Databaseの内部処理のために更新を実行していることがあるためです。また、オンライン・データファイルのヘッダーは、引き続きアクセス中であるかのように見えます。このファイル・ヘッダーの状態は、データベースが正しく停止された場合とは異なります。データベースが静止状態の間でも、オンライン・バックアップ操作は実行できます。3.13 LinuxおよびUNIXプラットフォームでの複数のクラスタ・インターコネクトの管理
LinuxおよびUNIXプラットフォームで実行されるOracle RAC環境では、CLUSTER_INTERCONNECTS
初期化パラメータを使用して、Oracle Clusterwareがプライベート・ネットワーク用に使用しているものの代替インターコネクトを指定できます。
注意:
CLUSTER_INTERCONNECTS
初期化パラメータは、冗長インターコネクトの使用によって提供されている高可用性IP (HAIP)アドレスに設定しないでください。HAIPは自動的に認識されます。
CLUSTER_INTERCONNECTS
に複数の値を設定する場合、Oracle Databaseは、インターコネクトに指定するすべてのネットワーク・インタフェースを使用し、表示されているすべてのインターコネクトが動作している場合はロード・バランシングを提供します。このパラメータで複数のインターコネクトを定義する場合、データベースのすべてのインスタンスで同じ値(インターコネクトをリストする順序を含む)を使用する必要があります。
注意:
オペレーティング・システム・レベルでデフォルトのインターコネクト設定を上書きするCLUSTER_INTERCONNECTS
初期化パラメータを設定することはお薦めしません。
かわりに、ベスト・プラクティスは、Oracle RACおよびOracle Real Application Clusters One Node 11gリリース2 (11.2)データベース以上向けのOracle Grid Infrastructure 11gリリース2 (11.2)で使用可能な冗長インターコネクトの使用を使用することです。Oracle Database 11gリリース2 (11.2)より前のデータベースの場合、オペレーティング・システムベースのネットワーク・ボンディング・テクノロジを使用して、クラスタ・インターコネクトとして使用するつもりのネットワーク・インタフェース・カード向けの高可用性(およびロード・バランシング)を可能にします。1つのクラスタ内で複数のデータベース・バージョンを使用する場合は、両方の手法を組み合せることができます。冗長インターコネクトの使用では、結合にかかわらず、オペレーティング・システム・レベルで提示されるインタフェースを使用します。結合テクノロジの詳細は、オペレーティング・システムのベンダーに問い合せてください。
3.13.1 CLUSTER_INTERCONNECTSパラメータを使用するためのユース・ケース
CLUSTER_INTERCONNECTS
初期化パラメータでは、IPアドレスが必要です。コロン(:)で区切って、複数のIPアドレスを指定できます。Oracle RACネットワーク・トラフィックは、指定されたIPアドレス間で分散されます。
注意:
-
ポリシー管理データベースを使用する場合、
CLUSTER_INTERCONNECTS
パラメータは設定しないことをお薦めします。 -
すべてのデータベースとOracle Clusterwareで同じインターコネクト・ネットワークを使用することをお薦めします。
一般に、CLUSTER_INTERCONNECTS
パラメータは、次の場合にのみ設定します。
-
クラスタで複数のデータベースが実行され、インターコネクト・トラフィックを分離する必要があり、冗長インターコネクトの使用を使用しない場合。
-
オペレーティング・システムによって高可用性が実現された単一のIPアドレスがあり、そのIPアドレスに安定したインタフェース名がない(再起動時に名前を変更できるなど)場合。
次の一般的な構成では、CLUSTER_INTERCONNECTS
パラメータは設定しないでください。
-
冗長インターコネクトの使用を使用する場合。
-
クラスタ・インターコネクトが1つのみ存在する場合。
-
デフォルトのクラスタ・インターコネクトが、Oracle RACデータベースの帯域幅の要件を満たしている場合(通常は満たしています)。
CLUSTER_INTERCONNECTS
初期化パラメータの指定時は、次のことに注意してください。
-
CLUSTER_INTERCONNECTS
初期化パラメータは、UDP IPCが使用可能なLinuxおよびUNIX環境でのみ有効です。 -
パラメータ・ファイルで
CLUSTER_INTERCONNECTS
初期化パラメータを設定する場合は、Oracle RACデータベースの各インスタンスに対して異なる値を指定します。 -
異なるノードで、同じデータベースの異なるインスタンスに指定されたIPアドレスは、同一のインターコネクト・ネットワークに接続するネットワーク・アダプタに属する必要があります。
-
このパラメータに対して複数のIPアドレスを指定する場合、同一データベースのすべてのインスタンスに対して、同じ順序でIPアドレスを指定します。たとえば、
node1
の最初のインスタンスのパラメータで、alt0:
、fta0:
およびics0:
デバイスのIPアドレスをその順に指定する場合、node2
の2つ目のインスタンスのパラメータでも同等のネットワーク・アダプタのIPアドレスをその順に指定する必要があります。 -
CLUSTER_INTERCONNECTS
パラメータに指定したインターコネクトへの書込み中にオペレーティング・システム・エラーが発生した場合は、他のインタフェースが使用可能な場合でも、Oracle Databaseによってエラーが戻されます。これは、Oracle Databaseとインターコネクトの間の通信プロトコルが、使用しているプラットフォームに大きく依存する場合があるためです。詳細は、ご使用のOracle Databaseのプラットフォーム固有のマニュアルを参照してください。
例
単一のクラスタ・インターコネクトで帯域幅の要件を満たすことができない場合は、CLUSTER_INTERCONNECTS
の設定を考慮します。冗長インターコネクトの使用を使用できない1つ以上のデータベースから高いインターコネクト帯域幅を要求されているデータ・ウェアハウス環境では、このパラメータの設定が必要な場合があります。
たとえば、高いインターコネクト帯域幅の要件を持つ2つのデータベースがある場合は、オペレーティング・システムが提供するデフォルトのインターコネクトを無効にし、各サーバー・パラメータ・ファイルで次の構文を使用して、各データベースに異なるインターコネクトを指定できます。ipn
は、ドットで区切られた標準的な10進形式のIPアドレス(たとえば、144.25.16.214
)です。
Database One: crm1.CLUSTER_INTERCONNECTS = ip1
Database Two: ext1.CLUSTER_INTERCONNECTS = ip2
高い帯域幅を必要とするデータベースがある場合は、次の構文を使用して複数のインターコネクトを指定できます。
CLUSTER_INTERCONNECTS = ip1:ip2:...:ipn
3.14 Oracle ClusterwareでのOracle RACデータベースの管理方法のカスタマイズ
これらの例は、Oracle ClusterwareによるOracle RACデータベースに対する制御を最小化するために使用します(アップグレード中に必要となる可能性があります)。
デフォルトでは、Oracle ClusterwareによってOracle RAC環境のデータベースの再起動が制御されます。たとえば、データベースのアップグレード中など、場合によっては、Oracle ClusterwareのOracle RACデータベースに対する制御レベルを最小限に抑える必要があることがあります。
システムの再起動時にOracle ClusterwareによるOracle RACデータベースの再起動を防止する場合、または障害が発生したインスタンスの2回目以降の再起動を回避する場合、制御の程度を定義する管理ポリシーを構成します。管理ポリシーには、次の3つがあります。
- AUTOMATIC: これはデフォルトの管理ポリシーです。データベースは、データベース・ホスト・コンピュータの再起動時に前回の実行状態(起動または停止)へ自動的に戻されます。
- MANUAL: データベース・ホスト・コンピュータの再起動時にデータベースは自動的には再起動されません。MANUALに設定しても、Oracle Restartは、実行中のデータベースを監視し、障害発生時にデータベースを再起動します。
- NORESTART: MANUAL設定と同様に、データベース・ホスト・コンピュータの再起動時にデータベースは自動的には再起動されません。ただし、NORESTART設定では、障害が発生しても、データベースを再起動することはありません。
SRVCTLコマンドを使用して、次の例に示すとおり、Oracle Clusterwareの管理ポリシーを表示および変更します。
例1: 現行管理ポリシーの表示
次のコマンド構文を使用して、現行の管理ポリシーを表示します(ここで、db_unique_name
は、管理ポリシーを変更するデータベースの名前です)。
srvctl config database -db db_unique_name -all
例2: 現行の管理ポリシーの別の管理ポリシーへの変更
次のSRVCTLコマンド構文を使用して、現行の管理ポリシーをAUTOMATIC、MANUALまたはNORESTARTに変更します。
srvctl modify database -db db_unique_name -policy [AUTOMATIC | MANUAL | NORESTART]
このコマンド構文は、データベース・リソースのリソース属性を設定します。
例3: 新規データベース用の管理ポリシーの指定
srvctl add database
コマンドを使用して新しいデータベースを追加する場合、次の例のように-policy
パラメータを使用して管理ポリシーをAUTOMATIC
、MANUAL
またはNORESTART
のいずれかに指定できます(ここで、db_unique_name
はデータベース名です)。
srvctl add database -db db_unique_name -policy [AUTOMATIC | MANUAL | NORESTART]
-oraclehome $ORACLE_HOME -dbname DATA
このコマンド構文によって、新しいデータベースがOracle Clusterwareに制御されるようになります。管理ポリシー・オプションを指定しない場合、Oracle Databaseによってデフォルト値
が使用されます。管理ポリシーを変更した後、Oracle Clusterwareリソースは、影響を受けたデータベースの新しい値を記録します。
automatic
3.15 Oracle Enterprise Managerの高度な管理
Oracle Enterprise Manager Cloud Controlを使用すると、Oracle Real Application Clusters (Oracle RAC)データベースのインストール、構成および監視を1つの場所から実行できます。
この項では、Oracle RACデータベースの監視およびチューニングで説明されていない高度な管理タスクについて説明します。
- ノードおよびインスタンスの検出のためのOracle Enterprise Manager Cloud Controlの使用
Oracle Enterprise ManagerでOracle RACデータベースおよびインスタンス・ターゲットを検出すると、監視と管理が可能になります。 - Oracle Enterprise Managerのその他の機能
Oracle Enterprise Manager 12c以降、Oracle Enterprise Managerには様々な管理機能が用意されています。 - Oracle RACでのジョブおよびアラートの管理
Oracle Enterprise Managerの「管理」タブは、Oracle RACデータベースに使用できます。
3.15.1 ノードおよびインスタンスの検出のためのOracle Enterprise Manager Cloud Controlの使用
Oracle Enterprise ManagerでOracle RACデータベースおよびインスタンス・ターゲットを検出すると、監視と管理が可能になります。
Oracle Enterprise Manager Cloud Controlでは、Oracle Enterprise Managerコンソール・インタフェースを使用してOracle Real Application Clusters (Oracle RAC)データベースおよびインスタンス・ターゲットを検出できます。
Oracle RACデータベースが存在するクラスタにOracle Enterprise Manager Cloud Controlエージェントをインストールすると、Oracle RACデータベース・ターゲットがインストール時に検出されます。エージェントのインストール後にデータベースが作成される場合またはエージェントのインストール時にデータベースが自動的に検出されない場合は、コンソール・インタフェースを使用してターゲットを検出できます。
ノードおよびインスタンスを検出するには、次のようにOracle Enterprise Manager Cloud Controlを使用します。
-
Oracle Enterprise Managerにログインし、「ターゲット」タブをクリックします。
-
「データベース」タブをクリックすると、使用可能なターゲットがすべて表示されます。「タイプ」列に、「クラスタ・データベース」というエントリを使用するOracle RACデータベースが表示されます。
-
ターゲット名を選択して「追加」をクリックし、このデータベース・ターゲットを追加します。「データベース・ターゲットの追加: ホストの指定」ページが表示され、このページではデータベース、リスナーおよびOracle Automatic Storage Management (Oracle ASM)を監視ターゲットとして追加できます。
-
懐中電灯のアイコンをクリックして使用可能なホスト名を表示し、ホストを選択して「続行」をクリックします。「データベースの追加: ソースの指定」ページが表示されます。
-
非クラスタ・データベースおよびリスナーのみを検出するか、またはすべてのクラスタ・データベース、非クラスタ・データベースおよびクラスタのリスナーを検出するようにOracle Enterprise Managerにリクエストし、「続行」をクリックします。
-
この手順で、再構成したクラスタ・データベースおよびそのすべてのインスタンスが検出されなかった場合は、「クラスタでターゲットが検出されました」ページでクラスタ・データベースおよび非クラスタ・データベースを手動で構成できます。
3.15.2 Oracle Enterprise Managerのその他の機能
Oracle Enterprise Manager 12c以降、Oracle Enterprise Managerには様々な管理機能が用意されています。
-
Oracle Grid Infrastructure/Oracle RACプロビジョニング・デプロイメント・プロシージャでは、Oracle RAC 12cおよびOracle Grid Infrastructureをプロビジョニングします。また、この手順では、プロファイルと呼ばれる機能があり、入力を記録しておいて、その後に繰り返されるデプロイメントでこの記録を使用できます。
-
新しいプロシージャの動的前提条件により、My Oracle Supportに接続されていれば、Oracle Enterprise ManagerではOracle RACプロビジョニング用の最新の前提条件およびツールをダウンロードできます。
-
既存のクラスタ・データベースのワンクリック拡張機能では、Oracle RAC 12cスタックがサポートされるようになりました。
-
既存の「Oracle Real Application Clustersの削除/縮小」機能は、Oracle RAC 12cのクラスタで動作が保証されています。
-
既存の「Oracleデータベースのプロビジョニング」プロシージャでは、シングル・インスタンスのOracle Database 12cのプロビジョニングがサポートされるようになりました。
-
非クラスタ・データベース用のOracle Grid Infrastructure 12cをプロビジョニングするために、新しいデプロイメント・プロシージャ「スタンドアロン・サーバー用のOracle Grid Infrastructureのプロビジョニング」が導入されました。
3.15.3 Oracle RACでのジョブおよびアラートの管理
Oracle Enterprise Managerの「管理」タブは、Oracle RACデータベースに使用できます。
クラスタ・データベースの「ホーム」ページには、Oracle Real Application Clusters (Oracle RAC)データベースのすべてのインスタンスが表示され、サーバー管理のために自動ワークロード・リポジトリ(AWR)によって収集されたいくつかのOracle RAC固有の統計の集計が示されます。
その詳細を表示するために、インスタンス固有のページに移動する必要はありません。ただし、クラスタ・データベースの「ホーム」ページでは、稼働しているはずのインスタンスが停止したり、インスタンスで多数のアラートが発生している場合は、各アラートについてインスタンス固有のページにドリルダウンできます。
この項で後述する特定の管理タスクを実行するには、ターゲットOracle RACデータベースにログインし、クラスタ・データベースの「ホーム」ページに移動し、「管理」タブをクリックします。
- Oracle RACでのジョブの管理
Oracle Enterprise Managerジョブは、データベース・レベルでもインスタンス・レベルでも管理できます。 - Oracle Enterprise Managerを使用したOracle RACでのアラートの管理
Oracle Enterprise Managerを使用して、Oracle RAC環境のアラートを構成できます。 - Oracle Enterprise Managerでの定義済ブラックアウトの使用
Oracle Real Application Clusters (Oracle RAC)データベースのすべての管理対象ターゲットについてブラックアウト(メンテナンス操作によって監視データに偏りが発生したり、不要なアラートが生成されないように、データベース監視を一時停止する期間のこと)を定義できます。
3.15.3.1 Oracle RACでのジョブの管理
Oracle Enterprise Managerジョブは、データベース・レベルでもインスタンス・レベルでも管理できます。
たとえば、クラスタ・データベース・レベルでジョブを作成し、そのジョブをターゲットOracle Real Application Clusters (Oracle RAC)データベースのアクティブな任意のインスタンスで実行できます。または、インスタンス・レベルでジョブを作成し、それを作成した特定のインスタンスでのみ実行することもできます。障害が発生した場合、再起ジョブは障害が発生しなかったインスタンスで実行できます。
ジョブは、インスタンス・レベル、クラスタ・レベルまたはクラスタ・データベース・レベルで作成できるため、クラスタ・データベース内の使用可能ないずれのホストでもジョブを実行できます。これはスケジュールされるジョブにも適用されます。Oracle Enterprise Managerでは、ジョブ・アクティビティがActive
、History
、Library
などのカテゴリに分類されて表示されます。
オペレーティング・システムのスクリプトやSQLスクリプトの送信およびスケジュールされたジョブの調査には、「ジョブ」タブを使用します。たとえば、特定のOracle RACデータベースのためのバックアップ・ジョブを作成するには、次のようにします。
-
「ターゲット」をクリックし、ジョブを作成するデータベースをクリックします。
-
ターゲット・データベースにログインします。
-
Oracle Enterprise Managerに「データベース・ホーム」ページが表示されたら、「メンテナンス」をクリックします。
-
Enterprise Managerのジョブ・ウィザードの各ページに入力し、ジョブを作成します。
親トピック: Oracle RACでのジョブおよびアラートの管理
3.15.3.2 Oracle Enterprise Managerを使用したOracle RACでのアラートの管理
Oracle Enterprise Managerを使用して、Oracle RAC環境のアラートを構成できます。
また、グローバル・キャッシュ変換、読取り一貫性要求など、Oracle RACデータベースの特殊なテストも構成できます。
Oracle Enterprise Managerでは、Oracle RAC環境のデータベース・レベルとインスタンス・レベルのアラートは区別されます。アーカイブ・ログ・アラートなど、インスタンス・レベル・アラートのアラートしきい値は、インスタンスのターゲット・レベルで設定できます。この機能により、パフォーマンスがしきい値を超えた場合、特定のインスタンスに関するアラートを受信できます。また、表領域に関するアラートの設定など、データベース・レベルでアラートを構成することもでき、各インスタンスで重複するアラートの受信を回避できます。
関連項目:
Oracle RACでのアラートの構成の例は、Oracle Technology Networkを参照してください。パッケージを使用してしきい値を構成する方法は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
親トピック: Oracle RACでのジョブおよびアラートの管理
3.15.3.3 Oracle Enterprise Managerでの定義済ブラックアウトの使用
Oracle Real Application Clusters (Oracle RAC)データベースのすべての管理対象ターゲットについてブラックアウト(メンテナンス操作によって監視データに偏りが発生したり、不要なアラートが生成されないように、データベース監視を一時停止する期間のこと)を定義できます。
ブラックアウトを定義すると、メンテナンスの実行中にアラートが発生しないようにできます。ブラックアウトは、クラスタ・データベース全体について定義することも、クラスタ・データベースの特定のインスタンスについて定義することもできます。
親トピック: Oracle RACでのジョブおよびアラートの管理