1 Oracle RACの概要

Oracle Real Application Clusters (Oracle RAC)のインストールと管理、および各種コンポーネントと機能についての概要を説明します。

ノート:

マルチテナント・コンテナ・データベース(CDB)は、Oracle Database 21c以降で唯一サポートされているアーキテクチャです。

Oracle RACの概要

Oracle Real Application Clusters (Oracle RAC)について学習します。また、Oracle RACと単一インスタンスのOracle Databaseの機能的な相違点についても説明します。

非クラスタのOracle Databaseインスタンスには、Oracle Databaseとインスタンスとの間に1対1関係があります。しかし、Oracle RAC環境では、データベースとインスタンス間に1対多の関係があります。Oracle RACデータベースには複数のインスタンスが存在でき、それらすべてが1つのOracle Databaseにアクセスします。すべてのデータベース・インスタンスは同じインターコネクトを使用する必要があり、Oracle Clusterwareもこれを使用します。

Oracle RACデータベースは、非クラスタのOracle Databaseとアーキテクチャが異なります。各Oracle RACデータベース・インスタンスには次のものも存在します。

  • 各インスタンスの1つ以上の追加REDOスレッド
  • インスタンス固有のUNDO表領域

複数のサーバーの処理能力を組み合せることによって、単一のサーバーの場合よりも優れたスループットおよびOracle RACスケーラビリティを実現できます。

クラスタは、相互に接続された複数のコンピュータまたはサーバーで構成され、エンド・ユーザーおよびアプリケーションからは1つのサーバーとして認識されます。Oracle DatabaseにOracle RACオプションを使用すると、Oracle Databaseインスタンスをクラスタ化できます。Oracle RACでは、インフラストラクチャとしてOracle Clusterwareを使用し、複数のサーバーを関連付けてそれらが単一のシステムとして動作するように構成します。

Oracle Clusterwareは、Oracle Databaseと統合された、ポータブルなクラスタ管理ソリューションです。Oracle Clusterwareは、Oracle RACの実行に必要なインフラストラクチャを提供するOracle RACを使用するために必要なコンポーネントです。Oracle Clusterwareでは、仮想インターネット・プロトコル(VIP)・アドレス、データベース、リスナー、サービスなどのリソースも管理します。さらに、Oracle Clusterwareによって、非クラスタのOracle DatabaseとOracle RACデータベースの両方で、Oracle高可用性インフラストラクチャを使用できます。Oracle ClusterwareとOracle Automatic Storage Management (Oracle ASM) (この2つは一緒になってOracle Grid Infrastructureを構成します)が一緒になることによって、非クラスタとOracle RACデータベースの任意の組合せで使用されるストレージのクラスタ化プールを作成できます。

Oracle RACが動作するほとんどのプラットフォームにおいて、必要なクラスタウェアはOracle Clusterwareのみです。Oracle Database 19c以降、ベンダー・クラスタウェアのOracle Clusterwareとの統合が非推奨になり、Oracle Database 21c以降ではサポートされません。

次の図に、Oracle DatabaseのオプションであるOracle RACにより、複数のサーバーが1つのOracle Databaseにアクセスするための単一のシステム・イメージが提供される方法を示します。Oracle RACでは、各Oracleインスタンスは異なるサーバー上で実行する必要があります。

図1-1 Oracle RACアーキテクチャでのOracle Database

図1-1の説明が続きます
「図1-1 Oracle RACアーキテクチャでのOracle Database」の説明

従来、Oracle RAC環境は、1つのデータ・センターにあります。ただし、Oracle RACはOracle拡張クラスタ上に構成できます。このアーキテクチャでは、サイト障害からの非常に高速なリカバリを実現し、すべてのサイトのすべてのノードで単一のデータベース・クラスタの一部としてアクティブにトランザクションを処理できます。拡張クラスタでは、クラスタ内のノードは通常、2つのファイア・セルの間、2つの部屋や建物の間、2つの異なるデータ・センターや都市の間など、地理的に分散されます。可用性の理由から、データを両方のサイトに配置する必要があり、これにより、記憶域に対してディスク・ミラーリング技術の実装が必要になります。

このアーキテクチャの実装を選択する場合は、特に距離、待機時間および提供される保護の程度を考慮し、このアーキテクチャがビジネスに対してよい解決策となるかどうかを評価する必要があります。拡張クラスタ上のOracle RACでは、ローカルOracle RAC構成の場合よりもよりも高い可用性が提供されます。ただし、拡張クラスタでは、組織の障害復旧要件の一部が満たされないことがあります。適切な分離は一部の災害(局所的停電、サーバー室の冠水など),に対する有効な保護策となりますが、あらゆる種類の障害に効果があるわけではありません。破損や地域災害に対する防御を含む災害に対する包括的な保護策として、『Oracle Data Guard概要および管理』,および次のMaximum Availability Architecture(MAA) Webサイトで説明するように、Oracle RACとともにOracle Data Guardを使用することをお薦めします。

Oracle RACは、すべてのタイプのアプリケーションに対して高可用性および高スケーラビリティを提供する特殊な技術です。また、Oracle RACインフラストラクチャは、Oracleエンタープライズ・グリッド・コンピューティング・アーキテクチャを実装するための主要なコンポーネントです。複数のインスタンスが単一のデータベースにアクセスすることで、サーバーがシングル・ポイント障害になることを防止できます。Oracle RACを使用すると、小規模な汎用サーバーをクラスタに組み込んで、ミッション・クリティカルなビジネス・アプリケーションをサポートするスケーラブルな環境を構築できます。Oracle RACデータベースにデプロイするアプリケーションは、コードを変更せずに使用できます。

Oracle RACでは、異なるノードで実行されている複数のインスタンスがデータベースにアクセスできます。Oracle RAC Cache Fusionにより、異なるインスタンスで実行されている複数のセッションからの変更が必ず自動的に調整されます。Oracle Database 21c以降のリリースでは、Oracle RAC Cache Fusion機能を実行するこれらのバックグラウンド・プロセスが、回復できないエラーを処理するように拡張されています。原因によっては、Oracle RACで操作を再試行したり、エラーを修正してインスタンス障害を防ぐことができます。これにより、インスタンス障害の発生が減少し、そのようなワークロードの影響を防止できます。

Oracle RACを含むOracle Multitenantの概要

Oracle RACを使用するようにマルチテナント・コンテナ・データベース(CDB)を構成できます。

各PDBをOracle RAC CDBの各データベース・インスタンスまたはインスタンスのサブセットで使用可能にすることができます。いずれの場合も、PDBへのアクセスは、動的データベース・サービスを使用して規制されます。アプリケーションは、シングル・インスタンスの非CDBに接続する場合と同様に、これらのサービスを使用してPDBに接続します。

同じOracle RACデータベースまたはインスタンスを共有している別のPDBを妨害する可能性のある、特定のPDBでの特定の操作が実行されないようにするために、PDBを分離できます。PDBの分離により、より大規模な統合が可能になります。

CDBとしてOracle RACデータベースを作成し、PDBをCDBに接続する場合、デフォルトでは、いずれのインスタンス上でも、PDBは自動的には起動されません。PDBに割り当てられた最初の動的データベース・サービス(データベース名と同じ名前のデフォルト・データベース・サービス以外)によって、サービスが実行されているインスタンス上でそのPDBが使用可能になります。

Oracle RACのCDBの複数のインスタンスでPDBが有効かどうかにかかわらず、CDBは通常、PDBで実行されるサービスで管理されます。PDBをそのインスタンスで手動で起動することにより、各インスタンスで手動でPDBのアクセスを有効にできます。

Oracle RACのインストールの概要

Oracle Universal Installerを使用してOracle Grid InfrastructureおよびOracle Databaseソフトウェアをインストールし、Oracle Database Configuration Assistant (Oracle DBCA)を使用してデータベースを作成します。

データベースの作成によって、Oracle RAC環境のネットワーク構成、データベース構造およびパラメータ設定が、選択された環境に最適なものになります。

また、Oracle RACのインストールにフリート・パッチ適用およびプロビジョニングを使用することもできます。これにより、Oracle Universal Installerと以前に指定したOracle DBCAを完全に活用できます。また、フリート・パッチ適用およびプロビジョニングでは標準化と自動化が可能です。

Oracle RAC環境の互換性

デプロイメント・プランの一環として、Oracle Grid Infrastructureで様々なOracle Databaseリリースを使用するためのリリース互換性の制限およびガイドラインを確認します。

同じクラスタ内に様々なリリースのOracle Databaseが含まれる構成でOracle RACを実行するには、まずOracle Grid Infrastructureをインストールする必要があり、これはそのクラスタ内にデプロイする最高バージョンのOracle Databaseと同じバージョン以上にする必要があります。たとえば、Oracle RAC 19cデータベースおよびOracle RAC 23aiデータベースを同じクラスタ内で実行するには、Oracle Grid Infrastructure 23aiをインストールする必要があります。Oracle RAC環境におけるバージョンの互換性の詳細は、My Oracle Supportに問い合せてください。

Oracle RACデータベースのインストール

Oracle Real Application Clusters (Oracle RAC)のインストール方法および制限事項を学習します。

ノート:

ポリシー管理データベース・デプロイメント・オプションは、Oracle Database 23aiでサポートされなくなりました。

Oracle RACをインストールする前に、まずOracle Grid Infrastructureをインストールします。Oracle Grid Infrastructureのリリースは、インストールするOracle RACのリリース以上にする必要があります。クラスタ用にOracle Grid Infrastructureをすでにインストールして構成している場合、Oracle Universal Installerでは、クラスタ内のノードにわたってOracle Databaseホームをデプロイすることのみできます。Oracle Universal Installerで、クラスタ内のすべてのノードにわたってデータベース・ホームをデプロイするオプションが表示されない場合、Oracle RACをインストールしようとしているサーバーはクラスタ・メンバー・ノードではありません。

インストール時にOracle DBCAを手動で実行して、Oracle RACまたはOracle RAC One Nodeデータベースを作成する必要があります。このような場合、データベースの作成は2ステップのプロセスになります。まず、Oracle Databaseインストーラを実行してOracle RACソフトウェアをインストールします。次に、Oracle DBCAを使用してOracle RACまたはOracle RAC One Nodeデータベースを作成および構成します。

ノート:

データベースを作成する前に、Oracle Grid Infrastructureホームでデフォルトのリスナーを実行しておく必要があります。デフォルトのリスナーがOracle Grid Infrastructureホームに存在しない場合は、デフォルトのリスナーを作成するためにOracle Grid InfrastructureホームからNETCAを実行することを指示したエラーがOracle DBCAから返されます。

Oracle RACソフトウェアは、Oracle Databaseインストール・メディアの一部として配布されます。Oracle Databaseソフトウェアのインストール・プロセスでは、クラスタ上でインストールを実行していることが認識されると、デフォルトでOracle RACオプションもインストールされます。Oracle Universal Installerでは、Oracle RACがOracleホームと呼ばれるディレクトリ構造にインストールされます(これは、システムで実行中の他のOracleソフトウェアのOracleホーム・ディレクトリとは別のものです)。Oracle Universal Installerは、クラスタに対応しているため、クラスタの一部として定義したすべてのノードにOracle RACソフトウェアをインストールします。

Oracle Database 21c以降、インストール・プロセスでは、デフォルトで読取り専用Oracleホーム・ディレクトリが作成されます。読取り専用Oracleホームをソフトウェア・イメージとして使用して、複数のデータベース・サーバー間で共有できます。複数のデータベース・サーバーにパッチを配布する際に更新する必要のあるOracleホーム・イメージは1つのみになるため、パッチ適用と一括ロールアウトが簡単になります。読取り専用Oracle Databaseホームは、構成情報が実際のソフトウェアから明確に分離されているため、従来のOracle Databaseホームよりもセキュアです。したがって、アクティブなプロセスからOracle Databaseホーム内に新しいファイルが作成されるリスクはありません。

Oracle RACデータベースの作成

Oracle Databaseのデプロイメントの一部は、データベースの作成です。

データベース・デプロイメントの一環としてデータベースを作成することも、まずデータベース・ソフトウェアのみをデプロイし、Oracle DBCAを使用して、新しく作成されたOracleホームから実行する予定のデータベースを作成することもできます。

ノート:

ポリシー管理データベース・デプロイメント・オプションは、Oracle Database 23aiでサポートされなくなりました。

Oracle RAC環境では、DB_UNIQUE_NAME.DB_DOMAINの値は、それ全体で企業内のデータベースごとに一意である必要があります。各プラガブル・データベース(PDB)の名前も、クラスタ内で一意である必要があります。

デフォルトでは、Oracle DBCAによって1つのサービスがOracle RACインストール用に作成されます。これはデフォルトのデータベース・サービスであり、ユーザーの接続にはこのサービスを使用しないでください。デフォルトのデータベース・サービスは、通常、DB_NAMEおよびDB_DOMAIN初期化パラメータの組合せdb_name.db_domainを使用して識別されます。データベースが制限モードになっていないかぎり、このデフォルトのサービスはOracle RAC環境のすべてのインスタンスで使用できます。

ノート:

SRVCTLまたはOracle Enterprise Managerを使用して、メンテナンス操作用にデフォルトのデータベース・サービスを確保し、データベース作成後のステップとして、ユーザーまたはアプリケーションの接続用に動的データベース・サービスを作成することをお薦めします。Oracle DBCAでは、Oracle RACデータベース用の動的データベース・サービス作成オプションを提供していません。Oracle RAC One Nodeデータベースの場合、少なくとも1つの動的データベース・サービスを作成する必要があります。

Oracle RACクラスタの拡張の概要

初期デプロイメント後に、Oracle RACクラスタを拡張し(クローニングとも呼ばれる)、環境にノードを追加する場合は、クラスタ内で現在使用している管理スタイルを考慮して、複数のレイヤーでこれを行う必要があります。

Oracle RACクラスタを拡張するための様々な手段が用意されています。現在の環境を拡張するには、次のいずれかの方法を選択します。

  • 新しいOracle RACデータベースとその他のソフトウェアをプロビジョニングするためのフリート・パッチ適用およびプロビジョニング
  • クローニング・スクリプトを使用したクローニング
  • addnode.sh (Windowsの場合はaddnode.bat)スクリプトを使用したノードの追加

環境の初期のデプロイ方法にかかわらず、どちらのアプローチも適用できます。どちらのアプローチも、クラスタを追加する予定のノードにOracleソフトウェアをコピーします。ノードにコピーされるソフトウェアには、Oracle Grid InfrastructureソフトウェアおよびOracle Databaseホームがあります。

Oracle Databaseホームの場合、データベース・インスタンスが実行される可能性があるすべてのノードにデータベース・ソフトウェアをデプロイしておくようにします。いずれの場合も、まず、クラスタの一部にするすべてのノードにOracle Grid Infrastructureをデプロイします。

ノート:

Oracleクローニングは、Provisioning Packの一部であるOracle Enterprise Managerを使用したクローニングにかわるものではありません。Oracle Enterprise Managerを使用してOracle RACをクローニングする場合、プロビジョニング・プロセスには、取得するホーム、デプロイする場所、および収集される他の様々なパラメータに関する詳細情報が記述された一連のステップが含まれています。

新規インストールの場合、またはOracle RACデータベースを1つのみインストールする場合は、従来の自動化された対話式インストール方法(Oracle Universal Installer、フリート・パッチ適用およびプロビジョニング、Oracle Enterprise ManagerのProvisioning Pack機能など)を使用します。クラスタ内のノードに対してOracle RACを追加または削除する場合は、このトピックの最後に示す...のノードでのOracle RACの追加と削除の各トピックで説明されている手順を使用します。

クローニングのプロセスは、Oracle ClusterwareホームおよびOracle RACを含むOracleホームが1つ以上のノードに正常にインストールされていることを前提としています。さらに、クラスタ・データベースの拡張元となるノードですべてのルート・スクリプトが正常に実行されている必要があります。

関連項目:

Provisioning Packの詳細は、Oracle Enterprise Managerオンライン・ヘルプ・システムを参照してください。

Oracle Real Application Clusters One Nodeの概要

Oracle Real Application Clusters One Node (Oracle RAC One Node)はOracle Database 11gリリース2 (11.2)以降に使用可能なOracle Database Enterprise Editionのオプションです。

Oracle RAC One Nodeは、クラスタ内の1つのノードで通常の操作のみで実行されるOracle RAC対応データベースの単一インスタンスです。このオプションにより、企業内にOracle Databases用の標準デプロイメントを提供することで管理オーバーヘッドを削減しながら、オラクル社がデータベースの統合に対して提供する柔軟性が向上します。Oracle RAC One Nodeデータベースには、Oracle Grid Infrastructureが必要なため、Oracle RACデータベースと同じハードウェア設定が必要になります。

Oracle RACが認証されているすべてのプラットフォームでOracle RAC One Nodeがサポートされています。Oracle RACと同様に、Oracle Virtual Machine(Oracle VM)でのOracle RAC One Nodeの動作が保証されます。Oracle RACまたはOracle RAC One NodeをOracle VMで使用すると、Oracle RACの高可用性およびスケーラビリティによってOracle VMのメリットが大きくなります。

Oracle RAC One Nodeでは、サーバーのスケーラビリティは無制限で、アプリケーションが増大して単一ノードで提供できるリソース以上のリソースを必要とする場合には、アプリケーションをOracle RACにオンラインでアップグレードできます。Oracle RAC One Nodeが実行されているノードがオーバーロードになった場合は、インスタンスをクラスタ内の別のインスタンスに再配置できます。Oracle RAC One Nodeでは、オンライン・データベース再配置機能を使用して、アプリケーション・ユーザーには停止時間なしでデータベース・インスタンスを再配置できます。あるいは、リソース・マネージャ・インスタンス・ケージングを使用して、クラスタ内のサーバーごとに個々のデータベース・インスタンスのCPU使用率を制限でき、必要な場合は要求シナリオに応じてこの制限を動的に変更できます。

単一クライアント・アクセス名(SCAN)を使用してデータベースに接続すると、クライアントは、データベースが実行されているノードのサービスを独自に特定できます。したがって、クライアント接続によっては、Oracle RAC One Nodeインスタンスの再配置がクライアントに対してほとんど透過的になります。クライアントでの再配置の影響を最小限に抑えるために、アプリケーション・コンティニュイティとOracleの高速アプリケーション通知または透過的アプリケーション・フェイルオーバーを使用することをお薦めします。

Oracle RAC One Nodeデータベースの管理は、Oracle RACデータベースまたは非クラスタ・データベースとは若干異なります。Oracle RAC One Nodeデータベースの場合は、候補ノード・リストを監視し、可能であればサーバーがいつでもフェイルオーバーに使用できるようにしておく必要があります。

ノート:

  • Oracle RAC One Nodeは、クライアントのフェイルオーバー用に、トランザクション・ガードおよびアプリケーション・コンティニュイティをサポートしています。
  • すべての障害の可能性に準備するために、少なくとも1つの動的データベース・サービス(Oracle Clusterware管理データベース・サービス)をOracle RAC One Nodeデータベースに追加する必要があります。

Oracle ClusterwareおよびOracle RACの概要

Oracle Clusterwareは、すべてのOracle Databaseプラットフォームを対象とした完全な統合クラスタウェア管理ソリューションです。

Oracle Clusterwareを使用するためのガイドライン

Oracle Clusterwareに用意されている機能には、ノード・メンバーシップ、グループ・サービス、グローバル・リソース管理、高可用性機能など、クラスタ・データベースの管理に必要なすべての機能が備わっています。

Oracle Grid Infrastructureは、単独でインストールすることも、Oracle RACのインストールの前提条件としてインストールすることもできます。サービスなどのOracle Database機能は、基盤となるOracle Clusterwareメカニズムを使用して高度な機能を提供します。Oracle Database 21c以降、Oracle RACではサード・パーティのクラスタウェア製品がサポートされなくなりました。

Oracle Clusterwareは、Oracle RACのために設計され、Oracle RACに密接に統合されています。Oracle Clusterwareを使用して、クラスタで高可用性操作を管理できます。任意の管理ツールを使用してOracle RACデータベースを作成する場合、データベースは、VIPアドレス、単一クライアント・アクセス名(SCAN) (SCAN VIPおよびSCANリスナーを含みます)、Oracle Notification Service、Oracle Netリスナーなど他の必須コンポーネントとともにOracle Clusterwareに登録され、これによって管理されます。ノードが起動されるとこれらのリソースは自動的に起動され、リソースに障害が発生すると自動的に再起動されます。Oracle Clusterwareデーモンは各ノードで実行されます。

Oracle Clusterwareが管理するものはすべてCRSリソースと呼ばれます。CRSリソースには、データベース、インスタンス、プラガブル・データベース(PDB)、サービス、リスナー、VIPアドレス、アプリケーション・プロセスがあります。Oracle Clusterwareは、Oracle Cluster Registry (OCR)に格納されているリソースの構成情報に基づいてCRSリソースを管理します。SRVCTLコマンドを使用して、すべてのOracle定義のCRSリソースを管理できます。Oracle Clusterwareは、クラスタ内のOracleによって事前定義されていないサーバー上で動作するすべてのプロセスを管理するためのCRSリソースを作成できるフレームワークを提供します。Oracle Clusterwareは、これらのコンポーネントの構成を説明する情報を管理可能なOCRに保存します。

一時表領域の概要

一時表領域を使用してローカル・ディスクに作成された非共有の表領域にスピル・オーバーを書き込みます。

ハッシュ集約、ソート、ハッシュ結合、WITH句のカーソル持続期間一時表の作成、ディスクへのスピル・オーバーのためのスター型変換などのSQL操作は引き続き可能です。スピル・オーバーは、共有ディスク上の表領域に移動します。一時表領域の管理は、既存の表領域の管理と似ています。

一時表領域は、次の方法で表領域管理を向上させます。

  • プライベート記憶域に一時ファイルを保存することで、ローカル記憶域のI/Oのメリットを活用します。
  • コストの高いインスタンス間の一時表領域管理を回避します。
  • 一時表領域のアクセス性が向上されます。
  • ディスク上の領域メタデータ管理の排除により、インスタンスのウォームアップ・パフォーマンスが向上します。

ノート:

一時表領域は、データベース・オブジェクト(表や索引など)の保存には使用できません。
カーソル持続期間一時表領域のパラレル実行のサポート

WITH句およびスター型変換を使用して作成された一時表領域は、共有ディスク上の一時表領域に存続します。

パラレル問合せの子プロセスのセットは、このような一時表領域に問合せの中間結果をロードします。この結果は、別の子プロセスによって読み込まれます。こうした結果を読み取る子プロセスの割当て方法には制限はありません。これは、任意のインスタンス上の任意のパラレル問合せ子プロセスが、共有ディスク上に存在する一時表領域を読み取ることができるためです。

読取り/書込みおよび読取り専用インスタンス・アーキテクチャの場合、パラレル問合せ子プロセスは、これらのインスタンスの一時表領域に中間結果をロードするため、中間結果が保存されているインスタンスのパラレル問合せ子プロセスは、中間結果の読取り操作をアフィニティと共有するため、中間結果を読み取れるようになります。

一時表領域の編成

一時表領域を編成する場合は、次の情報を確認します。

たとえば:

CREATE TEMPORARY TABLESPACE temp_ts TEMPFILE\
   '/u01/app/oracle/database/23.4.0/dbs/temp_file'\
   EXTENT MANAGEMENT UNIFORM SIZE 1M AUTOEXTEND ON;
  • 一時表領域を作成すると、単一ファイルではなく、すべてのインスタンスに一時ファイルが作成されます。

  • 一時表領域は、読取り専用インスタンスと読取り/書込みインスタンスの両方に作成できます。

    CREATE TEMPORARY TABLESPACE FOR ALL temp_ts TEMPFILE\
      ‘/u01/app/oracle/database/23.4.0/dbs/temp_file’\
      EXTENT MANAGEMENT UNIFORM SIZE 1M AUTOEXTEND ON;
一時表領域の階層

一時表領域を定義するときに階層が存在し、それによって、表領域がどのように使用されるかが決定します。

データベース用のデフォルト共有一時表領域と個別のユーザーに割り当てられる複数の一時表領域のように、1つのデータベース内に複数の一時表領域が存在する可能性があります。ユーザーに共有一時表領域が割り当てられている場合は、その表領域が最初に使用されます。それ以外の場合は、デフォルトの一時表領域が使用されます。

問合せの処理時に書出し用の表領域が選択されると、別の表領域に切り替えられることはなくなります。たとえば、ユーザーに共有一時表領域が割り当てられていて、その領域が書出し中に使い果たされても、代替の表領域に切り替えられることはありません。その場合は、書出しによるエラーが発生します。さらに、共有一時表領域はインスタンス間で共有されることに注意してください。

一時表領域への書出しの一時領域の割当ては、読取り専用インスタンスと読取り/書込みインスタンスの間で異なります。読取り専用インスタンスの場合、書出しに使用する一時的な場所を選択する際の優先順位は次のようになります。

  1. ユーザーの一時表領域からの割当て。
  2. データベースのデフォルト一時表領域からの割当て。

ノート:

データベースに一時表領域が存在しない場合、読取り専用インスタンスは共有一時表領域に書き出すようになります。

読取り/書込みインスタンスの場合、割当ての優先順位は前述の割当て順序と異なります。これは、共有一時表領域に、次に示すような割当ての優先順位が与えられているためです。

  1. ユーザーの共有一時表領域。
  2. データベースのデフォルト共有一時表領域。
一時表領域の機能

一時表領域を使用する場合は、次の情報を確認します。

インスタンスは一時表領域を共有できません。したがって、あるインスタンスは別のインスタンスから一時表領域を取得できません。あるインスタンスが書出し中に一時表領域を使い果たすと、その文によってエラーが発生します。

  • 一時表領域は、表領域ごとに1つのBIGFILEのみをサポートします。

  • BIGFILEベースの一時表領域が1つしかないために発生する競合の問題に対処するために、それぞれのユーザーにデフォルトとして複数の一時表領域を割当てできます。

  • データベース管理者は、ALTER USER構文を使用して、デフォルトの一時表領域をユーザーに指定できます。たとえば:

    ALTER USER MAYNARD TEMPORARY TABLESPACE temp_ts;
  • 次の2つのデフォルト一時表領域を持つユーザーを構成できます。

    • ユーザーが読取り専用インスタンスに接続されている場合、1つの一時表領域。

    • 1つの共有一時表領域。同じユーザーがノードで実行している読取り/書込みインスタンスに接続したときに使用されます。

一時ファイルのメタデータ管理

インスタンス固有の情報(割当てのビットマップ、一時ファイルの現在のサイズ、ファイル・ステータスなど)は、制御ファイルではなくSGAに格納されます。このような情報は、インスタンス間で異なる可能性があるためです。

現時点では、一時ファイルの情報(ファイル名、作成サイズ、作成SCN、一時ブロック・サイズ、ファイル・ステータスなど)は、自動エクステントの属性および初期ファイルと最大ファイルとともに制御ファイルに保存されます。ただし、制御ファイルの一時ファイルに関する情報は、適用可能なすべてインスタンスに共通です。

インスタンスが起動すると、制御ファイル情報が読み取られ、そのインスタンスの一時表領域を構成する一時ファイルが作成されます。1つのノードで実行しているインスタンスが複数存在する場合、それぞれのインスタンスが専用の一時ファイルを持つようになります。

一時表領域の場合は、関連するインスタンスごとに個別のファイルが存在します。一時ファイルの名前は、一時表領域の作成時に指定した一時ファイルの名前にインスタンス番号が付加されるというネーミング規則に従います。

たとえば、読取り専用ノードN1で番号3および4の2つの読取り専用Oracleデータベース・インスタンスを実行していると仮定します。次に示すDDLコマンドにより、ノードN1に2つのファイル/temp/temp_file_3/temp/temp_file_4が、それぞれインスタンス3と4に作成されます。

CREATE TEMPORARY TABLESPACE temp_ts TEMPFILE  '/temp/temp_file'\
   EXTENT MANAGEMENT UNIFORM SIZE 1M AUTOEXTEND ON;

2つの読取り/書込みインスタンス(インスタンス番号1および2)と、2つの読取り専用インスタンス(インスタンス番号3および4)があるとします。次に示すDDLコマンドにより、4つのファイルが作成されます。インスタンス1と2には、それぞれ/temp/temp_file_all_1/temp/temp_file_all_2が作成され、インスタンス3と4には、それぞれ/temp/temp_file_all_3/temp/temp_file_all_4が作成されます。

CREATE TEMPORARY TABLESPACE FOR ALL  temp_ts_for_all TEMPFILE  '/temp/temp_file_all'\
   EXTENT MANAGEMENT UNIFORM SIZE 1M AUTOEXTEND ON;
一時表領域のDDLサポート

DDLコマンドALTER TABLESPACEまたはALTER DATABASEのいずれかを使用して、一時表領域および一時ファイルを管理できます。

読取り/書込みインスタンスからすべての一時表領域管理および作成DDLコマンドを実行します。その他すべてのDDLコマンドの実行は、すべてのインスタンスに同様に作用します。

たとえば、次のコマンドは、一時ファイルとすべての読取り専用インスタンスのサイズを変更します。

ALTER TABLESPACE temp_ts RESIZE 1G;

一時表領域の場合は、現時点で一時ファイルに対してアクティブな割当てオプションとその制限がサポートされます。

読取り専用インスタンスの一時表領域に対してDDLコマンドを実行するには、クラスタ内に少なくとも1つの読取り専用インスタンスが必要です。この制限は、一時表領域FOR ALLの作成時または変更時には適用されません。コマンドALTER DATABASEに句DEFAULT TEMPORARY TABLESPACEを追加することで、デフォルトの一時表領域をデータベースに割り当てることができます。

たとえば:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_ts;

次に示すように、データベースの作成時にデフォルト一時表領域を指定できます。

CREATE DATABASE .. DEFAULT TEMPORARY TABLESPACE temp_ts_for_dbtemp_ts TEMPFILE\
   '/temp/temp_file_for_db' EXTENT MANAGEMENT UNIFORM SIZE 1M AUTOEXTEND ON;

コマンドCREATE DATABASEを使用してデフォルトの一時表領域を指定することはできません。データベースを作成すると、そのデフォルトの一時表領域はデフォルトの共有一時表領域を指します。ALTER DATABASEコマンドを実行して、既存の一時表領域をデータベースのデフォルトとして割り当てる必要があります。

ユーザーの一時表領域

ユーザーの作成時に、共有または一時表領域を指定しないと、そのユーザーは対応するデフォルトの一時表領域から共有および一時表領域を継承します。

ユーザー用の一時表領域は、次のように指定できます。

CREATE USER new_user IDENTIFIED BY new_user TEMPORARY TABLESPACE temp_ts_for_all;

ユーザー用の一時表領域は、次に示すようにALTER USERコマンドを使用して変更できます。

ALTER USER maynard TEMPORARY TABLESPACE temp_ts;

前述したように、デフォルトのユーザー一時表領域は、一時領域で共有されることがあります。ALTER USER...TEMPORARY TABLESPACEコマンドでは、次の事項について考慮します。

  • ユーザーのデフォルト一時表領域は、任意の既存の一時表領域に変更できます。

  • ユーザーのデフォルト一時表領域を共有一時表領域Tに設定する場合、Tはデフォルト共有一時表領域と同じであることが必要です。

  • デフォルトのユーザー一時表領域が共有一時表領域を指しているときに、ユーザーのデフォルト共有一時表領域を変更する場合は、デフォルトの一時表領域も、その表領域に変更します。

次に、コマンドALTERを使用して一時領域を管理するいくつかの例を示します。

  • 一時表領域をオフラインにするには:

    ALTER DATABASE TEMPFILE ‘/temp/temp_file’ OFFLINE;
  • 一時表領域のサイズを縮小するには:

    ALTER TABLESPACE temp_ts SHRINK SPACE KEEP 20M
  • 一時ファイルの自動拡張の属性を変更するには:

    ALTER TABLESPACE temp_ts AUTOEXTEND ON NEXT 20G
  • 一時ファイルのサイズを変更するには:

    ALTER TABLESPACE temp_ts RESIZE 10G

    ノート:

    一時ファイルのサイズを変更すると、そのサイズは個別のファイルに適用されます。

前述のコマンドを実行すると、一部の読取り専用インスタンスは停止することがあります。これによって、コマンドの正常な実行が妨げられることはありません。その理由は、その後の起動時に、読取り専用インスタンスは制御ファイルの情報に基づいて新しい一時ファイルを作成するためです。作成は短時間で完了します。これは、Oracle Databaseによって一時ファイルのヘッダー・ブロック(特に、ファイル・サイズに関する情報を記録するブロック)のみがリフォーマットされるためです。一時ファイルを作成できない場合は、読取り専用インスタンスが停止したままになっています。読取り/書込みインスタンスから発行したコマンドは、オープンしているすべての読取り専用インスタンスでただちにリプレイされます。

コマンドの原子性要件

読取り/書込みインスタンスから実行するコマンドはすべて、アトミック方式で実行されます。

これは、すべてのライブ・インスタンスで成功した場合のみコマンドが成功することを意味します。

一時表領域とディクショナリのビュー

ディクショナリのビューは、一時表領域に関する情報を表示するように拡張されています。

データ・ディクショナリ・ビューに対する次の変更に注意してください。

  • AWRやSQLモニタなどのユーティリティを通じて公開される一時表領域と一時ファイルに関連する診断可能なすべての情報は、一時表領域と一時ファイルについても使用できます。この情報は、一時表領域および一時ファイルの既存のディクショナリ・ビュー(DBA_TEMP_FILESDBA_TEMP_FREE_SPACE)で得られます。

  • ディクショナリ・ビューのUSER_TABLESPACESDBA_TABLESPACESは、SHAREDという列によって拡張されています。この列は、一時ファイルが共有かどうかを示します。

  • DBA_TEMP_FILESディクショナリ・ビューは、2つの列SHAREDINST_IDによって拡張されています。SHARED列は、一時ファイルが共有かどうかを示します。INST_ID列には、インスタンス番号が格納されます。共有一時ファイルの場合、ファイルごとに1つの行が存在し、INST_IDはnullになります。一時ファイルの場合、この列には、バイト単位のファイル・サイズ(BYTES列)など、各インスタンスの一時ファイルに関する情報が格納されます。

  • DBA_TEMP_FREE_SPACEディクショナリ・ビューは、2つの列SHAREDINST_IDによって拡張されています。SHARED列は、一時ファイルが共有かどうかを示します。INST_ID列には、インスタンス番号が格納されます。共有一時ファイルの場合、ファイルごとに1つの行が存在し、INST_IDはnullになります。一時ファイルの場合、この列には、使用可能な空き領域の合計(FREE_SPACE列)など、各インスタンスの一時ファイルに関する情報が含まれます。

  • DBA_TABLESPACESなどのディクショナリ・ビューでは、次の値を含むSHARED列を使用して表領域のタイプが区別されます。

    • SHARED: 共有一時表領域の場合

    • LOCAL_ON_ALL: すべてのインスタンス上の一時表領域の場合

    ノート:

    現時点では、問合せの一時表領域への書出し(ソートやハッシュ結合の書出しなど)は、自動的に暗号化されます。これは、一時表領域への書出しにも当てはまります。

Oracle RACのアーキテクチャおよび処理の概要

Oracle RACをインストールするには、ソフトウェア、ネットワークおよびストレージ構成が必要です。

Oracle RACには、いくつかのコンポーネントが必要です。
  • クラスタ内のすべてのノードから同じ記憶域および同じデータ・ファイル・セットへの同時アクセスのためのOracle Clusterware
  • クラスタ内のすべてのノードでプロセス間通信(IPC)を有効にする通信プロトコル
  • 論理的に結合された単一のキャッシュにデータが存在する場合と同様にデータを処理する複数のデータベース・インスタンス
  • クラスタ内のノードのステータスを監視および通信するためのメカニズム

クラスタを認識する記憶域ソリューション

Oracle Real Application ClustersのShared Everythingアーキテクチャと、Shared Everythingが記憶域オプションに与える意味について学習します。

Oracle RACデータベースは、Shared Everythingデータベースです。Oracle RAC環境のすべてのデータ・ファイル、制御ファイル、SPFILEおよびREDOログ・ファイルは、クラスタ対応の共有ディスクに存在する必要があります。これにより、すべてのクラスタ・データベース・インスタンスがこれらの記憶域コンポーネントにアクセスできるようになります。Oracle RACデータベースはShared Everythingアーキテクチャを使用するため、Oracle RACでは、すべてのデータベース・ファイルに対して、クラスタで認識される記憶域が必要です。

Oracle RACでは、Oracle Databaseによってディスク・アクセスが管理され、様々な記憶域アーキテクチャでの使用が保証されています。記憶域の構成方法は自由に選択できますが、サポートされているクラスタを認識する記憶域ソリューションを使用する必要があります。Oracle Databaseには、次のOracle RAC記憶域オプションがあります。

  • Oracle Automatic Storage Management(Oracle ASM)

    記憶域の管理にはこのソリューションをお薦めします。

  • 認定されたクラスタ・ファイル・システム

    • Oracle Advanced Cluster File System (Oracle ACFS)をお薦めします。

    • クラスタ対応ボリューム・マネージャ上の、Oracle RAC用に認定されているサード・パーティのクラスタ・ファイル・システム。たとえば:

      • Oracle OCFS2 (Linuxのみ)

      • IBM GPFS (IBM AIXのみ)

  • 認定されたネットワーク・ファイル・システム(NFS)・ソリューション

Oracle RACおよびネットワーク接続性

Oracle RAC環境のすべてのノードは、少なくとも1つのLocal Area Network (LAN)に接続する必要があります。このネットワークは通常パブリック・ネットワークと呼ばれ、ユーザーおよびアプリケーションがデータベースにアクセスできるようにします。

Oracle RACでは、パブリック・ネットワークに加えて、ノードとこのノード上で動作するデータベース・インスタンスの間の通信専用に使用するプライベート・ネットワーク接続が必要になります。このネットワークは、一般にインターコネクトと呼ばれます。

インターコネクト・ネットワークは、クラスタ内のすべてのサーバーを接続するプライベート・ネットワークです。インターコネクト・ネットワークは、1つ以上のスイッチと1つのギガビット・イーサネット・アダプタを使用する必要があります。

ノート:

  • より大きい帯域幅とのインタフェースはサポートされていますが、インターコネクトとの間のクロスオーバー・ケーブルの使用はサポートされていません

  • キャッシュ・フュージョンによってインターコネクトがインスタンス間通信で使用されるため、ユーザー通信でインターコネクト、プライベート・ネットワークを使用しないでください。

インターコネクト上のインスタンス間通信用にユーザー・データグラム・プロトコル(UDP)またはリライアブル・データ・ソケット(RDS)・プロトコルのいずれかを使用するようにOracle RACを構成できます。Oracle Clusterwareは、UDPプロトコルを使用して同じインターコネクトを使用しますが、RDSを使用するように構成することはできません。

ネットワーク接続ストレージ(NAS)を使用する場合、追加のネットワーク接続が必要になります。ネットワーク接続ストレージは、NFSファイラなどの通常のNASデバイスに、またはFibre Channel over IPなどを使用して接続されるストレージにできます。この追加のネットワーク通信チャネルは、Oracle RACが使用する他の通信チャネル(パブリックおよびプライベート・ネットワーク通信)とは独立している必要があります。他のネットワーク通信チャネルの1つを使用してストレージ・ネットワーク通信を収束する必要がある場合は、ストレージ関連の通信が1番目の優先順位を得るようにします。

Oracle Databasesに接続するための動的データベース・サービスの使用の概要

アプリケーションは、動的データベース・サービス機能を使用して、パブリック・ネットワークを介してOracle Databaseに接続する必要があります。

動的データベース・サービスでは、規則および特性を定義して、ユーザーおよびアプリケーションからデータベース・インスタンスへの接続方法を制御できます。これらの特性には、一意の名前、ワークロード・バランシング、フェイルオーバー・オプションおよび高可用性特性が含まれます。

ユーザーは、クライアント/サーバー構成を使用するか、または接続プーリングを任意に使用し、1つ以上の中間層を介してOracle RACデータベースにアクセスします。デフォルトでは、Oracle RACデータベースへのユーザー接続は、TCP/IPプロトコルを使用して確立されますが、他のプロトコルもサポートされています。Oracle RACデータベース・インスタンスには、クラスタのSCANを使用してアクセスする必要があります。

仮想IPアドレスの概要

ノードVIPは、クライアントがOracle RACデータベースへの接続に使用する仮想IP (VIP)アドレスです。

Oracle Clusterwareは、パブリック・ネットワーク上のノードのVIPアドレスをホストします。データベース・クライアントからOracle RACデータベース・インスタンスへの一般的な接続試行のプロセスは、次のように要約できます。

  1. データベース・クライアントは、SCAN (パブリック・ネットワーク上のSCAN VIPを含む)に接続して、有効なサービス名をSCANリスナーに提供します。

  2. 次にSCANリスナーは、このサービスをホストするデータベース・インスタンスを判別し、それぞれのノード上のローカル・リスナーまたはノード・リスナーにクライアントをルーティングします。

  3. ノード・リスナーは、ノードVIPおよび特定のポートでリスニングして、接続リクエストを取得し、クライアントをローカル・ノードのインスタンスに接続します。

クラスタ上で複数のパブリック・ネットワークを使用して、複数のサブネットを介したクライアント接続をサポートする場合、サブネット内で前述の操作を実行します。

ノードで障害が発生した場合、VIPアドレスは、VIPアドレスがTCP接続を受け入れることができる別のノードにフェイルオーバーされますが、このノードはOracle Databaseへの接続は受け入れません。ホーム・ノードに存在しないVIPアドレスに接続を試行するクライアントは、TCP接続タイムアウト・メッセージを待機するかわりにrapid connection refusedエラーを受け取ります。VIPが構成されたネットワークがオンラインに戻ると、Oracle Clusterwareは、接続が受け入れられたホーム・ノードにVIPをフェイルバックします。通常、VIPアドレスは次の場合にフェイルオーバーされます。

  • VIPアドレスが実行されているノードで障害が発生した場合
  • VIPアドレスのすべてのインタフェースに障害が発生した場合
  • VIPアドレスのすべてのインタフェースがネットワークから切断された場合

Oracle RACでは、異なるサブネットを介したクラスタへのアクセスを可能にする複数のパブリック・ネットワークをサポートしています。各ネットワーク・リソースは専用のサブネットを表し、各データベース・サービスは特定のネットワークを使用してOracle RACデータベースにアクセスします。各ネットワーク・リソースは、Oracle Clusterwareで管理されるリソースで、これにより、すでに説明したVIPの動作が可能になります。

SCANは、組織のドメイン・ネーム・サーバー(DNS)またはグリッド・ネーミング・サービス(GNS)で定義される単一のネットワーク名で、3つのIPアドレス間でラウンド・ロビン順に動作します。Oracle RACデータベースへのすべての接続で、クライアント接続文字列にSCANを使用することをお薦めします。受信する接続は、3つのSCANリスナーを介して、要求されたサービスを提供するアクティブなインスタンス間でロード・バランシングされます。SCANを使用すると、クラスタの構成を変更(ノードの追加や削除)した場合にも、クライアント接続を変更する必要はありません。SCANは、複数のサブネットを完全にサポートします。つまり、クラスタを動作させるサブネットごとに1つのSCANを作成できます。

Oracle RACのサービス登録の制限

有効なノードの確認機能により、登録要求がリスナーにより許可される一連のIPアドレスまたはサブネットを構成および動的に更新する機能が提供されます。

リスナーへのデータベース・インスタンスの登録は、リクエスト元が有効なノードである場合にのみ成功します。ネットワーク管理者は、有効なノードおよび除外ノードのリストを指定したり、有効なノードの確認を完全に無効にすることができます。有効なノードのリストでは、データベースに登録できるノードやサブネットを明示的にリストします。除外ノードのリストでは、データベースに登録できないノードを明示的にリストします。動的登録を制御することによって、Oracle RACデプロイメントの管理性およびセキュリティが向上します。

デフォルトでは、SCANリスナー・エージェントはREMOTE_ADDRESS_REGISTRATION_listener_nameをプライベートIPエンドポイントに設定します。SCANリスナーは、プライベート・ネットワークからの登録要求のみを受け入れます。SCANリスナーのプライベート・ネットワークにアクセスできないリモート・ノードは、listener.oraファイルのregistration_invited_nodes_aliasパラメータを使用して、またはコマンドライン・インタフェースのSRVCTLを使用してSCANリスナーを変更して、有効なノードのリストに含める必要があります。

ノート:

Oracle Grid Infrastructure 12c以降、SCANリスナーについて、VALID_NODE_CHECKING_REGISTRATION_listener_nameおよびREGISTRATION_INVITED_NODES_listener_nameパラメータがlistener.oraファイルに設定されている場合、リスナー・エージェントはこれらのパラメータを上書きします。

SRVCTLユーティリティを使用してinvitednodes値とinvitedsubnets値を設定すると、リスナー・エージェントは自動的にVALID_NODE_CHECKING_REGISTRATION_listener_nameをSUBNETに設定し、REGISTRATION_INVITED_NODES_listener_namelistener.oraファイルで指定されたリストに設定します。

CRSによって管理されるその他のリスナーの場合、リスナー・エージェントは、listener.oraファイルでまだ設定されていない場合にのみ、listener.oraファイルでVALID_NODE_CHECKING_REGISTRATION_listener_nameをSUBNETに設定します。SRVCTLユーティリティでは、SCAN以外のリスナーについてinvitednodes値とinvitedsubnets値の設定はサポートされていません。リスナー・エージェントは、SCAN以外のリスナーについてlistener.oraファイルのREGISTRATION_INVITED_NODES_listener_nameを更新しません。

Oracle RACソフトウェア・コンポーネント

Oracle RAC環境では、Oracle RAC Cache Fusionによって、各Oracleインスタンスのバッファ・キャッシュが自動的に同期されます。

Oracle RACデータベースでは、データベース管理者からの手動操作なしで、インスタンス間のブロック転送が自動的に管理されます。グローバル・キャッシュ・サービス(GCS)およびグローバル・エンキュー・サービス(GES)は、大半の操作を実行します。GCSおよびGESは、グローバル・リソース・ディレクトリ(GRD)内のバッファ・キャッシュ・ブロックおよびエンキューを調整します。GRDの内容は、すべてのアクティブ・インスタンス間で分散されるため、SGAサイズがわずかに増加します。

ノート:

  • GRDおよびOracle RAC Cache Fusionのコンポーネントにより、合計SGAの約10%が使用されます。単一インスタンス・データベースからOracle RACデータベースに移行する場合は、適宜SGAを増やすように計画してください。
  • Oracle Database 23.7以降:
    • ロック・マネージャ・チケット数のデフォルト値が増加したため、非常にビジーな同時ワークロードのパフォーマンスが向上します。これにより、GCSプロセスによるメモリー使用量もわずかに増加します。
    • GCR*プロセスによる監視機能の改善により、メモリー使用量がわずかに増加する可能性があります。V_GCR_METRICSビューには、新しい監視機能の詳細が示されます。

キャッシュがウォームになると、プライベート・ネットワークを介してブロックを必要とする他のインスタンスにブロックを転送できます。これは、多くの場合、ディスクからブロックを読み取るよりも高速です。一貫性のあるブロックが別のインスタンスから要求される場合でも、キャッシュ・フュージョンはブロック・イメージを直接転送します。

さらに、キャッシュ・フュージョンでは、プライベート・ネットワークの待機時間とディスク上のサービス時間を監視して、最適なパスを自動的に選択します。

Oracle RACバックグラウンド・プロセス

グローバル・キャッシュ・サービス(GCS)およびグローバル・エンキュー・サービス(GES)プロセスは、グローバル・リソース・ディレクトリ(GRD)と連携してキャッシュ・フュージョンを有効にします。

Oracle RACプロセスおよびその識別子は次のとおりです。

  • ACMS: メモリー・サービスへのアトミック制御ファイル(ACMS)

    Oracle RAC環境では、各インスタンスのACMSのプロセスは、分散SGAメモリー更新が成功時にグローバルにコミットされるようにしたり、障害発生時にグローバルに終了されるようにするエージェントです。

  • BG00: バックグラウンド・プロセス

    ora_bgは、様々なメンテナンス・タスクおよびモニタリング・タスクを実行するOracle RAC環境の標準のバックグラウンド・プロセスです。バックグラウンド・プロセスは、バッファ・キャッシュ管理、ログ・ライター(LGWR)プロセスのサポート、チェックポイント調整、バックグラウンド・プロセスの監視および統計収集を担当します。

  • GCW: グローバル競合解決(GCR)モニター・プロセス(LMHB)

    ora_gcwは、LMHBのインフラストラクチャ・ヘルパー・プロセスです。LMHBプロセスのストールを監視し、必要に応じて再起動します。

  • GTX0-j: グローバル・トランザクション・プロセス

    GTX0-jプロセスは、Oracle RAC環境でXAグローバル・トランザクションを透過的にサポートします。これらのプロセスの数は、データベースによって、XAグローバル・トランザクションのワークロードに基づいて自動調整されます。

  • LMON: グローバル・エンキュー・サービス・モニター

    LMONプロセスでは、グローバル・エンキューおよびクラスタ全体のリソースが監視され、グローバル・エンキュー・リカバリ操作が実行されます。

  • LMD: グローバル・エンキュー・サービス・デーモン

    LMDプロセスでは、各インスタンス内の受信リモート・リソース要求が管理されます。

  • LMS: グローバル・キャッシュ・サービス・プロセス

    LMSプロセスでは、情報をグローバル・リソース・ディレクトリ(GRD)に記録することにより、データファイルのステータスおよび各キャッシュ・ブロックのレコードがメンテナンスされます。LMSプロセスでは、リモート・インスタンスへのメッセージ・フローの制御、グローバル・データ・ブロック・アクセスの管理、異なるインスタンスのバッファ・キャッシュ間のブロック・イメージの送信も行われます。この処理は、キャッシュ・フュージョンの一部です。

  • LCK0: インスタンス・エンキュー・プロセス

    LCK0プロセスでは、ライブラリや行キャッシュ要求などの非キャッシュ・フュージョン・リソース要求が管理されます。

  • RMSn: Oracle RAC管理プロセス(RMSn)

    RMSnプロセスでは、Oracle RACの管理性タスクが実行されます。RMSnプロセスによって実行されるタスクには、新規インスタンスがクラスタに追加された際のOracle RAC関連リソースの作成があります。

  • RSMN: RSMNプロセスは、リモート・インスタンスでのバックグラウンド・セカンダリ・プロセスの作成と通信を管理します。これらのバックグラウンド・セカンダリ・プロセスでは、別のインスタンスで実行されている調整プロセスのためのタスクが実行されます。

  • SCMN: 統計収集および管理

    SCMNは、スレッド化されたOracle RACアーキテクチャのマルチスレッド・プロセス用のメイン・スレッドです。他のすべてのスレッドは、インスタンス内のリクエストに基づいて、SCMNを介してプロセス内で生成されます。これはアイドル・メイン・スレッドで、リクエスト(特にスレッドの生成)を待機し、定期的なメンテナンス操作の実行とともに処理します。

  • VOSD: 仮想オペレーティング・システム・デーモン

    VOSDプロセスは、時間制限付きOracle Databaseサービス・アクションを実行します。VOSDはインスタンスの起動時に生成され、データベースにとって重要なシステム・サービス・アクションの実行を担当します。

ノート:

この項で説明する多くのOracle Databaseコンポーネントは、『Oracle Database概要』で説明するシングル・インスタンスのOracle Databaseの追加コンポーネントです

動的データベース・サービスによる自動ワークロード管理の概要

サービスは、共通の属性、パフォーマンスしきい値および優先度を持つアプリケーションのグループを表します。

アプリケーション機能は、サービスによって識別されるワークロードに分割できます。たとえば、Oracle E-Business Suiteでは、総勘定元帳、売掛金勘定、受注など、職務ごとにサービスを定義できます。サービスは、1つ以上のOracle Databaseインスタンス、またはグローバル・クラスタ内の複数のデータベースにまたがることができます。単一のインスタンスで複数のサービスをサポートできます。サービスを提供するインスタンスの数は、アプリケーションに対して透過的です。サービスは、競合するアプリケーションを管理する単一のシステム・イメージを提供し、各ワークロードを1つの単位として管理できるようにします。

中間層アプリケーションおよびクライアントでは、サービス名をTNS接続文字列内の接続の一部として指定することで、サービスを選択します。たとえば、Oracle WebLogic Serverのデータ・ソースは、サービスにルーティングするように設定されます。Net Easy*Connectionを使用する場合、この接続は、user_name/password@SCAN/service_nameのように、サービス名とネットワーク・アドレスのみで構成されます。

Oracle Scheduler、パラレル問合せ、Oracle GoldenGateキューなどのサーバー側の作業で、ワークロード定義の一部としてサービス名を設定します。Oracle Schedulerの場合、ジョブがジョブ・クラスに割り当てられ、サービス内で複数のジョブ・クラスが実行されます。パラレル問合せおよびパラレルDMLの場合、問合せコーディネータはサービスに接続し、パラレル問合せワーカーはパラレル処理中にそのサービスを継承します。Oracle GoldenGateの場合、ストリーム・キューはサービスを使用してアクセスされます。サービス下で実行される作業は、そのサービスのしきい値および属性を継承し、サービスの一部として測定されます。

Oracle Database Resource Managerでは、サービスをコンシューマ・グループおよび優先度にバインドします。グループおよび優先度によってサービスをバインドすると、データベースでサービスを重要性の順に管理できます。たとえば、DBAは、優先度の高いオンライン・ユーザー向けのサービスと内部レポート・アプリケーション向けの優先度の低いサービスを別個に定義できます。同様に、DBAでGold、SilverおよびBronzeのサービスを定義して、同じアプリケーションの要求に対してサービスを提供する順番に優先度を付けることができます。システムのサービスを計画する場合、その計画には、他のサービスに対する相対的な各サービスの優先度が含まれている必要があります。このようにして、Oracle Database Resource Managerは優先度が1位のサービス、次に優先度2位のサービス、というように対処できます。

ユーザーまたはアプリケーションがデータベースに接続するときは、接続文字列のCONNECT_DATA部分に指定されたサービスを使用することをお薦めします。Oracle Databaseでは、データベースが作成されると自動的に1つのデータベース・サービスが作成されますが、このサービスの動作は、その後自分で作成するデータベース・サービスの動作とは異なります。データベースを使用したワークロード管理の柔軟性を高めるために、Oracle Databaseでは、複数のサービスを作成し、サービスが起動されるインスタンスを指定できます。より柔軟なワークロード管理が必要な場合は、この章を読み進めると、サービスで使用できる追加機能を理解できます。

ノート:

この章で説明する機能は、デフォルトのデータベース・サービス(DB_NAMEDB_UNIQUE_NAMEPDB_NAMESYS$BACKGROUNDおよびSYS$USERS)では機能しません。これらのサービスを、データベースに接続するアプリケーションに使用しないことをお薦めします。このような機能を活用するには、クラスタ・マネージド・サービスを作成する必要があります。自分が作成したサービスのみ管理できます。データベースによって作成されたサービスは、すべてデータベース・サーバーによって自動的に管理されます。

動的データベース・サービス

動的データベース・サービスによってワークロードの分散を管理し、ユーザーおよびアプリケーションに対してパフォーマンスを最適化できます。動的データベース・サービスでは、次の機能が提供されます。

  • サービス: 企業のグリッド構想を可能にするために、Oracle Databaseでは、サービスと呼ばれる強力な自動ワークロード管理機能が導入されています。サービスは、Oracle Real Application Clusters (Oracle RAC)データベースで定義できるエンティティで、これを使用してデータベース・ワークロードをグループ化し、サービス提供のために割り当てられている最適なインスタンスに作業をルーティングし、計画および計画外のアクションの高可用性を実現できます。

  • 高可用性フレームワーク: Oracle Databaseでコンポーネントを常に稼働状態に維持できるOracle RACコンポーネント。

  • 高速アプリケーション通知(FAN): インスタンス、サービスまたはノードのUPDOWNイベントなどのクラスタ状態の変更およびロード・バランシング・アドバイザのイベントについての情報をOracle RACアプリケーションおよびクライアントに提供します。FANには、クライアントにイベントを発行する方法が2つあり、1つは、Oracle Notification Serviceデーモンで、Oracle Application Serverを含むJava Database Connectivity (JDBC)クライアントによって使用され、もう1つは、Oracle GoldenGateアドバンスト・キューイングで、以前のリリースのOracle Call Interface (OCI)およびOracle Data Provider for .NET (ODP.NET)クライアントによってのみ使用されます。

    ノート:

    すべてのOracle Databaseクライアントは、Oracle Notification Serviceを使用します。

  • トランザクション・ガード: 計画外停止および重複送信の場合に、トランザクションの実行を1回以下にするためのプロトコルおよびAPIを提供します。

  • アプリケーション・コンティニュイティ: リカバリ可能なエラーが発生した場合に、多くのシステム、通信、記憶域の停止およびハードウェア障害をマスクして、処理中の要求をリプレイする汎用インフラストラクチャを提供します。既存のリカバリ・テクノロジとは異なり、この機能では、アプリケーション下でトランザクションおよび非トランザクション・セッション状態をリカバリしようとするため、停止はアプリケーションにとって処理の遅延のように見えます。

  • コネクション・ロード・バランシング: 要求されたデータベース・サービスを提供するすべてのインスタンスで、受信する接続を均等に分散するOracle Net Servicesの機能です。

  • ロード・バランシング・アドバイザ: データベースとそのインスタンスが提供する現在のサービス・レベルについてアプリケーションに情報を提供します。ロード・バランシング・アドバイザは、サービス用に定義した管理ポリシーに基づいて最適なサービスを得るために、アプリケーション・リクエストの宛先に関する推奨事項をアプリケーションに提供します。ロード・バランシング・アドバイザのイベントは、Oracle Notification Serviceを介してパブリッシュされます。

  • 自動ワークロード・リポジトリ(AWR): サービス・レベルの統計をメトリックとして追跡します。統計が特定のしきい値を超えた場合または満たせなかった場合に、これらのメトリックのサーバー生成アラートを作成できます。

  • 高速接続フェイルオーバー(FCF): FANイベントをサブスクライブすることにより、Oracleクライアントが高速な接続のフェイルオーバーを実現できるようにします。

  • ランタイム接続ロード・バランシング: アプリケーションがいくつかの作業を完了するために接続をリクエストしたときに、データベース・インスタンスによって提供されている現在のサービス・レベルに基づいて、Oracleクライアントが接続プールでインテリジェントな接続の割当てを実行できるようにします。

  • 単一クライアント・アクセス名(SCAN): Oracle RACに接続しているクライアントに単一の名前を提供し、この名前は、クラスタのノードを追加または削除しても、クラスタの存続期間中は変更されません。SCANに接続しているクライアントでは、Thin JDBC URLやEZConnectなどの簡単な接続文字列を使用でき、ロード・バランシングおよびクライアントの接続フェイルオーバーの目標が実現されます。

Oracle RACおよび非クラスタOracle Database環境をデプロイして、様々な方法で動的データベース・サービス機能を使用できます。ノード数および使用環境の複雑さと目的によって異なりますが、最適な自動ワークロード管理および高可用性構成に関する選択肢は、いくつかの考慮事項(自動ワークロード管理のトピックで説明)に応じて決まります。

ブロッカ・リゾルバの概要

ブロッカ・リゾルバは、システムの遅延を自動的に検出して解決するOracle Databaseの機能です。

ノート:

Oracle Databaseリリース23ai以降では、Oracle Quality of Service Management (QoSMまたはQoS Management)はサポートされなくなりました。

ブロッカ・リゾルバは、当初はシステムの遅延を識別し、遅延に関する関連情報をトレース・ファイルにダンプしました。Oracle Database 12cリリース2 (12.2)以降では、ブロッカ・リゾルバがシステムの遅延に対処し、その解決を試みることができます。ブロッカ・リゾルバは、単一インスタンスとOracle RACデータベース・インスタンスのどちらでも動作します。

ブロッカ・リゾルバは、次のように機能します。

  • 最初にシステムの遅延を検出し、その遅延を分析してから、遅延の原因を確認します。その後、遅延を解決するための対処方針を決定するためにヒューリスティックを適用します。

  • My Oracle Supportにトレース・ファイルを提出して遅延の原因の特定を依頼するために、DBAによる手動のステップが必要だったタスクを自動化し、データベースとアプリケーションのダウンタイムを最小化または排除します。

  • すべてのプロセスを定期的にスキャンして、連続するスキャンでリソースを保持しているプロセスの小さなサブセットを分析します。ブロッカ・リゾルバは、リソースで待機しているものがない場合、プロセスを無視します。

  • インスタンス間の遅延(Oracle ASMインスタンスからの応答を待機しているデータベース・プロセスがホルダーの場合の遅延)を考慮します。

  • ホルダー・プロセスを終了して、そのリソースを待機している次のプロセスの進行を可能にして遅延を防止します。

  • アラート・ログのORA-32701エラー・メッセージでDBAに通知します。

Database In-MemoryおよびOracle RACの概要

すべてのOracle RACノードには、独自のインメモリー(IM)列ストアがあります。デフォルトでは、移入オブジェクトはクラスタ内のすべてのIM列ストアにわたって分散されます。

すべてのOracle RACノードでIM列ストアを同じサイズにすることをお薦めしますOracle RACノードがIM列ストアを必要としない場合、INMEMORY_SIZEパラメータを0に設定します。

Oracle Database 19c以降、Database In-Memoryには、Database In-Memoryオプションを必要とせずに最大16 GBの列ストアでDatabase In-Memoryを使用できる新しいベース・レベル機能があります。Oracle RACデータベースでは、各データベース・インスタンスのINMEMORY_SIZE設定が16 GBを超えないようにする必要があります。この機能を有効にするには、INMEMORY_FORCEパラメータをBASE_LEVELに設定します。

完全に異なるオブジェクトを各ノードに移入させたり、より大きなオブジェクトをクラスタ内のすべてのIM列格納間で分散させることが可能です。Oracle Engineered Systemsでは、同じオブジェクトを各ノードのIM列ストアに表示させることも可能です。クラスタ内のIM列ストア間のオブジェクトの分散は、INMEMORY属性への追加の副句(DISTRIBUTEおよびDUPLICATE)により制御されます。

Oracle RAC環境では、指定されたINMEMORY属性のみを含むオブジェクトが、クラスタ内のIM列ストア間で自動的に分散されます。DISTRIBUTE句を使用して、クラスタ間でのオブジェクトの分散方法を指定できます。デフォルトで、使用されるパーティション化のタイプ(ある場合)によりオブジェクトの分散方法が決定されます。オブジェクトがパーティション化されないと、ROWID範囲に分散されます。あるいは、DISTRIBUTE句を指定して、デフォルトの動作をオーバーライドできます。

Oracle Engineered Systemでは、クラスタ内のIM列ストア間で移入されたオブジェクトを複製またはミラー化できます。この技法により最高レベルの冗長性が提供されます。DUPLICATE句は、オブジェクトの複製方法を制御します。DUPLICATEのみを指定すると、データのミラー化されたコピーが1つ、クラスタ内のIM列ストア間で分散されます。各IM列ストア内のすべてのオブジェクトを複製するには、DUPLICATE ALLを指定します。

ノート:

非エンジニアド・システムでOracle RACにデプロイする場合、DUPLICATE句はNO DUPLICATEとして扱われます。

Oracle RAC環境の管理の概要

Oracle RACを管理する際は、デプロイメント・タイプ、使用するツール、システムの監視方法、パフォーマンスの評価方法など、様々な考慮事項があります。

Oracle RAC環境の設計およびデプロイ

Oracle RACによる高可用性計画を設計および実装しているすべての企業は、高可用性を必要とするビジネス要因を綿密に分析することから始める必要があります。

高可用性を実現するためのビジネス要件を分析し、様々な高可用性ソリューションの実装に必要な投資レベルについて理解しておくことによって、ビジネスと技術の両方の目的を達成する高可用性アーキテクチャの開発が可能になります。

関連項目:

可用性の要件に最適なアーキテクチャを選択および実装するには、次の情報が役立ちます。

  • 「設計およびデプロイ方法」では、ビジネスの高可用性要件を評価する場合に使用できる高水準の概要を示しています。

  • Oracle Database高可用性概要およびベスト・プラクティスでは、組織に最適なアーキテクチャを選択する方法および複数の高可用性アーキテクチャについて説明し、要件を満たす最適なアーキテクチャを選択するためのガイドラインを示し、Oracle Maximum Availability Architectureの情報も示します

Oracle RAC環境の管理ツール

管理者は、サーバー制御ユーティリティ(SRVCTL)、Oracle Enterprise Manager、SQL*Plus、およびその他のユーティリティを使用して、クラスタ・データベースを単一システム・イメージとして管理します。

  • サーバー制御ユーティリティ(SRVCTL): シングル・ポイントからOracle RACデータベースを管理するためのコマンドライン・インタフェース。SRVCTLを使用して、データベースおよびインスタンスの起動と停止、インスタンスおよびサービスの削除または移動を実行できます。SRVCTLを使用して、構成情報、Oracle Real Application Clusters One Node(Oracle RAC One Node)Oracle ClusterwareおよびOracle ASMの管理もできます。

  • Oracle Fleet Patching and Provisioning (Oracle FPP): Oracle Fleet Patching and Provisioningは、Oracle RACデータベースのパッチ適用、アップグレード、およびプロビジョニングに使用します。

  • Oracle Enterprise Manager: 非クラスタ・データベースおよびOracle RACデータベース環境を管理するOracle Enterprise Manager Cloud Control GUIインタフェース。可能な場合は、Oracle Enterprise Managerを使用して管理タスクを実行することをお薦めします。

    Oracle Enterprise Manager Cloud Controlを使用して、Oracle RAC One Nodeデータベースを管理することもできます。

  • SQL*Plus: SQL*Plusコマンドは、現行のインスタンスで動作します。現行のインスタンスは、SQL*Plusセッションを開始したローカルのデフォルト・インスタンスまたはOracle Net Servicesの接続先リモート・インスタンスです。

  • 構成検証ユーティリティ(CVU): クラスタとOracle RACの様々なコンポーネント(共有ストレージ・デバイスなど)、ネットワーク構成、システム要件、Oracle Clusterware、およびオペレーティング・システムのグループやユーザーの検証に使用するコマンドライン・ツール。インストール前およびインストール後のクラスタ環境のチェックにもCVUを使用できます。CVUは、Oracle Grid InfrastructureおよびOracle RACコンポーネントのインストール前およびインストール時に特に役立ちます。Oracle ClusterwareおよびOracle Databaseのインストール後に、CVUを実行して環境を検証します。

    Oracle RACをインストールする前にCVUをインストールして、構成がOracle RACのインストールの最小要件を満たしていることを確認します。また、CVUを使用して、ノードの追加や削除などの管理タスクの完了を検証できます。

    ノート:

    Oracle Grid Infrastructure 23ai以降、クラスタ検証ユーティリティ(CVU)の名前は構成検証ユーティリティ(CVU)に変更されました。
  • Oracle DBCA: Oracle RAC、Oracle RAC One NodeおよびOracleの非クラスタ・データベースを作成し、最初に構成する場合の推奨ユーティリティ。

  • NETCA: Oracle RAC環境のネットワークを構成します。

関連項目:

  • SRVCTL、Oracle Enterprise ManagerおよびSQL*Plusを使用したOracle RAC管理の概要は、「データベース・インスタンスおよびクラスタ・データベースの管理」を参照してください

  • 「Oracle RACおよびOracle Clusterwareの監視」

  • SRVCTLの参照情報については、「サーバー制御ユーティリティのリファレンス」を参照してください

  • 構成検証ユーティリティ(CVU)、およびOIFCFGツール(ネットワーク・インタフェースの割当てと割当て解除)やOCRCONFIGコマンドライン・ツール(OCRの管理)などのその他のOracle Clusterwareツールの詳細は、『Oracle Clusterware管理およびデプロイメント・ガイド』を参照してください。

  • NETCAの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

Oracle RAC環境の監視

WebベースのOracle Enterprise Manager Cloud Controlを使用すると、Oracle RACデータベースを監視できます。

Oracle Enterprise Manager Cloud Controlは、グラフィカル・ユーザー・インタフェース(GUI)を介してアクセスするOracle環境を集中的に制御します。Oracle Enterprise Managerを使用してOracle RAC環境を監視する方法の詳細は、Oracle RACおよびOracle Clusterwareの監視を参照してください。

Oracle RAC環境を監視する場合の推奨事項は次のとおりです。

  • Oracle Enterprise Manager Cloud Controlを使用して、クラスタ・データベース管理タスクを開始します。

  • Oracle Enterprise Manager Cloud Controlを使用して、複数または個々のOracle RACデータベースを管理します。

  • V$ビューに基づいたグローバル・ビュー(GV$ビュー)を使用します。GV$ビューは、catclustdb.sqlスクリプトによって作成されます。データベースの作成にOracle DBCAを使用しない場合は、このスクリプトを実行します。それ以外の場合は、Oracle DBCAによってこのスクリプトが実行されます。

    ほとんどのV$ビューに対して、対応するGV$グローバル・ビューが存在します。V$情報に加えて、各GV$ビューにはINST_IDという名前の追加の列があり、ここにインスタンス番号が表示され、この番号に基づいて関連するV$ビュー情報が取得されます。

  • Automatic Database Diagnostic Monitor (ADDM)および自動ワークロード・リポジトリ(AWR)を含む、Oracle Enterprise ManagerのOracle Database Diagnostic and Tuningパックの高度な管理および監視機能を使用します。

    ノート:

    Statspackは下位互換性に使用できますが、Statspackで実行できるのはレポートのみです。ブロック競合およびセグメント・ブロックの待機に関連する統計を収集するには、Statspackをレベル7で実行する必要があります。

Oracle RAC環境でのパフォーマンス評価

Oracle RACに対して特別なチューニングは必要ありません。Oracle RACは特別な構成変更がなくてもスケーラビリティが向上します。

アプリケーションが非クラスタOracle RACデータベースで正常に動作する場合は、Oracle RAC環境でも正常に動作します。非クラスタOracle Databaseで実行する多くのチューニング・タスクによって、Oracle RACデータベースのパフォーマンスも向上できます。これは、より多くのCPUをまたいだスケーラビリティが必要な環境にとって特に当てはまることです。

Oracle RAC固有のパフォーマンス機能には、次のものがあります。

  • 動的リソース割当て

    • 必要に応じて、キャッシュ・フュージョン・リソースが動的に割り当てられます。

    • リソースを動的に取得すると、リソースをデータ・ブロックに対してローカルなままに保持できるため、パフォーマンスが向上します。

  • キャッシュ・フュージョンによる簡素化されたチューニング方法

    • キャッシュ・フュージョン用にパラメータをチューニングする必要はありません。

    • アプリケーション・レベルのチューニングは必要ありません。

    • 既存のアプリケーションに対してほとんど影響を及ぼすことなく、ボトムアップ・チューニングを実行できます。

  • 詳細なパフォーマンス統計

    • Oracle RACパフォーマンスを監視するために様々なビューを使用できます。

    • Oracle Enterprise ManagerのOracle RAC固有のパフォーマンス・ビュー