オラクルについてのメモ
最近、販売管理システムが遅いので、システム担当の協力を得ながらチューンナップなどしています。
その中で、いくつかをまとめました。
- 基本動作
- SHARED_POOL
→ 自身のバージョンを確認する
SQL> select * from v$version; BANNER SQL> |
→ プロセスリストを確認する
SQL> set pages 200 SQL> set lines 2000 SQL> col USERNAME for a8 SQL> col OSUSER for a16 SQL> col MACHINE for a20 SQL> select STATUS,SID,SERIAL#,USERNAME,USER#,OSUSER,MACHINE,PROCESS 2 from v$session; STATUS SID SERIAL# USERNAME USER# OSUSER MACHINE PROCESS 13行が選択されました。 SQL> |
→ セッションを強制終了させる
SQL> alter system kill session '15,5522'; |
15はSID、5522はSERIAL#です。
以前、楽天証券の障害が発生した際も、shared poolが足りないことに起因するものでした。
Oracleの場合には、shared poolを持っていますが、それが少なくなるとエラーが発生したり、クエリが遅くなったりします。
→ SHARED_POOLの利用率取得
SQL> SELECT DECODE(NAME, 'free memory', 'Free', 'Used') TYPE, 2 SUM(BYTES) VALUE 3 FROM v$sgastat 4 WHERE POOL='shared pool' 5 GROUP BY DECODE(NAME, 'free memory', 'Free', 'Used') 6 ; TYPE VALUE SQL> |
→ SHARED_POOLをクリアする
SQL> ALTER SYSTEM FLUSH SHARED_POOL; システムが変更されました。 SQL> |
新しいオラクルの場合は、わざわざフラッシュしなくても良いらしいです。
→ SHARED_POOLを増やす
${ORACLE_HOME}/dbs/init.oraを編集して再起動します。
編集する行は、shared_pool_sizeと書かれた部分で、バイト単位で指定します。
shared_pool_size = 3500000