このブログを検索

ラベル 監視用 の投稿を表示しています。 すべての投稿を表示
ラベル 監視用 の投稿を表示しています。 すべての投稿を表示

2011年6月15日水曜日

ASMディスクグループの容量や使用率を調べる

v$asm_diskgroupでディスクグループの情報を得られます。
RATIOが一定量を超えないように監視スクリプトを作成しています。
set pages 10000
set linesize 100
col name format a20
col total_mb for 999,999,999
col free_mb for 999,999,999
col ratio for 999.99
col state for a10
select group_number, name, total_mb, free_mb,
  round(((total_mb-free_mb)/total_mb)*100 ,2) as ratio,
  state
from v$asm_diskgroup;
実行結果は次の通り。
GROUP_NUMBER NAME                     TOTAL_MB      FREE_MB   RATIO STATE
------------ -------------------- ------------ ------------ ------- -----------
           1 DATA                      708,468      500,535   29.35 CONNECTED
           2 LOG                       493,804      481,292    2.53 CONNECTED

2011年4月3日日曜日

マテリアライズドビューの自動同期対象テーブルを探す

マテリアライズドビューの自動同期対象を探します。
自動同期のジョブは、リフレッシュグループにあるテーブルに対して実行します。
ジョブとリフレッシュグループの紐付けはマテリアライズドビューの同期エラーを解決するを参照。

リフレッシュグループのテーブル一覧は次の通り。
set pages 10000
set lines 120
column RNAME FORMAT a20
column NAME FORMAT a40
select r.job,r.rname,c.name,c.broken
 from DBA_REFRESH r, DBA_REFRESH_CHILDREN c
 where r.REFGROUP=c.REFGROUP
  and r.rowner='INDEP1USER'
実行例は、次の通り。
わかりにくいですが、BROKEN=Nであれば自動同期をします。
JOB RNAME                NAME                                     BRO
---------- -------------------- ---------------------------------------- ---
       118 REFRESH_INDEP1       TBL_CONSENTLOG1                          N
       118 REFRESH_INDEP1       TBL_EXPORTCONSENTLOG                     N
       118 REFRESH_INDEP1       TBL_MYROOMCOMMENT1                       N
       118 REFRESH_INDEP1       TBL_MYROOMCOMMENTCONSENT1                N
       118 REFRESH_INDEP1       TBL_USERMYROOMCOMMENT1                   N
       118 REFRESH_INDEP1       TBL_USERMYROOMCOMMENTCONSENT1            N

2011年2月7日月曜日

待機しているセッションを調べる

DBサーバ作業中にコマンドが返ってこないなど問題のあるセッションを探すのに使うと効果的。
set time on
set pages 10000
set lines 110
col event for a60
col state for a18
col username for a15
col sid for 99999
select w.sid,s.username,w.state,w.event
from v$session s,v$session_wait w
where s.sid=w.sid
  and w.event not like '%Net message % client'
  and w.event not like 'rdbms ipc message';

   SID USERNAME   STATE                EVENT
------ ---------- -------------------- ----------------------------------------------------------
   536            WAITING              Streams AQ: qmn slave idle wait
   537            WAITING              Streams AQ: waiting for time management or cleanup tasks
   540            WAITING              Streams AQ: qmn coordinator idle wait
   548            WAITING              smon timer
   555            WAITING              pmon timer

セッションを一覧表示する

v$sessionは情報が多すぎるので用途によってクエリを使い分けると効果的。

1.接続元とログイン時間を中心に
SQL> 
set pages 10000
set lines 150
COLUMN USERNAME FORMAT a20
COLUMN STATUS FORMAT a10
COLUMN EVENT FORMAT a60
COLUMN PROGRAM FORMAT a50
COLUMN SID FORMAT 99999
alter session set nls_date_format='yyyy/mm/dd hh24:mi:ss';
select sid,serial#,program,username,logon_time,status
from v$session order by logon_time;

   SID    SERIAL# PROGRAM                                       USERNAME   LOGON_TIME          STATUS
------ ---------- --------------------------------------------- ---------- ------------------- ----------
   547          1 oracle@snwdb0.smc.indexweb.co.jp (RECO)                  2011/02/07 12:57:00 ACTIVE
   554          1 oracle@snwdb0.smc.indexweb.co.jp (PSP0)                  2011/02/07 12:57:00 ACTIVE
   553          1 oracle@snwdb0.smc.indexweb.co.jp (MMAN)                  2011/02/07 12:57:00 ACTIVE
   552          1 oracle@snwdb0.smc.indexweb.co.jp (DBW0)                  2011/02/07 12:57:00 ACTIVE
   544          1 oracle@snwdb0.smc.indexweb.co.jp (MMNL)                  2011/02/07 12:57:00 ACTIVE
   545          1 oracle@snwdb0.smc.indexweb.co.jp (MMON)                  2011/02/07 12:57:00 ACTIVE
   546          1 oracle@snwdb0.smc.indexweb.co.jp (CJQ0)                  2011/02/07 12:57:00 ACTIVE
   555          1 oracle@snwdb0.smc.indexweb.co.jp (PMON)                  2011/02/07 12:57:00 ACTIVE
   548          1 oracle@snwdb0.smc.indexweb.co.jp (SMON)                  2011/02/07 12:57:00 ACTIVE
   549          1 oracle@snwdb0.smc.indexweb.co.jp (CKPT)                  2011/02/07 12:57:00 ACTIVE
   550          1 oracle@snwdb0.smc.indexweb.co.jp (LGWR)                  2011/02/07 12:57:00 ACTIVE
   551          1 oracle@snwdb0.smc.indexweb.co.jp (DBW1)                  2011/02/07 12:57:00 ACTIVE
   540          7 oracle@snwdb0.smc.indexweb.co.jp (QMNC)                  2011/02/07 12:57:10 ACTIVE
   537          2 oracle@snwdb0.smc.indexweb.co.jp (q000)                  2011/02/07 12:57:20 ACTIVE
   536          4 oracle@snwdb0.smc.indexweb.co.jp (q001)                  2011/02/07 12:57:20 ACTIVE
   527      19899 sqlplus@codev0.smc.indexweb.co.jp (TNS V1-V3) PERFSTAT   2011/02/07 23:23:39 ACTIVE

2.実行中のイベントを中心に
SQL> 
set pages 10000
set lines 120
COLUMN USERNAME FORMAT a20
COLUMN STATUS FORMAT a10
COLUMN EVENT FORMAT a60
COLUMN SID FORMAT 99999
alter session set nls_date_format='yyyy/mm/dd hh24:mi:ss';
select sid,serial#,username,event from v$session order by logon_time;

   SID   SERIAL# USERNAME   EVENT
------ ---------- ---------- ------------------------------------------------------------
   547         1            rdbms ipc message
   554         1            rdbms ipc message
   553         1            rdbms ipc message
   552         1            rdbms ipc message
   544         1            rdbms ipc message
   545         1            rdbms ipc message
   546         1            rdbms ipc message
   555         1            pmon timer
   548         1            smon timer
   549         1            rdbms ipc message
   550         1            rdbms ipc message
   551         1            rdbms ipc message
   540         7            Streams AQ: qmn coordinator idle wait
   537         2            Streams AQ: waiting for time management or cleanup tasks
   536         4            Streams AQ: qmn slave idle wait
   527     19899 PERFSTAT   SQL*Net message to client

2011年2月6日日曜日

表領域の使用状況

表領域単位にデータファイルの使用状況を確認します。
outer joinにしているのは、空き容量が枯渇した場合にdba_free_spaceのレコードがなくなるため。

UNDO表領域は実際の使用量よりはかなり多めに計算されることに注意してください。
これは、解放されたブロックをすぐに再利用できるように、設定された期間(900秒が一般的)は論理削除をしているためです。
再利用可能なexpiredエクステントも使用中とみなされています。
 
実運用監視では、UNDO表領域を監視対象から外し、別の手段で検知するのがベターです。
set time on
set pagesize 10000
set linesize 100
col autoextensible heading "AUTO" for a4
col tablespace_name format a25
col sizemb for 999,999
col usedmb for 999,999
col freemb for 999,999
col ratio for 999.99
select dbf.tablespace_name,
  dbf.bytes/1024/1024 as sizemb,
  (dbf.bytes - sum(nvl(fsp.bytes,0)))/1024/1024 as usedmb,
  sum(nvl(fsp.bytes,0))/1024/1024 as freemb,
  (1-(sum(nvl(fsp.bytes,0))/dbf.bytes))*100 ratio,
  dbf.autoextensible
from sys.dba_free_space fsp
  right outer join (
    select tablespace_name,sum(bytes) as bytes,autoextensible
    from sys.dba_data_files
    group by tablespace_name,autoextensible
  ) dbf
  on dbf.tablespace_name=fsp.tablespace_name
group by dbf.tablespace_name,dbf.bytes,dbf.autoextensible
order by dbf.tablespace_name,autoextensible;

実行例は次の通り。
SIZEMB・・・表領域サイズ
USEDMB・・・使用サイズ
FREEMB・・・未使用サイズ
RATIO・・・使用率
AUTO・・・自動拡張

TABLESPACE_NAME             SIZEMB   USEDMB   FREEMB   RATIO AUTO
------------------------- -------- -------- -------- ------- ----
FUKA_MASTER_DATA             2,048    1,335      713   65.19 YES
FUKA_MASTER_IDX              1,024      442      582   43.16 YES
MVLOG_MASTER_DATA              512      121      391   23.63 YES
PERFSTAT_DATA                1,024      689      335   67.29 YES
SYSAUX                       2,048      285    1,763   13.90 YES
SYSTEM                       2,048      352    1,696   17.17 YES
UNDOTBS1                    32,749       44   32,706     .13 YES