トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

Oracle/Startup

INDEX

Windows中心だけど、起動と停止はUNIXでも同じ

Oracleデータベースの起動と停止

Windows は、サービス上で Oracle が稼動しており、 Windows 本体のシャットダウン中に規定時間(デフォルト20秒?)以内で終了処理が完了しないとサービスは強制終了される。そのため、安静時以外(大量のロールバック作業中など)の場合には、必ず手動で Oracle をシャットダウンを行い、Windows を終了させること。

また、サービスとしては動いている(状態が「開始」になっている)が、実際にはインスタンスが立ち上がっていない場合もある(実際に過去に何度かあった)。

Windowsのサービス

WindowsにOracleのDBサーバをインストールすると以下のサービスが登録される。例は、OracleHome を OraHome92、SID を orcl で設定した場合。

  • OracleMTSRecoveryService
    • MTS(Microsoft Transaction Server : 高いエディションの Windows にしか付いてない機能)を使わない場合は起動する必要ない。
  • OracleOraHome92Agent
    • Inteligent Agentを使わない場合(Oracle Enterpirse Manager Consoleをスタンドアロンで使う場合)は起動する必要ない。
  • OracleOraHome92HTTPServer
    • Oracle の HTTPServer を使わない場合は起動する必要ない。
  • OracleOraHome92TNSListener
    • TNSリスナー。他のマシンからアクセス(利用)する場合は起動させる。
  • OracleServiceORCL
    • 書かれているSIDのインスタンス。DBの本体なので動かす場合は起動させる。

データベースの起動

startup [nomount|mount|open]
alter database [mount|open];

startup open とした場合、nomount, mount を経てデータベースがオープンされた状態まで進みます。startup コマンドを実行して nomount, mount 状態にした場合、さらに先の状態に進めるためには alter database コマンドを使用します。

通常は、startup open でインスタンスを起動すれば問題ないでしょう。こんな感じ…

SQL> startup open
ORACLEインスタンスが起動しました。
Total System Global Area  109868016 bytes
Fixed Size                   283632 bytes
Variable Size              75497472 bytes
Database Buffers           33554432 bytes
Redo Buffers                 532480 bytes
データベースがマウントされました。
データベースがオープンされました。

※ 特殊な第3段階として、STARTUP RESTRICTコマンドがあります。データベースをメンテナンスする場合など、RESTRICT SESSION権限を持っているユーザのみが接続できるモードにてデータベースを起動します。このモードを解除するには、ALTER SYSTEM DISABLE RESTRICTED SESSION; と入力します。

 インスタンス起動(nomount)

インスタンス起動の状態では、SGAの割り当て・バックグラウンドプロセスの開始・制御ファイルの確認が行われます。

 データベースマウント(mount)

データベースマウントの状態では制御ファイルがオープンされます。データベースをRECOVERコマンドにて修復したり、アーカイブ・ログ・モードに切り替える場合は、このモードにて行います。

 データベースオープン(open)

データベースがオープンされると、データファイル・REDOログファイルがオープンされ、実際にデータベースを使用することができます。

データベースの終了

shutdown [normal|transactional|immediate|abort]

こんな感じ…

SQL> shutdown
データベースがクローズされました。
データベースがアンマウントされました。
ORACLEインスタンスがシャットダウンされました。

終了のときは、起動と違って状態の変更等はなく一気にSHUTDOWN状態になる。 ただし、SHUTDOWN時に接続されているユーザのセッションやトランザクションをどう扱うかで、停止モードが異なる。

 shutdown normal

normal オプションを付けて(デフォルトもコレ) shutdown コマンドを実行すると、現在接続中のユーザーがすべてログアウトするまで待機します。すべてのユーザーがログアウトすると、データベースのシャットダウンが始まります。整合性が保たれたまま停止されるため、次回起動時のインスタンス・リカバリは不要。

 shutdown transactional

transactional オプションを付けて shutdown コマンドを実行すると、現行のトランザクションが終了するまで待機します。現行のトランザクションが終了すると、データベースのシャットダウンが始まります。整合性が保たれたまま停止されるため、次回起動時のインスタンス・リカバリは不要。

 shutdown immediate

immediate オプションを付けて shutdown コマンドを実行すると、即時にデータベースのシャットダウンが始まります。シャットダウンを始めた時点でコミットされていない変更(実行中のトランザクションも含む)はロールバックされます。整合性が保たれたまま停止されるため、次回起動時のインスタンス・リカバリは不要。

 shutdown abort

abort オプションを付けて shutdown コマンドを実行すると、即時にデータベースのシャットダウンが始まります。コミットもロールバックも行わない為、データに不整合が発生する可能性があります。次回起動時、SMONによりインスタンス・リカバリが自動的に行われる。

データベースの状態の確認

select status from v$instance;

で、データベースの状態を参照します。

SELECT BANNER FROM V$VERSION;

で、Oracle Database Version が取得できます。

SQL> connect / as sysdba
接続されました。

SQL> select status from v$instance;
select status from v$instance
*
1行でエラーが発生しました。
ORA-01034: ORACLE not available

SQL> startup nomount
ORACLEインスタンスが起動しました。
Total System Global Area  109868016 bytes
Fixed Size                   283632 bytes
Variable Size              75497472 bytes
Database Buffers           33554432 bytes
Redo Buffers                 532480 bytes

SQL> select status from v$instance;
STATUS
--------------
STARTED

SQL> alter database mount;
データベースが変更されました。

SQL> select status from v$instance;
STATUS
--------------
MOUNTED

SQL> alter database open;
データベースが変更されました。

SQL> select status from v$instance;
STATUS
-------
OPEN

Oracle Enterprise Manager

dbconsoleプロセスを管理するには、$ORACLE_HOME/bin/emctl を使用。環境変数ORACLE_SIDのデータベースが対象。引数を指定せずにemctlを起動すると、使用方法が確認できる。

dbconsoleプロセスが起動していれば、Webブラウザ経由で Database Control ページにアクセスできる。このとき使用するポート番号は、$ORACLE_HOME/install/portlist.ini に記述、起動時のメッセージでも確認できる。

iSQL*Plus

iSQL*Plusサーバの管理には、isqlplusctl ユーティリティを使用します。引数を指定せずに起動すると、使用方法が確認できる。

iSQL*Plusで接続に使用するポート番号も、$ORACLE_HOME/install/portlist.ini ファイルに記述されている。

リスナー

リモートでOracleに接続するには、リスナーが必要。引数を指定せずに起動すると LSNRCTL プロンプトが表示る。詳細は"help"と入力する。

最終更新時間:2008年11月14日 15時50分00秒 指摘や意見などあればSandBoxのBBSへ。