ORACLEMASTER 備忘録5(6/8)
続き
SQL文による初期化パラメータの設定
SQL*Plusを使用して、初期化パラメータを確認したり、値を変更することもできる。
- SQL*Plusを起動して、SYSDBA権限を持つユーザーとしてデータベースに接続する。
- 「SHOW PRAMATERS パラメータ名」を実行すると、現行インスタンスのパラメータ値を確認できる。パラメータ名の箇所はパラメータの一部の文字列でもかまわない。
- ALTER SYSTEM文でSET句を指定すると、初期化パラメータ値を設定または変更できる。
ALTER SYSTEM SET パラメータ名 = 値[SCOPE ={MEMORY | SPFILE | BOTH}];
SCOPE句を使うと次のように変更の適用範囲を指定できる。
MEMORY:
変更は現行のインスタンスに対してのみ行われ、インスタンスが存続している間保持される。
SPFILE:
変更はサーバーパラメータファイルに対してのみ行われ、インスタンスの再起動することで変更が反映される。
BOTH:
現行インスタンスとサーバーパラメータファイルの両方が変更される。新しい設定はすぐに有効となり、インスタンスが停止し、再起動された後も持続する。
SCOPE句を省略した場合、使用している初期化パラメータファイルの種類によってデフォルト値が変わるので注意が必要である。
サーバーパラメータファイルを使用してインスタンスを起動した場合は「SCOPE=BOTH」がデフォルトで、テキスト初期化パラメータファイルを使用してインスタンスを起動した場合は「SCOPE=MEMORY」がデフォルトである。
メモリーコンポーネントの管理
Oracle Database 9i以前は、初期化パラメータでSGAの各コンポーネントのサイズを個別に指定していた。また9i以前はPGAのサイズもセッションごとに個別に設定する必要があった。
しかし、現在のように処理が複雑になってくると、そのような手段では間に合わない。
そこで、データベースサーバーに“SGAのトータルのサイズ”を指定しておくと、負荷状況に合わせて各コンポーネントのサイズを自動的に調整する機能が追加された。それが「自動共有メモリー管理」(10g以降)と呼ばれる機能である。
PGAも同様にトータルのサイズを設定しておくと、ユーザーの処理内容に合わせて自動的に配分されるようになった。これは「自動PGAメモリー管理」(9i以降)と呼ばれる。それでもSGAとPGAは個別に管理する必要があった。
その後、Oracle Database 11gで新たに実装された「自動メモリー管理」によってSGAとインスタンスPGAをまとめて管理できるようになった。
・インスタンスPGAとは、インスタンスに連結されたすべてのバックグラウンドプロセスおよびサーバープロセスに対して割り当てられた“個別のPGAの合計”である。