オラクル専用ページへもどる
■SHARED_POOLの利用率取得
shared poolが少なくなるとエラーが発生したり、クエリが遅くなったりするのでチェックすること。
select decode(name, 'free memory', 'free', 'used') type, sum(bytes) value
from v$sgastat
where pool='shared pool'
group by decode(name, 'free memory', 'free', 'used');
●共有プール内バッファ・キャッシュ(ライブラリ・キャッシュとディクショナリ・キャッシュ)を空にするコマンド
レスポンスの遅延が共有プールに起因しているかどうか切り分けの為、いったん共有プール内バッファを空にすることで
確認できることがあります。強制的に共有プール内データを削除し、レスポンスに影響していないか切り分けができます。
このコマンドではメモリ内に確保されたエクステントなどメモリ保持単位を完全に空にするわけではないので、
メモリがクリーンになるわけではありません。また永続的に保持されたオブジェクトは空になりません。
SQL} alter system flush shared_pool;
System altered.
●SHARED_POOLを増やす方法
$ORACLE_HOME/dbs/init.oraを編集して再起動します。
shared_pool_sizeと書かれた部分をバイト単位で指定します。
shared_pool_size = 1000000
●DBブロックバッファで不整合が発生しORA-600が出たときの対処例
alertログとトレースを調べて問題と思われるテーブル名を調べる。
以下のコマンドで物理的に破損していないこと確認する。
SQL} analyze table {TABLENAME} validate structure;
例: analyze table scott.emp validate structure;
Table analyzed.
OKなら物理的に破損していないので以下を実行
SQL} analyze table {TABLENAME} validate structure cascade;
例: analyze table scott.emp validate structure cascade;
行1でエラーが発生しました。:
ORA-08103: 現在、指定したオブジェクトは存在しません。
※これでメモリに問題ありと切り分けできた。
・表と索引のどちらかを切り分け
select owner, object_name, object_type from dba_objects where object_name like '%EMP'
SQL} analyze index {INDEXNAME} validate structure;
例: analyze index SCOTT.PK_EMP validate structure;
行1でエラーが発生しました。:
ORA-08103: 現在、指定したオブジェクトは存在しません。
★索引のメモリブロックが壊れているようです。
■EVENTの設定方法
1.EVENTについて
EVENTは、DBインスタンスに以下を実行させるための設定のこと。
・通常の動作と異なる動作にさせる
・トレースや、デバッグに有用な情報の収集
・エラーに対するチェックの強化
2.設定方法
以下のA,Bいずれかの方法で設定する。
A: 初期化パラメータファイル(init{SID}.ora、spfile)に対して、EVENTを設定
B: ALTER SESSION SET EVENTS、もしくはALTER SYSTEM SET EVENTS により、EVENTを設定
3.EVENTに設定するLEVELについて
多くの場合、EVENTのLEVELの違いにより、動作が異なる。典型的な文法は以下の通り。
EVENT="10046 trace name context forever, level 1"
この例では、EVENTが10046の、LEVEL1を設定している。ちなみに、これはsql_trace=trueと
同じ意味を持つEVENTとなる。
また、EVENTを設定している場合に何か問題が発生した場合、EVENTの設定を外しても現象が再現するか確認すること。
これは、EVENTを設定すると通常と異なる動作となるため、その影響により問題が発生している可能性があるため。
データベースのアップグレードの前には、必ず個々の初期化パラメータに設定してあるEVENTについて、再評価すること。
リリースが異なると、EVENTの影響が変わる場合があるため。
4.初期化パラメータへのEVENT設定注意点
複数のEVENTを初期化パラメータファイルに設定する場合には、連続した行で記述する必要がある。
EVENT="10046 trace name context forever, level 1"
EVENT="10053 trace name context forever, level 1"
■■■RBO/CBOのどちらを使用しているか見分ける方法
PLAN_TABLE 表の情報から確認可能。
PLAN_TABLE表のカラムID=0のレコードを検索し、POSITION カラムが NULL ならばRBO、
何か入っていれば CBO が使用されている。
explain plan for select count(*) from emp;
解析されました。
select decode(nvl(position, -1), -1, 'RBO', 'CBO')
from plan_table where id=0;
DECODE(NV
---------
CBO
...
SELECT /*+ RULE
EMPNO...*/ のようにCBOでもヒント句にRULE指定があればRBOになる。
※SQL文にRULE以外のヒントが与えられている場合、CBOになる。
RULEヒントとINDEXヒント(RULE以外のヒント)が混在しているような場合、CBOとなる。
統計情報が作成されているテーブルがあるとCBOになる。
どれかのテーブルでパラレル動作が指定されていればCBOになる。(パーティション表も)
■■■インストール関係
・インストール後、Oracle HTTPDが上がっていた場合の落し方
$ORACLE_HOME/Apache/Apache/bin 配下にある apachectl コマンドで落とす。
% apachectl stop
・オラクルエージェント(Oracle Intelligent Agent)の落し方
psでみると以下の様なデーモンがあるのでそれと判る。
oracle 13069 1 0 14:47:28 pts/8 0:00 /bin/sh /opt/oracle/product/9.2.0/bin/dbsnmpwd
oracle 13073 13069 0 14:47:28 pts/8 0:01 /opt/oracle/product/9.2.0/bin/dbsnmp
・落し方
% agentctl stop agent
・上げ方
% agentctl start agent
・状態確認
% agentctl status agent
■■■SGA値の確認方法
sqlplusを使用して確認
SQL> show sga
Total System Global Area 72123504 bytes ←●SGA全体サイズとなります。
Fixed Size 279664 bytes
Variable Size 67108864 bytes
Database Buffers 4194304 bytes
Redo Buffers 540672 bytes
SGAの各領域についての内容について
----------------------------------
● Total System Global Area
- すべての領域を足したSGA全体のサイズになります。
Fixed Size
- データベースやインスタンスの状態についての全体的な情報が格納される領域になります。
(バックグラウンドプロセスによりアクセスされます。)
- ユーザデータは格納されません。
- この領域は通常 100KB以下になります。
Variable Size
- この領域は、以下の初期化パラメータにより影響を受ける領域になります。
shared_pool_size
large_pool_size
java_pool_size
- 上記パラメータとは別にシステムが内部的に導出したサイズが含まれます。
Database Buffers
- この領域は、データブロックをキャッシュするために使用する領域になります。
サイズは、db_block_buffers * block size になります。
Redo Buffers
- データベースに対する変更情報(Redo情報)を格納するために使用される領域になります。
- 最小サイズは、LOG_BUFFERパラメータで指定した値が、内部的に決められたRedoレコードの
最大サイズより小さい場合は、この値まで引き上げられます。
※初期パラメータの値も以下で確認できます。
SQL> show parameter sga_max_size
sga_max_size big integer 23460696
■PGAの値の確認方法
sqlplusを使用して確認できます。(v$pgastat による詳細情報取得方法)
select * from v$pgastat
NAME VALUE UNIT
--------------------------------- ---------- ------------
aggregate PGA target parameter 25165824 bytes
aggregate PGA auto target 17510400 bytes
global memory bound 1257472 bytes
total PGA inuse 5700608 bytes←●使用中のPGAメモリとなります
total PGA allocated 10241024 bytes←●PGAに割り当てられたメモリ総計となります
maximum PGA allocated 14727168 bytes
total freeable PGA memory 0 bytes
PGA memory freed back to OS 0 bytes
▲R9.2.0 (16項目)
-----------------
**aggregate PGA target parameter
--PGA_AGGREGATE_TARGET 初期化パラメータの現在の設定値
aggregate PGA auto target
--PGAメモリの目標値
global memory bound
--使用できるSQL作業領域の最大値
total PGA inuse
--現在、PGAが使用しているメモリの合計 ←●使用中のPGAメモリとなります
total PGA allocated
--現在、PGAに割り当てられているメモリの合計 ←●PGAに割り当てられたメモリ総計となります
maximum PGA allocated
--過去にPGAに割り当てられていたメモリの最大値
**total freeable PGA memory
--インスタンス全体で、現在 PGAとして割当て可能な空き領域のサイズ
**PGA memory freed back to OS
--PGAとして割当てられていたメモリのうち、解放され OSに戻されたサイズ
total PGA used for auto workareas
--自動調節機能により割り当てられたSQL作業領域で、現在使用しているPGAメモリの合計
maximum PGA used for auto workareas
--自動調節機能で使用されたメモリの最大値
total PGA used for manual workareas
--MANUAL で割り当てたSQL作業領域で、現在使用しているPGAメモリの合計
maximum PGA used for manual workareas
--MANUAL で使用されたメモリの合計
**over allocation count
--インスタンス起動以降、PGA_AGGREGATE_TARGETの値を超えて追加割当てを行った回数
**bytes processed
--インスタンスの起動以後、メモリー集中型のSQL 演算子により処理された累積バイト数
**extra bytes read/written
--インスタンスの起動以後、入力データの追加受渡し中に処理された累積バイト数
**cache hit percentage
--PGAメモリ使用のパフォーマンス確認のため内部的に算出された値。
100% は最適な量のPGAメモリーが使用されたことを意味する
オラクル専用ページへもどる