Oracle Database 管理者ガイド 11gリリース1(11.1) E05760-03 |
|
この章の内容は次のとおりです。
データベースの起動時には、そのデータベースのインスタンスを作成し、データベースの状態を確認します。インスタンスは通常、データベースをマウントおよびオープンすることで起動します。これによって、有効なユーザーはデータベースに接続して通常のデータ・アクセス操作を実行できます。ここでは、他の起動方法についても説明します。
この項の内容は、次のとおりです。
データベース・インスタンスは、SQL*Plus、Recovery ManagerまたはEnterprise Managerを使用して起動できます。
SQL*Plusセッションを起動し、管理者権限でOracle Databaseに接続すると、STARTUP
コマンドを発行できます。このマニュアルでは、SQL*Plusを使用するこの方法について詳細に説明します。
Recovery Manager(RMAN)を使用して、STARTUP
およびSHUTDOWN
コマンドを実行する方法もあります。この方法を選択するのは、Recovery Manager環境でSQL*Plusを起動しない場合です。
Oracle Enterprise Manager(EM)は、起動や停止も含めたデータベースの管理に使用できます。EMは、GUIコンソール、エージェント、共有サービスおよびOracleのツール製品を組み合せて、Oracle製品の管理のために統合された包括的なシステム管理プラットフォームを提供します。EMのOracleデータベース管理専用の部分であるEM Database Controlでは、このマニュアルで説明されている機能を、コマンドライン操作ではなくGUIを使用して実行できます。
ここからは、SQL*Plusを使用してデータベース・インスタンスを起動する方法について説明します。
データベースは、インスタンスを起動するために、サーバー・パラメータ・ファイル(SPFILE
)またはテキスト形式の初期化パラメータ・ファイルからインスタンス構成パラメータ(初期化パラメータ)を読み込む必要があります。
SQL*PlusのSTARTUP
コマンドを発行すると、データベースは、プラットフォーム固有のデフォルトの場所にあるSPFILE
から初期化パラメータを読み込もうとします。SPFILE
が見つからない場合は、テキスト形式の初期化パラメータ・ファイルを検索します。
Oracle Databaseは、プラットフォーム固有のデフォルトの位置にあるファイル名を次の順序で検査し、初期化パラメータ・ファイルを特定します。
最初の2つのファイル名はSPFILE
を表し、3番目のファイル名はテキスト形式の初期化パラメータ・ファイルを表します。
ユーザー(またはDatabase Configuration Assistant)が作成したサーバー・パラメータ・ファイルをテキスト形式の初期化パラメータ・ファイルで上書きする場合は、STARTUP
コマンドのPFILE
句を指定すると、その初期化パラメータ・ファイルを識別できます。
STARTUP PFILE = /u01/oracle/dbs/init.ora
デフォルト以外のサーバー・パラメータ・ファイル(SPFILE
)とは、デフォルト以外の場所にあるSPFILE
のことです。通常は、デフォルト以外のSPFILE
を使用してインスタンスを起動する必要はありません。ただし、必要な場合は、このPFILE
句を使用して、次のようにデフォルト以外のサーバー・パラメータ・ファイルでインスタンスを起動できます。
SPFILE
パラメータのみを記述した1行のテキスト形式の初期化パラメータ・ファイルを作成します。パラメータの値には、デフォルト以外のサーバー・パラメータ・ファイルの場所を指定します。 たとえば、次のパラメータのみを記述したテキスト形式の初期化パラメータ・ファイル/u01/oracle/dbs/spf_init.ora
を作成します。
SPFILE = /u01/oracle/dbs/test_spfile.ora
STARTUP PFILE = /u01/oracle/dbs/spf_init.ora
このSPFILE
は、データベース・サーバーが稼働しているマシン上に存在している必要があります。したがって、前述の方法は、SPFILE
を使用してデータベースを起動する手段をクライアント・マシンにも提供します。また、クライアント・マシンで、クライアント側の初期化パラメータ・ファイルをメンテナンスする必要はありません。クライアント・マシンがSPFILE
パラメータを含む初期化パラメータ・ファイルを読み込むと、サーバーにその値が渡され、指定されたSPFILE
が読み込まれます。
UNIXおよびLinuxプラットフォームでは、SPFILEがデフォルトの場所にない場合、SPFILEへのシンボリック・リンクを作成して、そのシンボリック・リンクをデフォルトの場所に配置することもできます。
PFILEおよびSPFILEのデフォルトの名前と場所の詳細は、表2-3を参照してください。
通常、自動ストレージ管理(ASM)を使用しているデータベースには、デフォルト以外のSPFILE
があります。Database Configuration Assistant(DBCA)を使用してASMを使用するようにデータベースを構成すると、DBCAによってASMディスク・グループ内にデータベース・インスタンスのSPFILE
が作成され、ローカル・ファイル・システム内のデフォルトの場所に、そのSPFILE
を指し示すテキスト形式の初期化パラメータが作成されます。
SQL*Plusを使用してデータベース・インスタンスを起動する前に、次の準備手順を実行する必要があります。
SQLPLUS /NOLOG
SYSDBA
としてOracle Databaseに接続します。
CONNECT username AS SYSDBA
データベースに接続され、データベース・インスタンスを起動する準備が完了します。
Oracle Databaseインスタンスを起動するには、SQL*PlusのSTARTUP
コマンドを使用します。インスタンスは、次のような様々なモードで起動できます。
次の例では、DBAがインスタンスを起動できるいくつかの状態を具体的に説明します。STARTUP
コマンドの句を組み合せるときは、いくつかの制限が適用されます。
通常のデータベース操作とは、インスタンスを起動し、データベースをマウントおよびオープンすることを意味します。このモードでは、有効なユーザーがデータベースに接続して、データ・アクセス操作を実行できます。
次のコマンドは、インスタンスを起動し、デフォルトの場所から初期化パラメータを読み込んで、データベースをマウントおよびオープンします(必要に応じて、PFILE
句を指定できます)。
STARTUP
インスタンスは、データベースをマウントしなくても起動できます。通常、この方法で起動するのはデータベースの作成時のみです。STARTUP
コマンドで、NOMOUNT
句を指定します。
STARTUP NOMOUNT
インスタンスを起動し、データベースをオープンしないでマウントして、特定のメンテナンス操作を実行できます。たとえば、次のようなタスクの実行時は、データベースのマウントは必要ですが、オープンしてはなりません。
次のコマンドは、インスタンスを起動してデータベースをマウントしますが、データベースはクローズしたままです。
STARTUP MOUNT
インスタンスの使用を管理担当者にのみ許可し、一般データベース・ユーザーの使用を禁止するには、制限モードでインスタンスを起動して、オプションでデータベースをマウントおよびオープンします。次のいずれかのタスクを実行するときは、このインスタンス起動モードを使用してください。
通常、CREATE SESSION
システム権限を持つすべてのユーザーは、オープンしているデータベースに接続できます。制限モードでデータベースをオープンすると、CREATE SESSION
システム権限とRESTRICTED SESSION
システム権限の両方を持つユーザーのみがデータベースにアクセスできます。したがって、DBAのみがRESTRICTED SESSION
システム権限を持つようにしてください。また、インスタンスが制限モードのとき、DBAはOracle Netリスナーを介してリモートでインスタンスにアクセスすることはできません。インスタンスが実行されているマシンからローカルでアクセスすることのみ可能です。
次のコマンドは、制限モードでインスタンスを起動します(データベースをマウントしてオープンします)。
STARTUP RESTRICT
RESTRICT
句は、MOUNT
、NOMOUNT
およびOPEN
の各句と組み合せて使用できます。
RESTRICTED SESSION
機能を無効にするには、ALTER SYSTEM
文を使用します。
ALTER SYSTEM DISABLE RESTRICTED SESSION;
データベースを非制限モードでオープンし、後でアクセス制限が必要であると判明した場合は、ALTER SYSTEM
文を使用して制限できます。「オープンしているデータベースへのアクセスを制限する方法」を参照してください。
通常と異なる状況では、データベース・インスタンスを起動しようとしたときに、問題が発生することがあります。次の問題が発生している場合以外は、データベースを強制的に起動しないでください。
SHUTDOWN NORMAL
、SHUTDOWN IMMEDIATE
またはSHUTDOWN TRANSACTIONAL
コマンドで停止できない場合
このような問題が発生した場合、STARTUP
コマンドでFORCE
句を指定して新しいインスタンスを起動(必要に応じて、データベースをマウントおよびオープン)すると、通常は問題を解決できます。
STARTUP FORCE
インスタンスの実行中にSTARTUP FORCE
を使用すると、ABORT
モードで停止した後に再起動します。この場合、Oracle Database 10g リリース2からは、メッセージ「Shutting down instance (abort)
」に続いて「Starting ORACLE instance (normal)
」がアラート・ログに表示されます(以前のバージョンのデータベースでは、アラート・ログに表示されるメッセージは、「Starting ORACLE instance (force)
」のみでした)。
メディア・リカバリが必要な場合は、STARTUP
コマンドでRECOVER
句を指定すると、インスタンスを起動し、データベースをインスタンスにマウントして、リカバリ処理を自動的に開始できます。
STARTUP OPEN RECOVER
必要ない場合にリカバリを実行しようとすると、Oracle Databaseによってエラー・メッセージが表示されます。
多くのサイトでは、システムの起動直後に1つ以上のOracle Databaseインスタンスとデータベースを自動的に起動する手順を使用しています。そのための手順は、オペレーティング・システムによって異なります。自動起動の詳細は、オペレーティング・システム固有のOracleマニュアルを参照してください。
ローカルのOracle Databaseサーバーが分散データベースの一部を構成している場合は、リモート・インスタンスとデータベースを起動できます。リモート・インスタンスの起動と停止の手順は、通信プロトコルとオペレーティング・システムによって大きく異なります。
データベースの可用性を変更できます。可用性の変更は、メンテナンス上の理由やデータベースを読取り専用にするために行う場合があります。次の各項では、データベースの可用性を変更する方法について説明します。
特定の管理操作を実行する場合は、データベースを起動してインスタンスにマウントし、クローズしたままにする必要があります。そのためには、インスタンスを起動してデータベースをマウントします。
あらかじめ起動したインスタンスにデータベースをマウントするには、次のように、SQL文ALTER DATABASE
でMOUNT
句を指定します。
ALTER DATABASE MOUNT;
関連項目:
データベースをマウントし、クローズしておくことが必要な操作(およびインスタンスの起動とデータベースのマウントを一度に実行する手順)の詳細は、「インスタンスを起動し、データベースをマウントする方法」を参照してください。 |
データベースをオープンすることによって、マウントされ、クローズしているデータベースを一般的な用途のために使用可能にできます。マウントされたデータベースをオープンするには、ALTER DATABASE
文でOPEN
句を使用します。
ALTER DATABASE OPEN;
この文の実行後は、CREATE SESSION
システム権限を持つ有効なOracle Databaseユーザーであれば、誰でもデータベースに接続できます。
データベースを読取り専用モードでオープンすると、オープンしたデータベースを問い合せることができますが、その間にデータの内容がオンラインで変更されることはありません。これにより、データファイルとREDOログ・ファイルにデータが書き込まれないことが保証されますが、データベース・リカバリや、REDOを生成せずにデータベースの状態を変更する操作が制限されることはありません。たとえば、データファイルをオフラインとオンラインの間で切り替えてもデータの内容には影響しないため、このような切替えは可能です。
ディスク・ソートの実行時など、読取り専用モードでデータベースを問い合せるときに一時表領域を使用する場合、問合せの発行者には、デフォルト一時表領域としてローカル管理表領域が割り当てられている必要があります。割り当てられていない場合は、問合せが失敗します。この操作については、「ローカル管理の一時表領域の作成」を参照してください。
次の文では、データベースが読取り専用モードでオープンします。
ALTER DATABASE OPEN READ ONLY;
また、次のように読取り/書込みモードでデータベースをオープンすることもできます。
ALTER DATABASE OPEN READ WRITE;
ただし、読取り/書込みはデフォルトのモードです。
インスタンスを制限モードにするには、SQL文のALTER SYSTEM
でENABLE RESTRICTED SESSION
句を指定します。制限モードの場合、インスタンスにアクセスできるのは、管理権限を持つユーザーのみです。インスタンスを制限モードにした場合は、管理タスクを実行する前に現行のユーザー・セッションをすべて停止する必要があります。
インスタンスの制限モードを解除するには、ALTER SYSTEM
でDISABLE RESTRICTED SESSION
句を指定します。
関連項目:
|
データベースを停止するには、SQL*PlusのSHUTDOWN
コマンドを使用します。停止が完了するまで、データベース停止を開始したセッションに制御が戻りません。停止処理の進行中に接続しようとするユーザーは、次のようなメッセージを受け取ります。
ORA-01090: シャットダウン処理中 - 接続はできません
データベースとインスタンスを停止するには、最初にSYSOPER
またはSYSDBA
として接続する必要があります。データベースにはいくつかの停止モードがあります。次の項では、各モードについて説明します。
一部の停止モードでは、データベースを実際に停止する前に、特定のイベント(トランザクションの完了またはユーザーによる切断など)の発生を待機します。これらのイベントに対するタイムアウト間隔は1時間です。このタイムアウト動作については、この後の項で説明します。
データベースを通常の状況で停止するには、次のようにSHUTDOWN
コマンドでNORMAL
句を指定します。
SHUTDOWN NORMAL
NORMAL
句はオプションです。句が指定されていない場合、これがデフォルトの停止方法になるためです。
通常のデータベース停止では、次のように処理が進みます。
次にデータベースを起動するときに、インスタンス・リカバリ手順は必要ありません。
データベースの即時停止は、次のような状況のときにのみ使用します。
データベースを即時に停止するには、SHUTDOWN
コマンドでIMMEDIATE
句を指定します。
SHUTDOWN IMMEDIATE
このデータベース停止では、次のように処理が進みます。
次にデータベースを起動するときに、インスタンス・リカバリ手順は必要ありません。
アクティブなトランザクションを完了してから、予定どおりにインスタンスを停止する場合は、SHUTDOWN
コマンドでTRANSACTIONAL
句を指定します。
SHUTDOWN TRANSACTIONAL
このデータベース停止では、次のように処理が進みます。
SHUTDOWN IMMEDIATE
文を発行した場合と同じように停止します。
次にデータベースを起動するときに、インスタンス・リカバリ手順は必要ありません。
TRANSACTIONALオプションによる停止では、クライアントの作業内容が失われずに済み、すべてのユーザーがログオフする必要がなくなります。
データベース・インスタンスを強制終了することによって、データベースをただちに停止できます。このタイプの停止は、次のような状況でのみ実行してください。
データベースまたはデータベース・アプリケーションの一部が異常に動作している場合で、他のタイプの停止がどれも機能しないとき
トランザクションとユーザーの接続を強制終了してデータベースを停止する場合は、次のようにSHUTDOWN
コマンドでABORT
句を指定します。
SHUTDOWN ABORT
このデータベース停止では、次のように処理が進みます。
次にデータベースを起動するときには、インスタンス・リカバリの手順が必要になります。
ユーザーによる切断またはトランザクションの完了を待機する停止モードには、待機時間に制限があります。停止をブロックしているすべてのイベントが1時間以内に発生しない場合、停止コマンドは「ORA-01013: ユーザーによって現行の操作の取消しがリクエストされました
」というメッセージを表示して強制終了されます。たとえば、[CTRL]
キーを押しながら[C]
キーを押して停止プロセスを中断した場合にも、このメッセージが表示されます。インスタンスの停止を中断しようとしないことをお薦めします。停止プロセスが完了してから、インスタンスを再起動してください。
ORA-01013
が発生した後は、インスタンスが予測できない状態になると考える必要があります。このため、SHUTDOWN
コマンドを再発行して、停止プロセスを継続する必要があります。後続のSHUTDOWN
コマンドが引き続き失敗する場合は、SHUTDOWN
ABORT
コマンドを発行してインスタンスを停止する必要があります。その後でインスタンスを再起動できます。
データベースを、DBAによるトランザクション、問合せ、フェッチまたはPL/SQL文の実行のみ許可された状態にすることが必要な場合があります。このような状態は、システム上でDBA以外によるトランザクション、問合せ、フェッチまたはPL/SQL文が実行されていないという意味で、静止状態と呼びます。
データベースを静止状態にすることで、管理者は、それ以外の状態では安全に実行できない処理を実行できます。次の処理を実行できます。
データベースの静止機能がない場合は、データベースを停止し、制限モードで再度オープンする必要があります。これは、特に24時間、365日の可用性が必要なシステムにとっては重大な制限です。データベースの静止によって、ユーザーに対する遮断とデータベースの停止と再起動に伴う停止時間を最小限にできるため、制限が大幅に緩和されます。
データベースが静止中の場合、DBA以外のセッションがアクティブにならないようにするために、データベース・リソース・マネージャの機能が使用されています。したがって、この文が有効な間に現行のリソース・プランを変更しようとすると、その処理はシステムが静止解除されるまでキューに待機します。データベース・リソース・マネージャの詳細は、第25章「Oracle Database Resource Managerを使用したリソース割当ての管理」を参照してください。
データベースを静止状態にするには、次の文を発行します。
ALTER SYSTEM QUIESCE RESTRICTED;
DBA以外のアクティブなセッションは、非アクティブになるまで処理が継続されます。アクティブなセッションとは、トランザクション、問合せ、フェッチまたはPL/SQL文を現在実行しているセッション、または現在なんらかの共有リソース(エンキューなど)を保持しているセッションです。非アクティブなセッションがアクティブになることはできません。たとえば、ユーザーが非アクティブなセッションを強制的にアクティブにしようとしてSQL問合せを発行すると、その問合せは停止したようになります。後でデータベースが静止解除されると、セッションが再開され、ブロックされていた処理が実行されます。
DBA以外のセッションがすべて非アクティブになると、ALTER SYSTEM QUIESCE RESTRICTED
文が完了し、データベースは静止状態となります。Oracle Real Application Clusters環境でこの文を発行すると、文を発行したインスタンスだけでなく、すべてのインスタンスが影響を受けます。
ALTER SYSTEM QUIESCE RESTRICTED
文は、アクティブなセッションが非アクティブになるまで、長時間待機する場合があります。V$BLOCKING_QUIESCE
ビューを問い合せると、静止操作をブロックしているセッションを判別できます。このビューでは、1つの列SID
(セッションID)のみが返されます。これをV$SESSION
と結合すると、次の例のように、セッションに関する詳細を取得できます。
select bl.sid, user, osuser, type, program from v$blocking_quiesce bl, v$session se where bl.sid = se.sid;
これらのビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
データベース静止の要求を中断した場合、またはアクティブなセッションがすべて静止する前にセッションが異常終了した場合は、Oracle Databaseによって、この文による部分的な影響がすべて自動的に取り消されます。
複数のOracle Call Interface(OCI)の連続したフェッチによって問合せが実行されている場合、ALTER SYSTEM QUIESCE RESTRICTED
文はすべてのフェッチが完了するまで待機しません。現行のフェッチの完了のみを待機します。
専用サーバー接続の場合も、共有サーバー接続の場合も、この文の発行後、DBA以外のユーザーがログインしようとすると、その処理はデータベース・リソース・マネージャによってすべてキューに送られ、進行しません。ユーザーにはログインが停止したように見えます。データベースが静止解除されると、ログインは再開されます。
文を発行したセッションが終了しても、データベースは静止状態のままです。DBAは、データベースを静止解除される文を明示的に発行するために、データベースにログインする必要があります。
次の文は、データベースを通常の操作にリストアさせます。
ALTER SYSTEM UNQUIESCE;
DBA以外のアクティビティの処理がすべて許可されます。Oracle Real Application Clusters環境では、データベースを静止した場合と同じセッションまたは同じインスタンスでこの文を発行する必要はありません。ALTER SYSTEM UNQUIESCE
文を発行したセッションが異常終了した場合、Oracle Databaseサーバーは静止解除を確実に完了します。
V$INSTANCE
ビューのACTIVE_STATE
列を問い合せると、インスタンスの現在の状態を表示できます。列の値は、次のいずれかになります。
NORMAL
: 通常の静止していない状態。
QUIESCING
: 静止途中の状態。DBA以外の一部のセッションがアクティブな状態です。
QUIESCED
: 静止状態。DBA以外のセッションは非アクティブで、許可されていない状態です。
ALTER SYSTEM SUSPEND
文は、データファイル(ファイル・ヘッダーとファイル・データ)および制御ファイルへの入出力(I/O)をすべて停止します。一時停止状態によって、I/Oに干渉されずにデータベースのバックアップを作成できます。データベースを一時停止すると、実行中のすべてのI/O操作の完了が許可され、新しいデータベース・アクセスはキューに待機した状態になります。
SUSPENDコマンドは、インスタンスに固有ではありません。Oracle Real Application Clusters環境では、あるシステムでSUSPENDコマンドを発行すると、内部ロッキング・メカニズムを通じてインスタンス間で停止要求が伝播し、特定のクラスタのアクティブ・インスタンスがすべて停止します。ただし、あるインスタンスの一時停止中に新しいインスタンスを起動すると、新しいインスタンスは一時停止されません。
通常のデータベース操作を再開するには、ALTER SYSTEM RESUME
文を使用します。SUSPEND
コマンドとRESUME
コマンドは、異なるインスタンスから発行できます。たとえば、インスタンス1、2および3の実行中に、インスタンス1からALTER SYSTEM SUSPEND
文を発行した場合は、インスタンス1、2または3から同様にRESUME
文を発行できます。
一時停止/再開機能は、ディスクやファイルをミラー化してそのミラーを分割できるシステムで役立ち、バックアップとリストアの代替ソリューションを提供します。書込み中に既存のデータベースからミラー化されたディスクを分割できないシステムを使用している場合は、この一時停止/再開機能を使用すると容易に分割できます。
一時停止したデータベースのコピーにはコミット前の更新が含まれるため、一時停止/再開機能は通常の停止操作の簡易版ではありません。
次の文は、ALTER SYSTEM SUSPEND/RESUME
の使用方法を示しています。データベースの状態を確認するために、V$INSTANCE
ビューを問い合せています。
SQL> ALTER SYSTEM SUSPEND; System altered SQL> SELECT DATABASE_STATUS FROM V$INSTANCE; DATABASE_STATUS --------- SUSPENDED SQL> ALTER SYSTEM RESUME; System altered SQL> SELECT DATABASE_STATUS FROM V$INSTANCE; DATABASE_STATUS --------- ACTIVE