オラクルメモ

オラクルについてのメモ
最近、販売管理システムが遅いので、システム担当の協力を得ながらチューンナップなどしています。

その中で、いくつかをまとめました。

  • 基本動作
  • → 自身のバージョンを確認する


    SQL> select * from v$version;

    BANNER
    -------------------------------------------------------
    Oracle8i Release 〜〜 - Production
    PL/SQL Release 〜〜 - Production
    CORE 〜〜 - Production
    TNS for Solaris: Version 〜〜 - Production
    NLSRTL Version 〜〜 - Production

    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
  • 以前、楽天証券の障害が発生した際も、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
    -------- ----------
    Free 50120716
    Used 212792816

    SQL>


    → SHARED_POOLをクリアする


    SQL> ALTER SYSTEM FLUSH SHARED_POOL;

    システムが変更されました。

    SQL>

    新しいオラクルの場合は、わざわざフラッシュしなくても良いらしいです。

    → SHARED_POOLを増やす

    ${ORACLE_HOME}/dbs/init.oraを編集して再起動します。
    編集する行は、shared_pool_sizeと書かれた部分で、バイト単位で指定します。
    shared_pool_size = 3500000