init.oraの編集
0.改定履歴
- 1997.07.14 初版
- 1997.08.01 その後判ったことの追加
1.はじめに
このドキュメントでは,Oracleをインストールし,稼働させる際に必要なinit.oraファイルに関しての説明を行なう.
2.init.oraとは?
init.oraとは,“初期化パラメータファイル”と呼ばれるもので,テキストファイルで作られている. このファイルには,データベースによるリソースの使用方法を定義するものである.
通常,Oracleを起動する際には,環境変数ORACLE_SIDで指定されているSIDのinit.oraファイルをパラメータとして採用する.
たとえば,SIDがAHOであれば,initAHO.oraが対象となる. 大文字と小文字に注意する.
3.init.oraの格納場所
Oracle7.2とOracle7.3では絶対パスでの格納場所が違っているようであるが,環境変数$ORACLE_HOME/dbs以下にあることには間違いないようである.
Oracleを起動する際に使用するstartupコマンドであるが,デフォルトではこの場所に入っている,前出のinitAHO.oraのようなファイルが指定される.
これを任意のファイルを変更したいときは,次のようにstartupを行なう際にパラーメータを付ければよい.
staartup nomount pfile=/oracle/app/oracle/product/7.3.2/dbs/initAHO.ora |
4.init.oraのテンプレートと編集項目
自分が作成するデータベース用のinit.oraを作成する必要がある.
4.1.init.oraファイルのテンプレートの作成
ここでは,デフォルトでインストールされているinit.oraを複写して編集する.
- たとえば,SIDをAHOと決めた場合,次のように行なう.
oracle@duo: cd
$ORACLE_HOME/dbs oracle@duo: pwd /oracle/app/oracle/product/7.3.2/dbs oracle@duo: ls -la init.ora -rw-r--r-- 1 oracle dba 6596 3月 28日 1996年 init.ora oracle@duo: cp init.ora initAHO.ora oracle@duo: |
4.2.編集項目
- init.ora内の以下のパラメータを必要に応じて修正する.
- デフォルトでは,次の設定になっているはずである.(Oracle 7.3.2.1.0 for Solarisの場合)
パラメータ | 初期値 |
---|---|
db_file_multiblock_read_count | 8 |
db_block_buffers | 60 |
shared_pool_size | 3500000 |
log_checkpoint_interval | 10000 |
processes | 50 |
dml_locks | 100 |
log_buffer | 8192 |
sequence_cache_entries | 10 |
sequence_cache_hash_buckets | 10 |
max_dump_file_size |
|
global_names |
|
- これらの値は,データベース設計時に別途考慮する. とりあえず稼働させるためには,デフォルトで良いと思われる. 各項目の詳細説明に関しては,巻末を参照する.
- また,デフォルトでは記述されていないが,次のようなパラーメータも存在している.
パラメータ | 設定値 |
---|---|
rollback_segments | 後で調べる |
compatible = 7.3.2.0 | 7.3.2.0 |
control_files | ディレクトリパスとファイル名を指定 |
background_dump_dest | ディレクトリパスを指定 |
core_dump_dest | ディレクトリパスを指定 |
user_dump_dest | ディレクトリパスを指定 |
log_archive_dest | ディレクトリパスを指定 |
db_block_size | OSに依存 |
db_name | 10 |
パフォーマンスチューニングにおいて設定可能な他のパラメータもあるが,ここではデフォルト(init.ora)にある項目のみをあげている.
5.init.oraの編集
5.1.データベース名の設定
次に,データベース名を設定する. データベース名はDB_NAMEに記述する. デフォルトではこの定義は無いので,適当な場所に自分で作成する. 例えば,データベース名をAHOにしたい場合には,次の用に記述する.
DB_NAME = AHO |
5.2.ブロックサイズの設定
db_block_sizeパラメータは明記されていない. これはOSのインストール状態によるからである. それはファイルシステムおよびディスクのパーティションに関連する,ディスク上のブロックサイズに依存するからである.
ここでは,db_block_sizeを明示的に設定する.
db_block_size = 4096 |
大きなデータ項目を扱う場合には,この値を増やせば良い場合もある. その場合,OSの状態の初期値の倍数であれば,より効率が良いと思われる.
5.3.制御ファイルの指定
データベース毎に,最低1つの制御ファイルが必要になる. ただし,2つ以上持つようにする事が推奨されている. それは,データベースの稼働中に破損するとデータベースへのアクセスをユーザに提供できなくなるからである.
例えば,ディレクトリは何でも良いが,たとえば次のように指定する.
control_files = (/oracle/ctrl/control01.ctl, /oracle/ctrl/control02.ctl, /oracle/ctrl/control03.ctl) |
制御ファイルは,破壊されるとデータベースが稼働しなくなるので,別々のディスクに格納する事が推奨されている.
この制御ファイルは,データベース作成時に作られるファイルである.
予め,格納するディレクトリを作成しておく必要がある.(ディレクトリの権限に注意)
5.4.トレースファイルのディレクトリの設定
トレースファイルのディレクトリを指定することが出来る.(指定しないときにどうなるかは不明) トレースファイルには,次の2種類がある.
- Oracle Serverデタッチ・プロセスで制作されたトレースファイル
- ユーザプロセスで作成されたトレースファイル
トレースファイルは,次のような3種類の初期化パラメータ(int.oraに記述する)で現すことが出来る.
- background_dump_dest
- デタッチ・プロセスによって作成されるダンプファイル,及びアラート・ファイルを格納するディレクトリ.
- core_dump_dest
- ユーザプロセスによって作成されるダンプファイルを格納するディレクトリ.
- user_dump_dest
- コア・ダンプによって作成されるダンプファイルを格納するディレクトリ.
background_dump_dest = /oracle/dmp/bdump core_dump_dest = /oracle/dmp/cdump user_dump_dest = /oracle/dmp/udump |
予め,格納するディレクトリを作成しておく必要がある.(ディレクトリの権限に注意)
これらのトレースファイルは,正常動作時にも作成されるが,通常では有益な情報は入っていない. よって,ディスク容量不足を防ぐために,ときどきトレースファイルを削除する必要がある.
5.5.ログ・アーカイブ先の指定
REDOログファイルの自動テープ・アーカイブを実現するためには,その書き込み先を指定する事が出来る.
パラーメータは次のようになる.
log_archive_dest = device[:volume M|K|B] |
たとえば,100Mのテープデバイス(/dev/rmt/0)に書き込みたい場合には,次のように記述する.
log_archive_dest = /dev/rmt/0:100M |
ファイルに書き込みたい場合には,次のように記述する.
log_archive_dest = /oracle/arclog/arch%t_%s.dbf |
この結果,“/oracle/arclog/archシーケンス.dbf”というファイルが作成される. ログファイルを1つしか作らないのであれば,ファイル名固定でも良い.
log_archive_dest = /oracle/archlog.dbf |
5.サンプルファイル
とあるシステムで作成したinit.oraファイルを紹介する.
ここでは,init.oraを2つのセクションにわけて定義しているので注意する.
付録1 init.oraのその他のパラメータ
次に,各々の意味を説明する.
付録1.1 db_file_multiblock_read_count
不明.
付録1.2.db_block_buffers
データキャッシュである.あらゆるプロセスが表示・検証・修正・削除を行なうためには,そのデータがdb_block_buffers内に存在しなくてはならない. このキャッシュの値が多くなれば,Oracleはより多くのデータブロックをメモリ内に保持できるので,ディスクアクセスが少なくなり,高速化される.
Oracleのチューニングには,メモリないに出来るだけ多くのデータを保持できるように,この値を最大にすることが推奨されている.
このパラメータはSGAのサイズが大きくなるが,SGAのサイズはコンピュータで利用可能なメモリの50%を越えてはいけない.
値はブロックの個数で,1ブロックはdb_block_sizeで定義される. つまり,データベースバッファは,以下のような式で計算することができる.
|
付録1.3.shared_pool_size
プログラムキャッシュと,データディクショナリキャッシュである. データディクショナリとは,Oracle管理する情報のことである. たとえば,ユーザのログオン,権限に関する有効性を判定するために,幾つかのデータディクショナリが参照されるが,これらのデータがキャッシングされる場所のサイズである.
また,プログラムキャッシュは,Oracleがデータベースに作用するプログラムを格納する場所である. 例えば,SQL*Plusで実行するあらゆるSQL文は,プログラムキャッシュ内に配置されて実行可能となる.
このサイズも大きければ大きいほど良いが,db_block_buffersと同じように,SGAが増える.SGAのサイズは,コンピュータで利用可能なメモリの50%を越えてはならないのは同じ.
付録1.4.log_checkpoint_interval
不明
付録1.5.processes
Oracleデータベースに同時に接続可能なプロセス最大数を定義する. デフォルト値は50である. この値には,Oracleのバックグラウンドプロセスが含まれている. また,アプリケーションがプロセスを発生させた場合には,これも含まれるようになる.
この値を低く設定するのは,ハード及びソフトの容量の問題からユーザ数を減らす場合だけと考えて良い.
付録1.6.dml_locks
不明.
付録1.7.log_buffer
不明.
付録1.8.sequence_cache_entries
不明.
付録1.9.sequence_cache_hash_buckets
不明.
付録1.10.db_block_size
OSによって異なるが,物理ディスクのブロックサイズを最低単位としているようである. よって,小さなブロックサイズを割り当ててあるディスクを使用する場合には,もう少し大きくした方が良いと思われる.
サイズを決定する場合には,2048Kの倍数で決定する.
付録1.11.sort_area_size
ソートアクティビティに対するメモリ割り当てを制御するパラメータ. order byやgroup byw含むSQL文は,ソートアクティビティを発生する. また,create
indexも同様である.
この時,メモリが足りないと,ディスク上でソートを行なうので遅くなる. デフォルト値ではあまりにも低すぎるので,一般にはデフォルト設定値の最低2倍が適当である.
付録1.12.checkpoint_process
Oracleデータベースがメモリ内のバッファから適当なデータベースファイルに情報を書き込む際にて危機的に発生するイベント. このイベントが発生すると,データファイル内の領域がイベントを記録できるようになる. ログライター(lgwr)またはチェックポイント(chpt)プロセスによって実行される.
付録1.13.open_cursors
湯zーあが1度にオープンできるカーソルの最大数. カーソルは,OracleがSQL文のユーザプロセスに割り当てるメモリ量であると考えて良い. カーソルが足りなくなるとアプリケーションは停止する. この値は,最低250にすることが推奨される.
付録1.14.db_writers
データベースに情報を同時に書き込むプロセス数を制限する. 多くのUNIXプログラム上では,オプションとして複数のデータベースライターを使用することが出来る. データファイル1つにつき,db_writersを2つ設定することが推奨されている.
付録1.15.times_statistics
データベースの動作中にデータベースに関する追加情報を記録するように指示する. テスト環境では有効であるが,本番環境ではこれをOFFにする. それは,追加のオーバヘッドになり,システムの性能に影響を与えるからである.
付録1.16.optimizer_mode
SQL文の実行時にデータベースが行なう選択内容を設定する. これには,次の4つの選択肢がある.
- FULL_ROWSまたはALL_ROWS
- Oracleに,コストベースオプティマイザのアプローチを使用するように指示する. これが設定されていると,SQL文が発行された場合に表サイズを考慮するようになる.
- RULE
- OracleがSQL文の実行方法を決定する際に伝統的に用いてきた方法である. Oracleが持っているルールにのっとって,評価を行なう.
- CHOOSE
- これがデフォルト設定で,ユーザが必要な情報を所有している場合は,コストベースを使用し,これがない場合にはルールベースを使用する.
参考文献
- Oracleデータベースビギナーズガイド
- 株式会社翔泳社 ISBN4-88135-344-6 C3055 P5000E
- ORACLE7-2セミナーテキスト 補足資料
- 株式会社xxxx データベース事業部 西日本営業部 xxさん作