サーバー・パラメータ・ファイル(SPFILE)って、
SQL文で動的にパラメータを変えられて、便利です。
今だとデフォルトだとSPFILE使うようになってますよね。
RAC環境だとASM上に配置して、複数ノードで1つのファイルを
使用したりします。
(各ノードにあると、運用管理がちょっと煩雑だったりしますもんね)
今回はそんなSPFILE絡みで、ビックリしたことがあったので、
それを書きたいと思います。(僕だけですかね?びっくりするの)
いつも通り役には立ちません。
検証環境
[OS]
----
Microsoft Windows Server 2003 R2
Enterprise x64 Edition
Service Pack 2
----
[Oracle&GRID]
----
11.2.0.2.0 - 64bit
----
[その他]
----
2ノードRAC、管理者型管理
----
パラメータファイルについて、
OracleR Real Application Clustersインストレーション・ガイド11g リリース2 (11.2) for Microsoft Windows x64 (64-Bit)に
以下の記載があります。
5.4 Oracle RACでのパラメータ・ファイルの検索順序
Oracle RACは、次の順序でパラメータ・ファイルを検索します。
%ORACLE_HOME%\database\spfile%ORACLE_SID%.ora
%ORACLE_HOME%\database\spfile.ora
%ORACLE_HOME%\database\init%ORACLE_SID%.ora
なるほど。
環境を見てみます。
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/strike01/spfilestrike01.ora
上記のどれにも合致しません。
OS上を見てみます。
C:\>dir D:\app\orauser\product\11.2.0\dbhome_1\database\sp*
ファイルが見つかりません
C:\>dir D:\app\orauser\product\11.2.0\dbhome_1\database\init*
2012/12/18 14:04 90 initstrike011.ora
ありました。どうやら3番目のinitファイルは読み込みそうです。
中身を見てます。
C:\>notepad D:\app\orauser\product\11.2.0\dbhome_1\database\initstrike011.ora
SPFILE='+DATA/strike01/spfilestrike01.ora'
この一行だけ書いてあります。
なるほど、旧来の初期化パラメータのファイルであるinit%ORACLE_SID%.oraファイルを読み込んで、
ASM上のSPFILEを読み込んでいると。
そもそも、このinitstrike011.oraとその中身はいつ作られているのでしょうか?
データベース作成スクリプトの1つである、
%ORACLE_BASE%\admin\[データベース名]\scripts\[データベース名].sqlを見てみると、
以下の部分で作っていることが分かります。
host "echo SPFILE='+DATA/strike01/spfilestrike01.ora' > D:\app\orauser\product\11.2.0\dbhome_1\database\initstrike011.ora"
ところで、Oracle DB起動時のnomount状態では、パラメータファイルの内容を読み込み、
メモリ割り当てやプロセスの生成などを行います。
つまり、パラメータファイルがないと
「Oracle DBは起動出来ない。」
やってみます。
SQL> conn /as sysdba
接続されました。
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> exit
接続が切断されました。
C:\>del D:\app\orauser\product\11.2.0\dbhome_1\database\initstrike011.ora
C:\>dir D:\app\orauser\product\11.2.0\dbhome_1\database\initstrike011.ora
ファイルが見つかりません
C:\>sqlplus sys/oracle as sysdba
アイドル・インスタンスに接続しました。
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: ?p?????[?^?E?t?@?C??'D:\APP\ORAUSER\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITSTRIKE011.ORA'???I?[?v?????????????B
SQL> exit
切断しました。
うん。上がらない。
ファイルないし。
あ、そうそう、RACのリソース起動停止は
srvctlコマンドを使うのが一般的だよな。。
C:\>srvctl start instance -d strike01 -i strike011
C:\>
あれ?普通にプロンプト返ってきた。。
C:\>crsctl stat res ora.strike01.db -t
NAME TARGET STATE SERVER STATE_DETAILS
---------------------------------------------------------------------------
Cluster Resources
---------------------------------------------------------------------------
ora.strike01.db
1 ONLINE ONLINE strike-1 Open
2 ONLINE ONLINE strike-2 Open
ん????Open?
C:\>sqlplus sys/oracle as sysdba
接続されました。
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
strike011 OPEN
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/strike01/spfilestrike01.ora
SQL> exit
接続が切断されました。
OPENしてて、ASM上のSPFILEを読んでるだと・・・
でも、マニュアルには、、、、
=====
Oracle RACは、次の順序でパラメータ・ファイルを検索します。
%ORACLE_HOME%\database\spfile%ORACLE_SID%.ora
%ORACLE_HOME%\database\spfile.ora
%ORACLE_HOME%\database\init%ORACLE_SID%.ora
んーなんだろう。。
C:\>dir D:\app\orauser\product\11.2.0\dbhome_1\database\initstrike011.ora
2012/12/19 18:27 67 initstrike011.ora
!!!!!
C:\>notepad D:\app\orauser\product\11.2.0\dbhome_1\database\initstrike011.ora
SPFILE='+DATA/strike01/spfilestrike01.ora' # line added by Agent
# line added by Agentだと・・・
つづきます。。
0 件のコメント:
コメントを投稿