この章では、Oracle Real Application Clusters(Oracle RAC)データベース・インスタンスおよびOracle RACデータベースの管理方法について説明します。
内容は次のとおりです。
関連項目: Oracle Enterprise Managerの詳細は、『Oracle Enterprise Manager概要』およびOracle Enterprise Managerのオンライン・ヘルプを参照してください。 |
次の項では、Oracle RACデータベースとインスタンスの管理に使用される3つのツールである、Oracle Enterprise Manager、SQL*PlusおよびSRVCTL
ユーティリティを使用したOracle RAC管理について説明します。多くの場合、これらのツールを使用してOracle RAC環境を管理する方法は、シングル・インスタンスのOracle Databaseを管理する場合と同様です。
Oracle Enterprise Managerでは、Oracle RAC環境を集中的に制御し、複数のクラスタ・データベースで同時に管理タスクを実行できます。Enterprise Managerには、シングル・インスタンスを管理するDatabase Control、およびOracle RAC環境を管理するGrid Controlの2つの Graphical User Interface(GUI)があります。Oracle RACデータベースの各ノードに1つのOracle Enterprise Managerエージェントがあるため、Database Controlでは、そのデータベースのどのURLを使用しても、Oracle Enterprise Managerでデータベースを管理できます。
Oracle Enterprise Managerでは、通常、Oracle RAC固有の管理タスクは、クラスタ・データベース全体に関係するタスクおよび特定のインスタンスに関係するタスクの2つのレベルが中心です。たとえば、Oracle Enterprise Managerでは、ジョブのスケジュールやメトリックのアラートしきい値の設定に加え、データベース、クラスタ・データベース・インスタンスおよびそのリスナーを起動、停止および監視できます。または、パラメータの設定やリソース・プランの作成のようなインスタンス固有のコマンドを実行できます。コンソールを使用すると、スキーマ、セキュリティおよびクラスタ・データベースの格納機能を管理することもできます。
関連項目:
|
SQL*Plusコマンドは、現行のインスタンスで動作します。現行のインスタンスは、SQL*Plusセッションを開始したローカルのデフォルト・インスタンスまたはOracle Net Servicesの接続先リモート・インスタンスです。
デフォルトでは、SQL*Plusのプロンプトで現行のインスタンスが識別されないため、正しいインスタンスにコマンドを発行する必要があります。SQL*Plusセッションを開始して、インスタンスを指定せずにデータベースに接続すると、すべてのSQL*Plusコマンドはローカル・インスタンスで処理されます。この場合も、デフォルト・インスタンスが現行のインスタンスです。
SQL*Plusで別のインスタンスに接続するには、次のように、新しいCONNECT
コマンドを実行し、リモート・インスタンスのネット・サービス名を指定します。password
はパスワードです。
CONNECT user_name
@net_service_name
Enter password: password
SYSOPER
またはSYSDBA
で接続すると、インスタンスの起動や停止などの権限を必要とする操作を実行できます。複数のSQL*Plusセッションが、同時に同じインスタンスに接続できます。他のインスタンスに接続すると、SQL*Plusによって最初のインスタンスとの接続が自動的に切断されます。
注意: ASMインスタンスに接続し管理するには、SYSDBA 権限ではなく、SYSASM 権限を使用します。SYSDBA 権限を使用してASMインスタンスで実行されるコマンドは非推奨であるため、SYSDBA 権限を使用してASMインスタンスに接続すると、アラート・ログ・ファイルに警告が書き込まれます。
詳細は、『Oracle Databaseストレージ管理者ガイド』を参照してください。 |
SQL*Plusのプロンプトを変更して、プロンプトに現行のインスタンス名を含めることができます。これを行うには、次のようなSQL*Plusコマンドを実行します。
SET SQLPROMPT '_CONNECT_IDENTIFIER> '
このコマンドは、大なり記号(>)の前の文字列「SQL」を、現行のセッションの継続時間中に現行のインスタンス名を表示するユーザー変数_CONNECT_IDENTIFIER
に置換します。
すべてのセッションのプロンプトを自動的に変更するには、SQL*Plusの管理ディレクトリに含まれているglogin.sql
ファイルに、次のようなエントリを追加します。
SET SQLPROMPT '_CONNECT_IDENTIFIER> '
コマンドの一重引用符の間には、必要な他のテキストまたはSQL*Plusユーザー変数を指定できます。
ほとんどのSQL文は、現行のインスタンスに適用されます。Oracle RACデータベースでのインスタンスの起動と停止に、SQL*Plusを使用できます。SQL*Plusコマンドを、LinuxおよびUNIXシステムのroot
として、またはWindowsシステムの管理者として実行する必要はありません。シングル・インスタンスのOracle Databaseで通常使用する権限を持つ適切なデータベース・アカウントのみが必要です。SQL*Plusコマンドのインスタンスへの適用方法の例を示します。
ALTER SYSTEM CHECKPOINT LOCAL
は、デフォルトのインスタンスまたはすべてのインスタンスではなく、現在接続しているインスタンスにのみ適用されます。
ALTER SYSTEM CHECKPOINT
またはALTER SYSTEM CHECKPOINT GLOBAL
は、クラスタ・データベースのすべてのインスタンスに適用されます。
表3-1に、SQL*Plusコマンドのインスタンスへの適用方法を示します。
サーバー制御(SRVCTL
)ツールは、シングル・ポイントからOracle RACデータベースを管理するためのコマンドライン・インタフェースです。SRVCTL
を使用して、データベースおよびインスタンスの起動と停止、インスタンスおよびサービスの削除または移動を実行できます。また、SRVCTL
を使用すると、サービスの追加および構成情報の管理を行うこともできます。SRVCTL
を使用して、仮想IPアドレス、リスナー、Oracle Notification Services、ノード・レベル・アプリケーションなどのプログラムのグループを起動および停止します。
また、SRVCTL
ツールは、他のいくつかのOracleのツール製品で使用される構成情報も管理します。たとえば、Oracle Enterprise Managerは、SRVCTL
で生成された構成情報を使用して、クラスタ内のノードを検出および監視します。
SRVCTL
を使用してクラスタの構成操作を実行すると、SRVCTL
は構成データをOracle Cluster Registry(OCR)に格納します。SRVCTL
は、各ノードでSQL*Plusをコールし、その他の操作(インスタンスの起動や停止など)を実行します。
インスタンスの起動および停止には、Oracle Enterprise Manager、SQL*PlusまたはSRVCTL
が使用できます。詳細は、後述の項を参照してください。Oracle Enterprise ManagerおよびSRVCTL
のどちらにも、Oracle RACデータベースのすべてのインスタンスを1つの手順で起動および停止するオプションが用意されています。
データベースがNOMOUNT
またはMOUNT
状態の場合は、特定の操作のみ実行できます。他の操作を実行するには、データベースがOPEN
状態である必要があります。また、操作によっては、1つのインスタンスのみが必須状態になっている必要があったり、すべてのインスタンスが同一状態になっている必要があります。
次の項の手順は、サーバー・パラメータ・ファイル(SPFILE)を使用していることを前提としています。
Oracle RACインスタンスを起動する前に、クラスタウェアと使用するオペレーティング・システム固有の必須プロセスが実行されている必要があります。これらのプロセスの詳細は、ご使用のオペレーティング・システムのマニュアルを参照してください。
注意: クラスタ・ノードを再起動した後、そのノードが、しばらく完全には応答しない場合があります。このときOracle Databaseは、OracleDBConsole sid プロセスおよびOracleCRService リソースを再起動しようとしています。最終的には、すべてのリソース起動操作が完了し、コンピュータは、正常に稼働するようになります。 |
Oracle RACインスタンスの停止方法は、シングル・インスタンスのOracle環境でインスタンスを停止する場合と同じです。ただし、次の相違点があります。Oracle Databaseを停止する方法の詳細は、『Oracle Database管理者ガイド』を参照してください。
Oracle RACデータベースを完全に停止するには、データベースがオープン状態またはマウントされた状態となっているすべてのインスタンスを停止します。
NORMAL
またはIMMEDIATE
での停止後は、インスタンスのリカバリは不要です。ただし、SHUTDOWN
ABORT
コマンドを実行した後、またはインスタンスが異常終了した後は、リカバリが必要です。まだ実行中のインスタンスが、停止したインスタンスに対してインスタンス・リカバリを実行します。他に実行中のインスタンスがない場合は、次にデータベースをオープンするインスタンスが、リカバリが必要なすべてのインスタンスのリカバリを実行します。
LOCAL
オプションを指定したSHUTDOWN
TRANSACTIONAL
コマンドは、インスタンス上のすべてのアクティブ・トランザクションがコミットまたはロールバックされた後に、そのインスタンスを停止する場合に有効です。これは、このコマンドがSHUTDOWN
IMMEDIATE
の場合に実行する機能とは別の機能です。他のインスタンス上のトランザクションがこの操作を妨げることはありません。LOCAL
オプションを省略した場合、この操作は、停止前に起動された他のすべてのインスタンス上のトランザクションがコミットまたはロールバックされるまで待機します。
クラスタ・データベース・インスタンスまたはクラスタ・データベースを起動または停止する手順については、『Oracle Database 2日でReal Application Clustersガイド』を参照してください。
ローカル・ノードに接続された状態で、1つのインスタンスのみを起動または停止するには、事前に現行の環境にローカル・インスタンスのSIDが含まれていることを確認する必要があります。SQL*Plusセッションかどうかに関係なく、セッション内の後続のすべてのコマンドは、そのSIDに対応付けられます。
ローカル・インスタンスを起動または停止するには、SQL*Plusセッションを開始し、SYSDBA
またはSYSOPER
権限で接続した後に、必要なコマンドを実行します。たとえば、ローカル・ノード上でインスタンスを起動しマウントする場合は、SQL*Plusセッション内で次のコマンドを実行します。
CONNECT / AS SYSDBA STARTUP MOUNT
注意: ASMディスク・グループを使用する場合は、SYSDBA 権限ではなく、SYSASM 権限を使用してASMインスタンスに接続し、管理します。詳細は、『Oracle Databaseストレージ管理者ガイド』を参照してください。 |
Oracle Net Services経由で、1つのノード上の1つのSQL*Plusセッションから複数のインスタンスを起動できます。これを実現するには、Net Services接続文字列を使用して、各インスタンスに順次接続する必要があります。通常、この文字列は、TNSNAMES.ORA
ファイルのインスタンス固有の別名です。
注意: 正しいインスタンスに接続するには、接続文字列で1つのインスタンスにのみ対応付けられた別名を使用する必要があります。サービスの別名または複数のアドレスを持つ別名を使用すると、目的のインスタンスに接続されない場合があります。 |
たとえば、ローカル・ノード上でSQL*Plusセッションを使用すると、インスタンスの個々の別名を使用して、各インスタンスに順次接続し、リモート・ノード上の2つのインスタンスのトランザクションの停止を実行できます。最初のインスタンスの別名をdb1
、2つ目のインスタンスの別名をdb2
と仮定します。次のコマンドを入力して、最初のインスタンスに接続してから停止します。
CONNECT /@db1 AS SYSDBA SHUTDOWN TRANSACTIONAL
次のコマンドを入力して、SQL*Plusセッションから2つ目のインスタンスに接続した後、停止します。
CONNECT /@db2 AS SYSDBA SHUTDOWN TRANSACTIONAL
SQL*Plusでは、1度に2つ以上のインスタンスを起動または停止できません。そのため、クラスタ・データベースのすべてのインスタンスを1つのSQL*Plusコマンドで起動または停止することはできません。各インスタンスに順次接続し、起動および停止するスクリプトを作成できます。ただし、インスタンスの追加または削除を行う場合は、このスクリプトを手動でメンテナンスする必要があります。
関連項目: NOMOUNT 、MOUNT 、IMMEDIATE などの他の起動および停止のキーワードについては、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。 |
次のSRVCTL
構文をコマンドラインから入力し、必要なデータベース名およびインスタンス名を提供するか、または複数のインスタンス名を指定して、複数の特定のインスタンスを起動します。
srvctl start instance -ddb_name
-i "inst_name_list
" [-ostart_options
]
このコマンドは、優先インスタンスまたは使用可能インスタンスのリストが設定されている使用可能で実行中でないサービスも、すべて起動することに注意してください。
1つ以上のインスタンスを停止するには、コマンドラインから次のSRVCTL
構文を入力します。
srvctl stop instance -dname
-i "inst_name_list
" [-ostop_options
]
このコマンドにより、インスタンスが実行されていたノード上で終了したインスタンスと関連するサービスも停止します。たとえば、次のコマンドは、接続情報を提供し、IMMEDIATE
オプションを使用して2つのインスタンスorcl3
およびorcl4
を停止します。
srvctl stop instance -d orcl -i "orcl3,orcl4" -o immediate
クラスタ・データベース全体(すべてのインスタンスおよび使用可能なサービス)を起動または停止するには、次のSRVCTL
コマンドを入力します。
srvctl start database -d name [-o start_options
]
srvctl stop database -d name [-o stop_options
]
たとえば、次のSRVCTL
コマンドは、デフォルトの接続情報を使用して、Oracle RACデータベースの実行中でないすべてのインスタンスをマウントします。
srvctl start database -d orcl -o mount
ノードで実行中のインスタンスを確認するには、SQL*Plusプロンプトから次のコマンドを入力します。password
はパスワードです。
CONNECT SYS/as SYSDBA
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に示します。
ALTER SYSTEM KILL SESSION
文を使用して、特定のインスタンスのセッションを終了できます。セッションが終了すると、セッションのすべてのアクティブなトランザクションはロールバックされます。セッションで保持されているリソース(ロックやメモリー領域など)はただちに解放され、他のセッションで使用可能になります。
この文を使用すると、Oracle RAC環境で厳密なアプリケーション品質保証契約を維持できます。多くの場合、品質保証契約は、指定された期限内にトランザクションを実行することを目的としています。Oracle RAC環境では、このためには、指定された期限内にインスタンスでトランザクションを終了し、別のインスタンスでトランザクションを再試行することが必要な場合があります。
セッションを終了するには、次の手順に従います。
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つのシナリオを示します。
この例で、実行しているセッションがインスタンスINST_ID=1
のSYSDBA
であるとします。SYSDBA
は、まずSCOTT
ユーザーのセッションのGV$SESSION
ビューを問い合せて終了するセッションを特定し、次に、ALTER SYSTEM KILL SESSION
文を実行してインスタンスINST_ID=2
でセッションを終了します。一部のアクティビティを完了してからセッションを終了する必要があるため、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>
この例で、実行しているセッションがインスタンス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>
次の例には、未完了のアクティビティが完了するのを待機せずにただちにセッションを終了する、オプションの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>
関連項目: セッションの終了の詳細は、『Oracle Database管理者ガイド』を参照してください。 |
データベースを作成すると、指定したファイルの位置にSPFILEが作成されます。ファイルの位置として指定できるのは、ASMディスク・グループ、クラスタ・ファイル・システムまたは共有RAWデバイスのいずれかです。手動でデータベースを作成する場合は、初期化パラメータ・ファイル(PFILE)からSPFILEを作成することをお薦めします。
注意: Oracle RACで従来のPFILEが使用されるのは、SPFILEが存在しないか、STARTUP コマンドでPFILE を指定した場合のみです。管理を簡単にし、パラメータ設定の一貫性を維持し、データベースの停止および起動イベントが発生してもパラメータ設定が維持されるようにするために、SPFILEファイルを使用することをお薦めします。また、SPFILEをバックアップするようにRecovery Managerを構成することもできます。 |
クラスタ・データベース内のすべてのインスタンスは、起動時に同じSPFILEを使用します。SPFILEはバイナリ・ファイルであるため、エディタを使用して直接編集しないでください。かわりに、Oracle Enterprise ManagerまたはSQL文ALTER
SYSTEM
を使用して、SPFILEパラメータ設定を変更します。
FROM MEMORY
句(CREATE PFILE FROM MEMORY
やCREATE SPFILE FROM MEMORY
など)を含める場合、CREATE
文では、現行のシステム全体のパラメータ設定を使用して、PFILEまたはSPFILEが作成されます。Oracle RAC環境では、作成されたファイルには各インスタンスからのパラメータ設定が含まれています。FROM MEMORY
句では、パラメータ・ファイルを作成しようとしているインスタンスに他のすべてのインスタンスがパラメータ設定を送信する必要があるため、合計実行時間は、インスタンスの数、各インスタンスのパラメータ設定の数およびそれらの設定のデータ量によって異なります。
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=MEMORY;
次に、他のインスタンスで次の文を実行すると、SIDがprod1
であるインスタンスの新しい設定も2000
になります。
ALTER SYSTEM SET OPEN_CURSORS=2000 sid='*' SCOPE=MEMORY;
たとえば、サーバー・パラメータ・ファイルに次のエントリが含まれるとします。
prod1.OPEN_CURSORS=1000
*.OPEN_CURSORS=500
次の文を実行して、Oracle Databaseでサーバー・パラメータ・ファイルの最初のエントリが無視されるようにします。
ALTER SYSTEM RESET SCOPE=SPFILE;
次の文を実行して、prod1
のインスタンスのみのパラメータをデフォルト値にリセットします。
ALTER SYSTEM RESET OPEN_CURSORS SCOPE=SPFILE SID='prod1';
Oracle Databaseでは、プラットフォームに応じてパラメータ・ファイルが特定の順序で検索されます。
LinuxおよびUNIXプラットフォームでは、検索順序は次のとおりです。
$ORACLE_HOME/dbs/spfilesid.ora
$ORACLE_HOME/dbs/spfile.ora
$ORACLE_HOME/dbs/initsid.ora
Windowsプラットフォームでは、検索順序は次のとおりです。
%ORACLE_HOME%\database\spfilesid.ora
%ORACLE_HOME%\database\spfile.ora
%ORACLE_HOME%\database\initsid.ora
リカバリのために、サーバー・パラメータ・ファイルを定期的にバックアップすることをお薦めします。これには、Oracle Enterprise Manager(『Oracle Database 2 日でReal Application Clustersガイド』を参照)またはCREATE
PFILE
文を使用します。次に例を示します。
CREATE PFILE='?/dbs/initdbname.ora'
FROM SPFILE='/dev/vx/rdsk/oracle_dg/dbspfile'
Recovery Manager(RMAN)を使用して、サーバー・パラメータ・ファイルのバックアップを作成できます。SPFILEは、クライアント側の初期化パラメータ・ファイルを使用してインスタンスを起動することによって、リカバリすることもできます。その後、CREATE
SPFILE
文を使用して、サーバー・パラメータ・ファイルを再生成します。この操作に使用されるパラメータ・ファイルがシングル・インスタンス用である場合、Oracle RACインスタンスで一意であっても、パラメータ・ファイルにはインスタンス固有の値は含まれません。したがって、前述のようにパラメータ・ファイルに適切な設定が含まれていることを確認してください。
通常のバックアップ操作の実行中にSPFILE(および制御ファイル)が自動的にRecovery Managerによってバックアップされるようにするには、Oracle Enterprise ManagerまたはRecovery ManagerのCONTROLFILE AUTOBACKUP
文を使用して、Recovery Managerの自動バックアップ機能を使用可能にします。
関連項目: Oracle Enterprise Managerを使用してバックアップ・ジョブを実行するには、『Oracle Database 2日でReal Application Clustersガイド』を参照してください。CREATE SPFILE 文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
デフォルトでは、ほとんどのパラメータがデフォルト値に設定されます。この値は、すべてのインスタンスで同じです。ただし、表3-3に記載されているとおり、多くの初期化パラメータにはインスタンスごとに異なる値も設定できます。その他のパラメータは、次の項で示すとおり、同じまたは一意である必要があります。
表3-3に、Oracle RACデータベースで特に使用される初期化パラメータのサマリーを示します。これらの初期化パラメータとその他の初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
表3-3 Oracle Real Application Clustersに固有の初期化パラメータ
パラメータ | 説明 |
---|---|
ミラー・データのコピーの読取り元の優先ディスクにする一連のディスクを指定します。このパラメータに設定する値は、インスタンス固有です。すべてのインスタンスで同じにする必要はありません。 |
|
クラスタ・モードで起動するデータベースを使用可能にするパラメータです。このパラメータを |
|
Oracle RAC環境のインスタンスの数を設定するパラメータです。このパラメータを適切に設定すると、メモリー使用を改善できます。 注意: このパラメータの値は、Oracle RACデータベース環境で使用できるインスタンスの最大数を決定します。インスタンスを追加した場合、インスタンス数の増加に応じて、このパラメータの値を再設定する必要がある場合があります。 |
|
|
複数のインターコネクトが存在する場合、プライベート・ネットワークの代替クラスタ・インターコネクトを指定します。 注意:
|
インスタンス固有のパラメータ・ファイルで |
|
少なくとも、 |
|
この静的パラメータでは、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プロセスがあることになります。異なるインスタンスで、このパラメータを異なる値に設定できます。 |
|
インスタンスで使用されるREDOログ・ファイル・グループの数を指定します。詳細は、「Oracle Real Application ClustersでのREDOログ・ファイル記憶域」を参照してください。 |
|
クラスタ化されたデータベースでは、すべてのインスタンスで
|
|
サービスを使用する場合、 注意: |
|
|
|
SPFILEを使用する場合は、Oracle RACデータベースのすべてのインスタンスがSPFILEを使用し、このファイルが共有記憶域に存在する必要があります。 |
|
インスタンスで使用されるREDOスレッドの数を指定します。スレッド番号が使用可能で、使用されていないかぎり、使用可能なすべてのREDOスレッド番号を指定できます。指定する場合、このパラメータの値はすべてのインスタンスに対して一意である必要があります。 |
データベースの作成に重要な特定の初期化パラメータ、または特定のデータベース操作に影響する特定の初期化パラメータは、Oracle RACデータベースの各インスタンスで同じ値を設定する必要があります。これらのパラメータ値は、SPFILEに指定するか、または各インスタンスの個別のPFILEで指定します。次のリストに、すべてのインスタンスで同一である必要があるパラメータを示します。
ACTIVE_INSTANCE_COUNT
ARCHIVE_LAG_TARGET
COMPATIBLE
CLUSTER_DATABASE
CLUSTER_DATABASE_INSTANCE
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(ゼロ)に設定されている場合のみです。
ROLLBACK_SEGMENTS
パラメータを使用する場合は、SPFILEでSID
識別子を使用して、これらのパラメータに一意の値を設定することをお薦めします。ただし、各インスタンスのINSTANCE_NUMBER
に一意の値を設定する必要があり、デフォルト値は使用できません。
Oracle Databaseは、INSTANCE_NUMBER
パラメータを使用して、起動時にインスタンスを識別します。INSTANCE_NAME
パラメータは、特定のインスタンスにREDOログ・グループを割り当てるために使用されます。管理を簡単にするために、INSTANCE_NAME
パラメータとINSTANCE_NUMBER
パラメータに同じ番号を使用します。
データベース名と、インスタンスに割り当てられたINSTANCE_NAME
番号で構成される環境変数ORACLE_SID
を指定します。自動UNDO管理を使用可能にしてUNDO_TABLESPACE
を指定する場合、各インスタンスでこのパラメータに一意のUNDO表領域名を設定します。
ASM_PREFERRED_READ_FAILURE_GROUPS
初期化パラメータを使用すると、優先読取り障害グループ名のリストを指定できます。これらの障害グループのディスクは、優先読取りディスクになります。したがって、すべてのノードはそのローカル・ディスクから読み取ることができます。この結果、より優れた効率性とパフォーマンスおよびネットワーク・トラフィックの削減が可能となります。このパラメータの設定は、インスタンス固有です。すべてのインスタンスで同じにする必要はありません。
表3-4のパラメータには、すべてのインスタンスで同じ値を設定することをお薦めします。これらのパラメータにはインスタンスごとに異なる値を設定できますが、すべてのインスタンスでパラメータに同じ値を設定すると管理が簡単です。
表3-4 すべてのインスタンスで同じ値を設定する必要があるパラメータ
パラメータ | 説明 |
---|---|
Oracle RACデータベースのインスタンスごとに異なる値を設定すると、データベース処理によって追加の自動同期化が実行されるため、多くの場合、オーバーヘッドが増加します。 Oracle RACデータベースでStreamsを使用する場合、0(ゼロ)より大きい値を使用する必要があります。 |
|
このパラメータは、データベースで定義されているユーザー数のデータベース全体での制限を決定します。データベースのすべてのインスタンスで同じ値を使用すると、使用中のインスタンスにかかわらず現行の値を確認できるため、有効です。異なる値を設定すると、インスタンスの起動中にOracle Databaseによって追加の警告メッセージが生成されるか、またはデータベース・ユーザーの管理に関連するコマンドが一部のインスタンスで失敗する場合があります。 |
|
すべてのインスタンスで同じ値を使用しない場合、メディア・リカバリが複雑になります。アーカイブ・ログ・ファイルを作成したインスタンスにかかわらず、リカバリを行うインスタンスでは、必要なアーカイブ・ログ・ファイル名のフォーマットがそのインスタンス自体の Data Guardをサポートするデータベースでは、アーカイブREDOログ・ファイルの送受信を行うために、すべてのインスタンスで |
|
すべてのインスタンスでこのパラメータに同じファイルを指定しない場合、各インスタンスは、フェイルオーバー、ロード・バランシングおよび通常の操作中に、異なる動作または予測できない動作を行う場合があります。また、 サーバーによって値が設定されているインスタンスでSPFILEの値が異なる場合、デフォルトのSPFILEを使用していないインスタンスを再起動する必要があります。 |
|
診断トレース情報を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の内部処理のために更新を実行していることがあるためです。また、オンライン・データ・ファイルのファイル・ヘッダーは、アクセス中であるかのように見え、正しい停止が行われたかどうか判断ができません。データベースが静止状態にある間でも、オンライン・バックアップは実行できます。 |
関連項目: データベース静止機能の詳細は、『Oracle Database管理者ガイド』を、ALTER SYSTEM QUIESCE RESTRICTED 構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
UDP IPCが使用可能なLinuxおよびUNIXプラットフォームで実行するOracle RAC環境では、CLUSTER_INTERCONNECTS
初期化パラメータを使用して、プライベート・ネットワークの代替インターコネクトを指定できます。
オペレーティング・システム・レベルでデフォルトのインターコネクト設定を上書きするCLUSTER_INTERCONNECTS
パラメータを設定することはお薦めしません。かわりに、オペレーティング・システムのボンディング技術(NICボンディングとも呼ばれます)を使用するようにしてください。オペレーティング・システム・レベルでNICボンディングを設定する方法については、使用しているプラットフォーム固有のOracle Real Application Clustersのインストレーション・ガイドを参照してください。
この項の内容は次のとおりです。
CLUSTER_INTERCONNECTS
パラメータを設定することはお薦めしません。
注意: すべてのデータベースとOracle Clusterwareで同じインターコネクト・ネットワークを使用することをお薦めします。 |
通常、このCLUSTER_INTERCONNECTS
パラメータを設定する必要があるのは、次の場合です。
オペレーティング・システムの制限により、ネットワーク・インタフェース・カード(NIC)ボンディングによる複数のネットワーク・インタフェースを使用して、帯域幅を増加させることができない場合。
クラスタで複数のデータベースが実行されており、インターコネクト・トラフィックを分離する必要がある場合。
オペレーティング・システムによって高可用性が実現された単一のIPアドレスがあり、そのIPアドレスに安定したインタフェース名がない(再起動時に名前を変更できるなど)場合。
次の一般的な構成では、CLUSTER_INTERCONNECTS
パラメータは設定しないでください。
クラスタ・インターコネクトが1つのみ存在する場合。
デフォルトのクラスタ・インターコネクトが、Oracle RACデータベースの帯域幅の要件を満たしている場合(通常は満たしています)。
CLUSTER_INTERCONNECTS
初期化パラメータの指定時は、次のことに注意してください。
CLUSTER_INTERCONNECTS
初期化パラメータは、UDP IPCが使用可能なLinuxおよびUNIX環境でのみ有効です。
パラメータ・ファイルでCLUSTER_INTERCONNECTS
初期化パラメータを設定する場合は、Oracle RACデータベースの各インスタンスに対して異なる値を指定します。
異なるノードで、同じデータベースの異なるインスタンスに指定されたIPアドレスは、同一のインターコネクト・ネットワークに接続するネットワーク・アダプタに属する必要があります。
CLUSTER_INTERCONNECTS
初期化パラメータでは、IPアドレスが必要です。コロンで区切って、複数のIPアドレスを指定することができます。Oracle RACのネットワーク・トラフィックは、指定されたIPアドレス間で分散されます。
このパラメータに対して複数のIPアドレスを指定する場合、同一データベースのすべてのインスタンスに対して、同じ順序でIPアドレスを指定します。たとえば、ノード1、インスタンス1のパラメータで、alt0:
、fta0:
およびics0:
デバイスのIPアドレスをその順に指定する場合、ノード2、インスタンス2のパラメータでも同等のネットワーク・アダプタのIPアドレスをその順に指定する必要があります。このパラメータを使用して複数のインターコネクトを設定する方法については、「CLUSTER_INTERCONNECTSパラメータの使用例」を参照してください。
CLUSTER_INTERCONNECTS
パラメータに指定したインターコネクトへの書込み中にオペレーティング・システム・エラーが発生した場合は、他のインタフェースが使用可能な場合でも、Oracle Databaseによってエラーが戻されます。これは、Oracle Databaseとインターコネクトの間の通信プロトコルが、使用しているプラットフォームに大きく依存する場合があるためです。詳細は、ご使用のOracle Databaseのプラットフォーム固有のマニュアルを参照してください。
関連項目: CLUSTER_INTERCONNECTS 初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 |
この項では、CLUSTER_INTERCONNECTS
パラメータを設定する場合の2つの例について説明します。
単一のクラスタ・インターコネクトで帯域幅の要件を満たすことができない場合は、CLUSTER_INTERCONNECTS
の設定を考慮します。ここで説明するように、1つ以上のデータベースから高いインターコネクト帯域幅を要求されているデータ・ウェアハウス環境では、このパラメータの設定が必要な場合があります。
たとえば、高いインターコネクト帯域幅の要件を持つ2つのデータベースがある場合は、オペレーティング・システムが提供するデフォルトのインターコネクトを無効にし、各サーバー・パラメータ・ファイルで次の構文を使用して、各データベースに異なるインターコネクトを指定できます。ip
n
は、ドットで区切られた標準的な10進形式のIPアドレス(たとえば、144.25.16.214
)です。
Database One: CLUSTER_INTERCONNECTS = ip1 Database Two: CLUSTER_INTERCONNECTS = ip2
高い帯域幅を必要とするデータベースがある場合は、次の構文を使用して複数のインターコネクトを指定できます。
CLUSTER_INTERCONNECTS = ip1:ip2:...:ipn
前述の例のように、CLUSTER_INTERCONNECTS
に複数の値を設定した場合、指定したすべてのインターコネクトが使用されます。リストされたすべてのインターコネクトが操作可能であるかぎり、ロード・バランシングが提供されます。このパラメータで複数のインターコネクトを定義する場合、データベースのすべてのインスタンスで同じ値(インターコネクトをリストする順序を含む)を使用する必要があります。
たとえば、すべてのGCS、GESおよびIPQ IPCトラフィックに対して、IPアドレスが129.34.137.212
であるネットワーク・インタフェースを使用するには、CLUSTER_INTERCONNECTS
パラメータを次のように設定します。
CLUSTER_INTERCONNECTS=129.34.137.212
デバイスのIPアドレスを表示するには、ifconfig
またはnetstat
コマンドを使用します。このコマンドは、デバイス名とIPアドレスの関係を表示します。たとえば、デバイスのIPアドレスを特定するには、次のコマンドをroot
ユーザーで実行します。
# /usr/sbin/ifconfig -a fta0: flags=c63<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST,SIMPLEX> inet 129.34.137.212 netmask fffffc00 broadcast 129.34.139.255 ipmtu 1500 lo0: flags=100c89<UP,LOOPBACK,NOARP,MULTICAST,SIMPLEX,NOCHECKSUM> inet 127.0.0.1 netmask ff000000 ipmtu 4096 ics0: flags=1100063<UP,BROADCAST,NOTRAILERS,RUNNING,NOCHECKSUM,CLUIF> inet 10.0.0.1 netmask ffffff00 broadcast 10.0.0.255 ipmtu 7000 sl0: flags=10<POINTOPOINT> tun0: flags=80<NOARP>
前述の例では、インタフェースfta0:
のIPアドレスは129.34.137.212
で、インタフェースics0:
のIPアドレスは10.0.0.1
です。
デフォルトでは、Oracle ClusterwareによってOracle RAC環境のデータベースの再起動が制御されます。場合によっては、Oracle ClusterwareのOracle RACデータベースに対する制御レベルを最小限に抑える必要があることがあります。たとえば、データベースのアップグレードまたは日常のメンテナンスの実行中にこの操作を行う必要があります。
注意: サード・パーティのクラスタウェアを使用する場合は、Oracle DatabaseでOracle RACインスタンスを管理できるようにすることをお薦めします。インスタンスを手動に設定し、そのインスタンスをサード・パーティのクラスタウェアで起動する場合、サード・パーティのクラスタウェアを使用してデータベース・インスタンスの監視および再起動を行わないでください。これらは、Oracle Clusterwareで実行される必要があります。 |
システムの再起動時にOracle ClusterwareによるOracle RACデータベースの再起動を防止する場合、または障害が発生したインスタンスの2回目以降の再起動を回避する場合、制御の程度を定義するポリシーを構成します。ポリシーには、自動(デフォルト)と手動の2つがあります。データベース・インスタンスの保護レベルを最小限に抑える手動ポリシーは、自動ポリシーより優先されます。
このポリシーを使用すると、システムの再起動時にOracle ClusterwareがOracle RACデータベースを自動的に再起動するように構成するか、またはOracle RACデータベースを手動で再起動するように構成できます。また、この手順を使用して、障害が発生したデータベース・インスタンスをOracle Clusterwareが自動的に2回以上再起動しないようにシステムを構成できます。
SRVCTL
コマンドを使用して、次の例に示すように、Oracle Clusterwareのポリシーを表示および変更できます。
たとえば、現行のポリシーを表示するには、次のコマンド構文を使用します。ここで、database_name
は、ポリシーを変更するデータベース名です。
srvctl config database -d database_name -a
現行のポリシーを別のポリシーに変更するには、次のSRVCTL
コマンド構文を使用します。ここで、policy_name
は、例1でdatabase_name
に指定されたデータベースの新しいポリシー名です。
srvctl modify database d management_policy -y policy_name
このコマンド構文は、該当する各リソースのリソース・プロファイルの値を変更し、現在のポリシーのOCRキーを新しい値に設定します。
SRVCTL
コマンドを使用して新しいデータベースを追加する場合、次の例のように-y
オプションを使用して管理ポリシーを指定できます。ここで、database_name
はデータベース名、management_policy
はポリシー名です。
srvctl add database -d database_name -y management_policy
このコマンド構文によって、新しいデータベースがOracle Clusterwareに制御されるようになります。新しい管理ポリシー・オプションを指定しないと、Oracle Databaseによってデフォルト値automatic
が使用されます。ポリシー変更を行うと、OCRによって、影響を受けたデータベースの新しい値が記録されます。
Oracle Enterprise Manager Database ControlまたはOracle Enterprise Manager Grid Controlのいずれかを使用して、集中的にOracle RACデータベースをインストール、構成および監視できます。
この項では、『Oracle Database 2日でReal Application Clustersガイド』や「Oracle Real Application Clustersデータベースの監視およびチューニングの概要」で取り上げられていない高度な管理タスクについて説明します。
関連項目: Oracle Enterprise Managerを使用してOracle RACデータベースの日常的な管理タスクを実行する方法を説明するタスク指向型ガイドについては、『Oracle Database 2日でReal Application Clustersガイド』を参照してください。 |
この項の内容は次のとおりです。
Oracle Enterprise ManagerでOracle RACデータベースおよびインスタンスのターゲットを検出すると、コンソールから監視および管理を実行できます。
Database Controlでは、データベース作成中にDBCAが必要な構成を実行するため、検出は必要ありません。
Grid Controlでは、Oracle Enterprise Managerコンソール・インタフェースを使用してOracle RACデータベースおよびインスタンス・ターゲットを検出できます。
Oracle RACデータベースがすでに存在するクラスタにGrid Controlエージェントがインストールされる場合、Oracle RACデータベース・ターゲットはインストール時に検出されます。エージェントのインストール後にデータベースが作成される場合またはエージェントのインストール時にデータベースが自動的に検出されない場合は、コンソール・インタフェースを使用してターゲットを検出できます。
ノードおよびインスタンスを検出するには、次のようにOracle Enterprise Manager Grid Controlを使用します。
Oracle Enterprise Managerにログインし、「ターゲット」タブをクリックします。
「データベース」タブをクリックすると、使用可能なターゲットがすべて表示されます。「タイプ」列に、「クラスタ・データベース」というエントリを使用するOracle RACデータベースが表示されます。
ターゲット名を選択して「追加」をクリックし、このデータベース・ターゲットを追加します。「データベースターゲットの追加: ホストの指定」ページが表示されます。このページで、データベース、リスナーおよび自動ストレージ管理(ASM)を監視ターゲットとして追加できます。
懐中電灯のアイコンをクリックすると、使用可能なホスト名が表示されます。ホストを選択して、「続行」をクリックします。「データベースの追加: ソースの指定」ページが表示されます。
Oracle Enterprise Managerを使用してシングル・インスタンスのデータベースおよびリスナーのみを検出するか、またはすべてのクラスタ・データベース、シングル・インスタンスのデータベースおよびクラスタのリスナーを検出するかを指定し、「続行」をクリックします。
Oracle Enterprise Managerにより検索が実行され、クラスタ・データベースおよびそれと関連付けられたインスタンスが表示されます。「クラスタでターゲットが検出されました」というメッセージが示されたページが表示されます。この手順で、再構成したクラスタ・データベースおよびそのすべてのインスタンスが検出されない場合、このページを使用してクラスタ・データベースおよびシングル・インスタンス・データベースを手動で構成できます。
クラスタ・データベースの「ホーム」ページには、Oracle RACデータベースのすべてのインスタンスが表示され、サーバー管理のために自動ワークロード・リポジトリが収集するいくつかのOracle RAC固有の統計の集計が提供されます。
その詳細を表示するために、インスタンス固有のページに移動する必要はありません。ただし、クラスタ・データベースの「ホーム」ページでは、稼働しているはずのインスタンスが停止したり、インスタンスで多数のアラートが発生している場合は、各アラートについてインスタンス固有のページにドリルダウンできます。
この項で後述する管理タスクを実行するには、ターゲットOracle RACデータベースにログインし、クラスタ・データベースの「ホーム」ページに移動し、「管理」タブをクリックします。
Oracle Enterprise Managerジョブは、データベース・レベルでもインスタンス・レベルでも管理できます。たとえば、クラスタ・データベース・レベルでジョブを作成し、そのジョブをターゲットOracle RACデータベースのアクティブな任意のインスタンスで実行できます。または、インスタンス・レベルでジョブを作成し、それを作成した特定のインスタンスでのみ実行することもできます。障害が発生した場合、再起ジョブは障害が発生しなかったインスタンスで実行できます。
ジョブは、インスタンス・レベル、クラスタ・レベルまたはクラスタ・データベース・レベルで作成できるため、クラスタ・データベース内の使用可能ないずれのホストでもジョブを実行できます。これはスケジュールされるジョブにも適用されます。Oracle Enterprise Managerでは、ジョブ・アクティビティがActive
、History
、Library
などのカテゴリに分類されて表示されます。
オペレーティング・システムのスクリプトやSQLスクリプトの送信およびスケジュールされたジョブの調査には、「ジョブ」タブを使用します。たとえば、特定のOracle RACデータベースのためのバックアップ・ジョブの作成は、次のように行います。
「ターゲット」をクリックし、ジョブを作成するデータベースをクリックします。
ターゲット・データベースにログインします。
表示されたデータベースの「ホーム」ページで、「メンテナンス」をクリックします。
Enterprise Managerのジョブ・ウィザードのパネルに入力し、ジョブを作成します。
Oracle Enterprise Managerを使用して、Oracle RAC環境のアラートを構成できます。また、グローバル・キャッシュ変換、読取り一貫性要求など、Oracle RACデータベースの特殊なテストも構成できます。
Oracle Enterprise Managerでは、Oracle RAC環境のデータベース・レベルとインスタンス・レベルのアラートは区別されます。アーカイブ・ログ・アラートなど、インスタンス・レベル・アラートのアラートしきい値は、インスタンスのターゲット・レベルで設定できます。これにより、パフォーマンスがしきい値を超えた場合、特定のインスタンスに関するアラートを受信できます。また、表領域に関するアラートの設定など、データベース・レベルでアラートを構成することもでき、各インスタンスで重複するアラートの受信を回避できます。
関連項目: Oracle RACでのアラートの構成の例は、OTN(Oracle Technology Network)を参照してください。パッケージを使用してしきい値を構成する方法は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 |