IT業界の人を応援!! 資格取得ガイド
 トップページ > 備忘録 > Oracleを動かしてみよう(オラクル起動方法)















































































































Oracleを動かしてみよう(オラクル起動方法)

ステップ2)オラクルの起動

当ページではオラクルの起動方法を説明します。
まず、オラクルの起動方法ですが、GUIベースのOracleEnterpriseManager(OEM)を
使用したデータベースの起動方法、およびCUIベース(コマンド)を使用した
データベースの起動方法があります。


オラクルが起動するには、「NOMOUNTモード」「MOUNTモード」「OPENモード」の3つのモードがあります。
データベースが起動したと言う場合は、OPENモードになった事を指します。


以下は上記で触れた「NOMOUNTモード」「MOUNTモード」「OPENモード」の3つのモードに遷移する際にOracle内部で読込まれるファイル、動作の説明を纏めた表です。
データベースの状態 読込みファイル 動作説明
OPEN状態(DB起動)
データファイル
REDOログファイル
■データファイル、REDOログファイルの読込み。
■Mount状態で読込んだ制御ファイルに記載されているデータファイル、REDOファイルの場所、SCN番号の整合性がとられている場合、OPEN状態へ遷移する事が可能。
MOUNT状態
制御ファイル ■制御ファイルの読込み。
NOMOUNT状態
パラメータファイル ■パラメータファイルを読込みインスタンスの起動。
■バックグランドプロセスを起動。
停止状態

上記の表を見て頂けると、Oracleが内部で行っている処理動作が分かります。

例えば、Oracleを起動(OPEN状態)まで起動させるSTARTUPコマンドを実行しても、MOUNT状態までしか遷移しない場合はデータファイル、REDOログファイルが破損している
SCN番号の整合性がおかしい
と判断出来ます。

同様に、NOMOUNT状態までしか遷移しない場合は、制御ファイルがない、読込めないなどと制御ファイル周りがおかしいと分かります。

また、NOMOUNT状態すら行かない場合は、パラメータファイルがおかしい事が分かります。その場合は、$ORACLE_HOME/dbs配下にSPFILE、INITORAファイルがあるか確認してください。




オラクルの起動方法のコマンド
オラクル起動方法には多くのオプションがありますが、当ページでは業務でする事が多いもののみを紹介致します。
当ページ以外の起動方法を行いたい場合は、Oracle社の以下のマニュアルを参考にして下さい。
SQL*Plusユーザーズ・ガイドおよびリファレンス(STARTUP)


OPEN状態までオラクルを起動させる場合
SQL>STARTUP

STARTUPコマンド以降にオプションなどは必要ありません。
オラクルを起動させたい場合は、STARTUPと打ち、ENTERボタンを押すだけです。


NOMOUNT状態までオラクルを起動させる場合
SQL>STARTUP
NOMOUNT
STARTUPコマンド以降にNOMOUNTと打ち、ENTERボタンを押してください。
パラメータファイル(SPFILEかINITORAファイル)が$ORACLE_HOME/dbs配下にあれば起動します。
なお、$ORACLE_HOME/dbs配下にSPFILEかINITORAファイルが両方ある場合は、SPFILEが優先的に読込まれます。


MOUNT状態までオラクルを起動させる場合
SQL>STARTUP
MOUNT
STARTUPコマンド以降にMOUNTと打ち、ENTERボタンを押してください。
制御ファイルがパラメータファイルに記載されているパスにあり、読込み可能な状態であればMOUNT状態で起動します。


特定のパラメータファイルを使用してOPEN状態までオラクルを起動させる場合
SQL>STARTUP
 PFILE=(PFILEのパス)/PFILE名
STARTUPコマンド以降にPFILEと記述してどこのPFILEを読込むかフルパスで記述した後にENTERを押してください。
一時的に異なるPFILEを使用したい場合などに使用します。

通常は$ORACLE_HOME/dbs配下にSPFILE、INITORAファイルを置いておく事が一般的ですので、常に上記コマンドでデータベースを起動する方法は運用時に混乱を招きますのでやめた方が良いと思います。





実際に起動してみる
SQLPLUS経由でオラクルに接続する

まずはSQLPLUSを起動します。Oracleユーザにて以下のコマンドを実行します。
$SQLPLUS /NOLOG

その後にDBAユーザであるSYSに接続します。
SQL>CONNECT SYS/ORACLE AS SYSDBA
※作者の環境ではSYSユーザのパスワードは”ORACLE”です。

その後にSYSユーザで接続出来ている事を確認します。
SQL>SHOW USER

起動コマンドを実行する

ここではOPENモードへ一発で起動します。
SQL>STARTUP




以下は上記のコマンド実行時の標準出力結果です。
[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on Sun May 3 07:11:54 2009

Copyright (c) 1982, 2007, Oracle. All rights reserved.

SQL> connect sys/oracle as sysdba
Connected to an idle instance. <=アイドルインスタンス(起動していない)事が分かります。
SQL>
SQL> show user
USER is "SYS"
SQL>
SQL> startup <=OPEN状態まで起動するコマンドを実行。
ORACLE instance started.

パラメータファイルに記載されているメモリを掴んで起動している事が分かる。
Total System Global Area 1586708480 bytes
Fixed Size 2144784 bytes
Variable Size 788530672 bytes
Database Buffers 788529152 bytes
Redo Buffers 7503872 bytes
Database mounted. <=データベースがMOUNT状態へ遷移した事が分かる。
Database opened..  <=データベースがOPEN状態へ遷移した事が分かる。

SQL>
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@localhost ~]$




オラクルの起動時に出力されるシステムログを確認します。
オラクルのシステムのログはアラートログに出力されます。

以下はアラートログの出力内容を確認した際の結果です。
[
oracle@localhost trace]$ cat /opt/oracle/app/diag/rdbms/itdb/itdb/trace/alert_itdb.log_immediate
<=アラートログの内容を確認。
[oracle@localhost trace]$ cat /opt/oracle/app/diag/rdbms/itdb/itdb/trace/alert_itdb.log
Sun May 03 07:11:58 2009
Starting ORACLE instance (normal) 
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 3
Using LOG_ARCHIVE_DEST_1 parameter default value as /opt/oracle/app/product/11.1.0/db_1/dbs/arch
Autotune of undo retention is turned on.
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up ORACLE RDBMS Version: 11.1.0.6.0.
Using parameter settings in server-side spfile <=SPFILEを使用して起動 /opt/oracle/app/product/11.1.0/db_1/dbs/spfileitdb.ora
System parameters with non-default values:
processes = 150
nls_language = "AMERICAN"
nls_territory = "JAPAN"
memory_target = 1520M
MOUNT時に必要な制御ファイルの場所情報が読込まれている。
control_files = "/opt/oracle/app/oradata/itdb/control01.ctl"
control_files = "/opt/oracle/app/oradata/itdb/control02.ctl"
control_files = "/opt/oracle/app/oradata/itdb/control03.ctl"
db_block_size = 8192
compatible = "11.1.0.0.0"
undo_tablespace = "UNDOTBS1"
remote_login_passwordfile= "EXCLUSIVE"
db_domain = ""
dispatchers = "(PROTOCOL=TCP) (SERVICE=itdbXDB)"
audit_file_dest = "/opt/oracle/app/admin/itdb/adump"
audit_trail = "DB"
db_name = "itdb"
open_cursors = 300
diagnostic_dest = "/opt/oracle/app"
Sun May 03 07:12:00 2009
NOMUT時にはバックグランドプロセスも起動されている。
PMON started with pid=2, OS id=30749
Sun May 03 07:12:00 2009
VKTM started with pid=3, OS id=30751 at elevated priority
VKTM running at (20)ms precision
Sun May 03 07:12:00 2009
DIAG started with pid=4, OS id=30755
Sun May 03 07:12:00 2009
DBRM started with pid=5, OS id=30757
Sun May 03 07:12:00 2009
PSP0 started with pid=6, OS id=30759
Sun May 03 07:12:00 2009
DSKM started with pid=7, OS id=30761
Sun May 03 07:12:00 2009
DIA0 started with pid=8, OS id=30763
Sun May 03 07:12:00 2009
MMAN started with pid=7, OS id=30765
Sun May 03 07:12:00 2009
DBW0 started with pid=9, OS id=30767
Sun May 03 07:12:00 2009
LGWR started with pid=10, OS id=30769
Sun May 03 07:12:00 2009
CKPT started with pid=11, OS id=30771
Sun May 03 07:12:00 2009
SMON started with pid=12, OS id=30773
Sun May 03 07:12:00 2009
RECO started with pid=13, OS id=30775
Sun May 03 07:12:01 2009
MMON started with pid=14, OS id=30777
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
Sun May 03 07:12:01 2009
MMNL started with pid=15, OS id=30779
starting up 1 shared server(s) ...
ORACLE_BASE from environment = /opt/oracle/app
Sun May 03 07:12:01 2009
MOUTモードへ遷移させるコマンドが実行されている。
ALTER DATABASE MOUNT
Setting recovery target incarnation to 2
Successful mount of redo thread 1, with mount id 2808467396
Database mounted in Exclusive Mode
Lost write protection disabled
Completed: ALTER DATABASE MOUNT
Sun May 03 07:12:08 2009
OPENモードへ遷移させるコマンドが実行されている。
ALTER DATABASE OPEN
Thread 1 opened at log sequence 37
Current log# 1 seq# 37 mem# 0: /opt/oracle/app/oradata/itdb/redo01.log
Successful open of redo thread 1
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
SMON: enabling cache recovery
Successfully onlined Undo Tablespace 2.
Verifying file header compatibility for 11g tablespace encryption..
Verifying 11g file header compatibility for tablespace encryption completed
SMON: enabling tx recovery
Starting background process SMCO
Sun May 03 07:12:08 2009
SMCO started with pid=19, OS id=30791
Database Characterset is AL32UTF8
Opening with internal Resource Manager plan
Starting background process FBDA
replication_dependency_tracking turned off (no async multimaster replication found)
Sun May 03 07:12:09 2009
FBDA started with pid=20, OS id=30793
Starting background process QMNC
Sun May 03 07:12:09 2009
QMNC started with pid=21, OS id=30795
Completed: ALTER DATABASE OPEN <=正常にOPENモードでOracleは起動した。
[oracle@localhost trace]$




OPEN状態までオラクルをNOMOUNT,MOUNTと遷移させて起動させる場合
SQL>STARTUP NOMOUNT
SQL>ALTER DATABASE MOUNT; ※セミコロンがいります。
SQL>ALTER DATABASE OPEN; ※セミコロンがいります。
通常、このように手間がかかる起動方法は行いませんが、データベースが起動しない場合は、一つ一つ遷移をさせ、どの箇所に問題があるかを確認しながら起動する事がありますので紹介します。
また、リカバリが必要な場合もNMOUNTモード、MOUNTモードでリカバリコマンドを実行する必要がありますので覚えておいて下さい。



[oracle@localhost ~]$ sqlplus / as sysdba <=SYSユーザにて接続

SQL*Plus: Release 11.1.0.6.0 - Production on Sun May 3 07:22:42 2009

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to an idle instance. <= オラクルが起動していない事を確認。

SQL> startup nomount <=NOMOUNTモードまで起動。
ORACLE instance started.

Total System Global Area 1586708480 bytes
Fixed Size 2144784 bytes
Variable Size 788530672 bytes
Database Buffers 788529152 bytes
Redo Buffers 7503872 bytes
SQL>
SQL> select * from V$instance; <=オラクルのステータス確認。

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_ STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- -------- ------------ --- ---------- ------- ---------------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
1 itdb
localhost.localdomain
11.1.0.6.0 09-05-03 STARTED NO 0 STOPPED  <=STARTED(NOMOUNT)モード
ALLOWED NO ACTIVE UNKNOWN NORMAL NO


SQL>
SQL> alter database mount; <=MOUNTモードまで起動。

Database altered.

SQL>
SQL> select * from V$instance; <=オラクルのステータス確認。

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_ STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- -------- ------------ --- ---------- ------- ---------------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
1 itdb
localhost.localdomain
11.1.0.6.0 09-05-03 MOUNTED NO 1 STOPPED   <=MOUNTモードに遷移した。
ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL NO


SQL>
SQL> alter database open;  <=MOUNTモードまで起動。

Database altered.

SQL>
SQL> select * from V$instance;

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_ STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- -------- ------------ --- ---------- ------- ---------------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
1 itdb
localhost.localdomain
11.1.0.6.0 09-05-03 OPEN NO 1 STOPPED    <=OPENモードに遷移した。
ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL NO


SQL>
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@localhost ~]$



特定のパラメータファイルを使用してOPEN状態までオラクルを起動させる場合
SQL>STARTUP
 PFILE=(PFILEのパス)/PFILE名

[oracle@localhost ~]$ sqlplus / as sysdba <=SYSユーザにて接続

SQL*Plus: Release 11.1.0.6.0 - Production on Sun May 3 07:32:39 2009

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup pfile=/tmp/inititdb.ora <=パラメータファイルを特定場所に置いて起動
ORACLE instance started.

Total System Global Area 1586708480 bytes
Fixed Size 2144784 bytes
Variable Size 788530672 bytes
Database Buffers 788529152 bytes
Redo Buffers 7503872 bytes
Database mounted.
Database opened. <=正常に起動しました。
SQL>
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@localhost ~]$




Oracle社よりデータベースの起動停止方法のマニュアルが公開されています。
詳細は以下をご確認ください。
データベース起動停止方法のマニュアル



作者が読んでよかったので推薦するオラクル関連の本nze DBA10g
絵で見てわかるOracleの仕組み
絵で見て、Oracleの動作を理解出来る本です。

Oracleの動作を文字やコマンドで解説されている本はたくさんありますが、どうも解りにくい。。

この本は、その”解りにくい・・”の箇所を極力、絵で表してくれているお勧めの本です。
Oracleのアーキテクチャ(仕組み)をイメージしやすいように書かれています。

作者もこの本で”もやもや”しているオラクルの動作を整理出来ました!!

目的地を人に聞く時、「次の次の信号を右に曲がって、次を左に曲がって、3件目です」より、「今ここで、ここが目的地」と地図で教えてもらった方が解りやすいし、道を間違っても、自分の力で辿りつけますよねぇ。

要は、絵で理解すると解り易いし、道(手順)を外れても回復する応用力が付くと言う事です。
現場で使えるSQL

この本を理解出来れば、現場のDBがOracleであろうがSQLServerであろうがどんなDBにも対応出来ます。

また、この本は現場でよく使用するSQL文を、例題、正解、解説の形で紹介されています。
例題数は100個と多いですが、この100個を覚えると現場がオラクルであろうが、SQLServerであろうがどのなDBを使用している現場にも対応出来ます。

100個の例題の中にはよく使用するSQLから作業効率を高めるSQL、よくやるミスの回避方法が掲載されています。

知っていました? 普及しているデータベースのSQLは国際標準のANSIという規格に準拠している事を。
要は、OracleでSQLを書ける人は他のデータベースでも同じように書けます。

例えるなら、関西弁をしゃべれる人は標準語を理解出来るし、博多弁、広島弁と違う場所(異なるDBのSQL)も理解出来ますし、使えます。ANSIとは日本語の基本を決めるルールです。多少は場所によるローカルルールはありますが、基本ルールに基づいています。







Copyright(C) IT業界の人を応援!!資格取得ガイド All Rights Reserved