クラウドで 伸びる人沈む人 |
|
|
|
Oracleのパラメータ(初期設定)ファイル 昔は、init.ora一本槍だったが・・・
<概要> オラクルのバックアップをするためには、初期設定ファイルについて理解する必要があります。なぜなら、初期設定ファイルにバックアップのための重要な情報が格納されているからです。 具体的にいうと、そのファイルの中に、バックアップやミラーリングのファイルの場所が指定されているのです。 しかしながら、オラクルの初期設定ファイルは、少々複雑で癖があります。 (いえ、ファイル自体は単純なのですが、その使い方が複雑なのです) でも、慣れてしまえばたいしたことありません。(と言いつつも、私も最初は頭がこんがらがりました) しっかり理解していきましょう。 では、いってみます。 <1.オラクルの癖(複数の初期設定ファイルがある)> 一般にサーバーといえば、初期設定ファイルはつきもの。 初期設定ファイルを変更して、再起動して設定変更を反映する。 当然、初期設定ファイルはひとつだけ。複数あったら困ります。当たり前ですね。 Apacheだって、Bindだって、みんなそうです。 ●しかし、オラクル(Oracle)は、ちょっと癖があります。 この初期設定ファイルのほかにも、 サーバーパラメータファイルというのがあって、これも初期設定ファイルとなりうるのです。 つまり、初期設定ファイルらしきものが二つもある。 えっ、二つも?!びっくりしますよね。私もびっくりしました。だから、混乱してしまうのです このへんの優先順位や、どっちをどうやって編集するのか、そういう疑問をここでは詳しく書きます。 ここをよく勉強していきましょう。 <2.spfileの追加> たしかに、従来まで(Oracle8)までは、初期設定ファイル(init*.ora)を変更して再起動する。 こういうノーマルな手順でした。 この当時の初期設定ファイルは、pfileと呼ばれるのですが、pfileは、テキストで編集可能でした。 非常にわかりやすい。 一般のサーバーと同様なシンプルな手順でした。 pfileを変更して、再起動する。と。 しかし、Oracle9iからは、「サーバーパラメータファイル」なるものが追加されました。 これを、spfileと呼びます。 このspfileは、バイナリでテキストで編集不可です。 全部、sql*plusからの命令で編集するのです。 何故、こんなファイルを導入したかは、よくわかりませんが、 たぶん、pfileだとテキストで簡単に編集できるのはいいのですが、 簡単にいじれるために、書式を間違ってデータベースが起動できなくなる人が続出してしまう。 そんなことを防いだのかな、と思います。 結果、pfileとspfileという二つの初期設定ファイルが生まれてしまいました。 <3.spfileとpfileの優先順位> さて、テキストで編集可能なpfileとバイナリなspfileがあることがわかりました。 二つあった場合は、どっちが優先されるのでしょうか? ●優先順位は、以下のとおりとなっています。 1.. 起動時に指定したpfile:startup pfile='[ファイル]' 2.. spfileSID.ora 3.. spfile.ora 4.. initSID.ora 5.. init.ora <4.spfileとpfileの格納場所> さて、優先順位はわかったものの、じゃあ、どのフォルダに格納しておけばいいのか? という疑問がわきます。 spfileの格納場所は、以下のSQLでわかります。 SQL > select value from v$system_parameter where name ='spfile' もし、この値が表示されない場合は、すなわちpfileが有効になります。 pfileの格納場所は、SQLでわかりません。テーブル上の情報として保持していないのです。 (これ、私も散々調べましたよ。疲れた) pfileは、以下の場所に、ファイルをおくことで設定が反映されます。 (昔からやってる人は、よくご存じですね) %ORACLE_HOME%\DATABASE\INIT%ORACLE_SID%.ORA たぶん、上記SQLで調べたspfileの置き場所と同じだと思います。 結局、pfileもspfileも同じ場所に置くのです。 ややこしい場合や困った場合は、とにかくここに初期設定ファイルを置きましょう。 <私の場合:例>C:\ORACLE\PRODUCT\10.1.0\DB_1\DATABASE\SPFILEORCL.ORA こうして、pfileとspfileの格納場所がわかりましたね。 その格納場所にファイルがおいてあれば、設定が反映されるのですが、 あくまでも優先順位は、以下のとおりですからね。念のため。 1.. 起動時に指定したpfile:startup pfile='[ファイル]' 2.. spfileSID.ora(spfile) 3.. spfile.ora (spfile) 4.. initSID.ora (pfile) 5.. init.ora (pfile) <5.spfileとpfileの切り替え> さて次に、pfileとspfileの切り替え方法を勉強しておきましょう。 pfileと起動したけれども、spfileに切り替えたいとか、spfileで起動したけれども、pfileに切り替えたいとか。 そんな作業をわけもなくできるようになるためのコマンドを覚えればOKですね。 pfile → spfile SQL> create spfile='ファイル名' from pfile='ファイル名' spfile → pfile SQL> create pfile='ファイル名' from spfile ファイル名はフルパスで書いてくださいね。 <6.spfileとpfileの編集方法> pfileは、テキストファイルなので、普通にエディタで編集できます。 しかし、spfileは、バイナリなので、テキストで編集することができません。 ↓のような命令を実行します。 SQL> ALTER SYSTEM SET <PARAMETER>=<VALUE> SCOPE=SPFILE ただし、SCOPE=SPFILEはつける時とつけない時がある。 詳しくは、下記に。 <7.設定変更と反映するタイミング> まあ、ここまででもけっこうややこしいのですが、さらにややこしいことがあります。 一般的に、初期設定ファイルを変更してサーバーを再起動しないと設定変更は反映されないのですが、 オラクルの場合は、再起動しなくても設定変更が反映するものがあります。 そのコマンドが、以下です。 ALTER SYSTEM SET <PARAMETER>=<VALUE> このコマンドでエラーが出なければ、再起動しなくても運用しながら設定変更が反映されます。 もちろん、この設定は再起動しても有効です。設定が残っています。 (もし、このコマンドでエラーが出るものは、SCOPE=SPFILEを必要とし、再起動しないと反映しない) ためしに SQL> create pfile='ファイル名' from spfile としてみて、pfileで、その中身を確認しましょう。そうすると、その設定変更が反映されていることがわかります。 ふう、以上で初期設定ファイルのお話がおしまいです。 バックアップのときは、このへんのコマンドを駆使しますので、よく概念を覚えておきましょう。 |