Search

oracle 調査用コマンド

2015年10月19日

DBサーバ接続中のセッションの特定

>SELECT SID
     , SERIAL#
     , USERNAME
     , OSUSER
     , MACHINE
     , PROGRAM
  FROM V$SESSION
 order by USERNAME
;

SID   SERIAL# USERNAME    OSUSER  MACHINE       PROGRAM

----- ------- --------    ------  -------      --------

  139       1      SYS hoge\hoge   hoge\A1  sqlplus.exe

使用中のプロセスを表示

>SELECT PID
     , USERNAME
     , SERIAL#
     , PGA_USED_MEM
     , PGA_ALLOC_MEM
     , PGA_FREEABLE_MEM
     , PGA_MAX_MEM,PROGRAM
  FROM V$PROCESS
;

PID  USERNAME SERIAL#  PGA_USED_MEM PGA_ALLOC_MEM PGA_FREEABLE_MEM PGA_MAX_MEM PROGRAM

----   ------  ------  ------------ ------------- ---------------- ----------- -------

  1         0       0             0             0                0           0 PSEUDO  

  2    SYSTEM       1        496078        581218                0    581218   ORACLE.EXE (PMON)

SGAの状態を表示

>select * from V$SGASTAT;

POOL         NAME                            BYTES
------------ -------------------------- ----------
             fixed_sga                   *********
             buffer_cache                *********
             log_buffer                  *********
shared pool  K2Q latches                 *********
shared pool  kso req alloc               *********

>show sga

Total System Global Area 167772160 bytes(↓の合計値)
Fixed Size                 1247900 bytes
Variable Size             79693156 bytes
Database Buffers          83886080 bytes
Redo Buffers               2945024 bytes

自動管理のメモリを表示

>select component
     , current_size curr_size
     , min_size
     , max_size
     ,user_specified_size uss
     , granule_size gs 
  from v$memory_dynamic_components 
 where current_size > 0
;

COMPONENT               CURR_SIZE   MIN_SIZE   MAX_SIZE        USS         GS

---------------------- ---------- ---------- ---------- ---------- ----------

shared pool            ********** ********** ********** **********  *********

large pool             ********** ********** ********** **********  *********

java pool              ********** ********** ********** **********  *********

SGA Target             ********** ********** ********** **********  *********

DEFAULT buffer cache   ********** ********** ********** **********  *********

PGA Target             ********** ********** ********** **********  *********

プログラム・グローバル領域(PGA)を確認する。

>column name format a25

>select s.sid
     , se.osuser
     , se.machine
     , se.program
     , se.last_call_et
     , se.status
     , max(s.value) memory
  from v$sesstat s
          inner join v$statname n on (n.statistic# = s.statistic#)
          inner join v$session se on (se.sid = s.sid)
  where n.name = 'session pga memory'
  group by se.osuser, se.machine, se.program, s.sid, se.last_call_et, se.status
  order by se.machine, s.sid
;

       SID OSUSER      MACHINE           PROGRAM               LAST_CALL_ET   STATUS      MEMORY
---------- ----------- --------------- ----------------------- ------------ --------  ----------
       2 root     Server1           JDBC Thin Client               394 INACTIVE    1111111
       3 root     Server2           JDBC Thin Client                 13 INACTIVE    1111111

※セッションの状態について
 ACTIVE - セッションがSQLを実行中
 INACTIVE - 非アクティブで、制限が構成されていないか構成された制限を超えていないセッション
 KILLED - 消去予定のマーク付きセッション
 CACHED - Oracle*XAで使用するために一時的にキャッシュに入っているセッション
 SNIPED - 構成された制限(リソース・マネージャのコンシューマ・グループに指定されたリソース制限またはユーザー・プロファイルで指定されたアイドル時間など)のいくつかを超えている非アクティブ・セッション。このようなセッションが再びアクティブになることはできない。
※LAST_CALL_ETはセッションのアイドル時間,最後に処理を行ってからの経過時間を表す

実行中のSQLを取得する

SET LINE 1000; 
SET PAGES 1000; 
COLUMN SQL_TEXT FORMAT A100; 
COLUMN PROGRAM FORMAT A20; 
COLUMN PROGRAM FORMAT A20; 
COLUMN LOGON_USER FORMAT A20; 
SELECT SES.USERNAME,
       SES.SID,
       SES.SERIAL#,
       SES.STATUS,
       SES.MACHINE,
       SES.LAST_CALL_ET,
       SQL.SQL_TEXT
  FROM V$SESSION SES, 
       V$SQLAREA SQL 
 WHERE SES.SQL_ADDRESS    = SQL.ADDRESS(+) 
   AND SES.SQL_HASH_VALUE = SQL.HASH_VALUE 
   AND SES.TYPE           = 'USER' 
   AND SES.STATUS         = 'ACTIVE'
 ORDER BY SES.LOGON_TIME
;

USERNAME     SID    SERIAL# STATUS   MACHINE    LAST_CALL_ET SQL_TEXT
---------- ----- ---------- -------- ---------- ------------ ----------------------------------------------------------------------------------------------------
SYS          135       2072 ACTIVE   database              0  SELECT SES.USERNAME,        SES.SID,        SES.SERIAL#,        SES.STATUS,        SES.MACHINE,
                                                              SES.LAST_CALL_ET,        SQL.SQL_TEXT   FROM V$SESSION SES,        V$SQLAREA SQL  WHERE SES.SQL_A
                                                              DDRESS    = SQL.ADDRESS(+)    AND SES.SQL_HASH_VALUE = SQL.HASH_VALUE    AND SES.TYPE           = 'U
                                                              SER'    AND SES.STATUS         = 'ACTIVE'  ORDER BY SES.LOGON_TIME

※LAST_CALL_ETはセッションのアイドル時間,最後に処理を行ってからの経過時間を表す

一時表領域の容量を確認する。

SELECT d.tablespace_name "Name",
        TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)",
        TO_CHAR(NVL(t.hwm, 0)/1024/1024,'99999999.999')  "HWM (M)",
        TO_CHAR(NVL(t.hwm / a.bytes * 100, 0), '990.00') "HWM % " ,
        TO_CHAR(NVL(t.bytes/1024/1024, 0),'99999999.999') "Using (M)",
        TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Using %"
   FROM sys.dba_tablespaces d,
        (select tablespace_name, sum(bytes) bytes
         from dba_temp_files group by tablespace_name) a,
        (select tablespace_name, sum(bytes_cached) hwm, sum(bytes_used) bytes
         from gv$temp_extent_pool group by tablespace_name) t
  WHERE d.tablespace_name = a.tablespace_name(+)
    AND d.tablespace_name = t.tablespace_name(+)
    AND d.extent_management like 'LOCAL'
    AND d.contents like 'TEMPORARY';

Name                           Size (M)        HWM (M)       HWM %   Using (M)     Using %
------------------------------ --------------- ------------- ------- ------------- -------
TEMP                                10,240.000      1820.000   17.77          .000    0.00