{{category Oracle,nolink}}Windows中心だけど、起動と停止はUNIXでも同じ !!!Oracleデータベースの起動と停止 Windows は、サービス上で Oracle が稼動しており、 Windows 本体のシャットダウン中に規定時間(デフォルト20秒?)以内で終了処理が完了しないとサービスは強制終了される。そのため、安静時以外(大量のロールバック作業中など)の場合には、必ず手動で Oracle をシャットダウンを行い、Windows を終了させること。 また、サービスとしては動いている(状態が「開始」になっている)が、実際にはインスタンスが立ち上がっていない場合もある(実際に過去に何度かあった)。 !!!Windowsのサービス WindowsにOracleのDBサーバをインストールすると以下のサービスが登録される。例は、OracleHome を '''OraHome92'''、SID を '''orcl''' で設定した場合。 *OracleMTSRecoveryService **MTS(Microsoft Transaction Server : 高いエディションの Windows にしか付いてない機能)を使わない場合は起動する必要ない。 *Oracle'''OraHome92'''Agent **Inteligent Agentを使わない場合(Oracle Enterpirse Manager Consoleをスタンドアロンで使う場合)は起動する必要ない。 *Oracle'''OraHome92'''HTTPServer **Oracle の HTTPServer を使わない場合は起動する必要ない。 *Oracle'''OraHome92'''TNSListener **TNSリスナー。他のマシンからアクセス(利用)する場合は起動させる。 *OracleService'''ORCL''' **書かれている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"と入力する。