ロック実行しているコマンドとロックの種類
Username:
Oracleユーザ名
SID:
セッション識別子(V$SESSION.SID)
Table/Sequence Name:
ロック対象の表または順序の名前。Lock Typeが
TM - DML enqueue
DL - Direct loader/parallel index create
SQ - Sequence number enqueue
の場合に対象オブジェクトを特定することができます。
Command:
実行中のコマンドの種類
Lock Held:
保持しているロックのモード
Lock Requested:
要求しているロックのモード
ID1 - ID2:
ロック識別子(V$LOCK.ID1およびID2)
Lock Type:
ロックの種類
下記の出力例では、ユーザHRで接続しているSID=9のセッションがHR.EMPLOYEES表に対するTMロックをRow Exclusive、TXロックをExclusiveで獲得しています。
(Username,SIDがブランクの2レコード目は1レコード目と同じセッションの情報をあらわしています。結果はUsername,SIDでソートされて表示されるので、同じセッションの情報は続けて出力されます。)
また、ユーザSHで接続しているSID=8のセッションがDELETEを実行しようとして、SID=9のセッションが獲得しているTXロック(ID1,ID2が同値)をExclusiveで要求していることも読み取れます。(TXロックをExclusiveで要求するのは行ロック競合の場合です。)
set echo off set lines 200 set pagesize 66 break on Kill on sid on username on terminal column Kill heading 'Kill String' format a13 column res heading 'Resource Type' format 999 column id1 format 9999990 column id2 format 9999990 column locking heading 'Lock Held/Lock Requested' format a40 column lmode heading 'Lock Held' format a20 column request heading 'Lock Requested' format a20 column serial# format 99999 column username format a10 heading "Username" column terminal heading Term format a6 column obj format a30 heading "Table/Sequence Name" column owner format a9 column LAddr heading "ID1 - ID2" format a18 column Lockt heading "Lock Type" format a40 column command heading "Command" format a25 column sid format 990 select nvl(s.username,'Internal') username, l.sid, nvl(s.terminal,'None') terminal, decode(l.type,'TM',u.name||'.'||substr(t.name,1,20), 'DL',u.name||'.'||substr(t.name,1,20), 'SQ',u.name||'.'||substr(t.name,1,20),'None') obj, decode(command, 0,'None', 1,'CREATE TABLE', 2,'INSERT', 3,'SELECT', 4,'CREATE CLUSTER', 5,'ALTER CLUSTER', 6,'UPDATE', 7,'DELETE', 8,'DROP CLUSTER', 9,'CREATE INDEX', 10,'DROP INDEX', 11,'ALTER INDEX', 12,'DROP TABLE', 13,'CREATE SEQUENCE', 14,'ALTER SEQUENCE', 15,'ALTER TABLE', 16,'DROP SEQUENCE', 17,'GRANT', 18,'REVOKE', 19,'CREATE SYNONYM', 20,'DROP SYNONYM', 21,'CREATE VIEW', 22,'DROP VIEW', 23,'VALIDATE INDEX', 24,'CREATE PROCEDURE', 25,'ALTER PROCEDURE', 26,'LOCK TABLE', 27,'NO OPERATION', 28,'RENAME', 29,'COMMENT', 30,'AUDIT', 31,'NOAUDIT', 32,'CREATE DATABASE LINK', 33,'DROP DATABASE LINK', 34,'CREATE DATABASE', 35,'ALTER DATABASE', 36,'CREATE ROLLBACK SEGMENT', 37,'ALTER ROLLBACK SEGMENT', 38,'DROP ROLLBACK SEGMENT', 39,'CREATE TABLESPACE', 40,'ALTER TABLESPACE', 41,'DROP TABLESPACE', 42,'ALTER SESSION', 43,'ALTER USER', 44,'COMMIT', 45,'ROLLBACK', 46,'SAVEPOINT', 47,'PL/SQL EXECUTE', 48,'SET TRANSACTION', 49,'ALTER SYSTEM SWITCH LOG', 50,'EXPLAIN', 51,'CREATE USER', 52,'CREATE ROLE', 53,'DROP USER', 54,'DROP ROLE', 55,'SET ROLE', 56,'CREATE SCHEMA', 57,'CREATE CONTROL FILE', 58,'ALTER TRACING', 59,'CREATE TRIGGER', 60,'ALTER TRIGGER', 61,'DROP TRIGGER', 62,'ANALYZE TABLE', 63,'ANALYZE INDEX', 64,'ANALYZE CLUSTER', 65,'CREATE PROFILE', 66,'DROP PROFILE', 67,'ALTER PROFILE', 68,'DROP PROCEDURE', 69,'-', 70,'ALTER RESOURCE COST', 71,'CREATE SNAPSHOT LOG', 72,'ALTER SNAPSHOT LOG', 73,'DROP SNAPSHOT LOG', 74,'CREATE SNAPSHOT', 75,'ALTER SNAPSHOT', 76,'DROP SNAPSHOT', 77,'CREATE TYPE', 78,'DROP TYPE', 79,'ALTER ROLE', 80,'ALTER TYPE', 81,'CREATE TYPE BODY', 82,'ALTER TYPE BODY', 83,'DROP TYPE BODY', 84,'DROP LIBRARY', 85,'TRUNCATE TABLE', 86,'TRUNCATE CLUSTER', 87,'CREATE BITMAP FILE', 88,'ALTER VIEW', 89,'DROP BITMAP FILE', 90,'SET CONSTRAINTS', 91,'CREATE FUNCTION', 92,'ALTER FUNCTION', 93,'DROP FUNCTION', 94,'CREATE PACKAGE', 95,'ALTER PACKAGE', 96,'DROP PACKAGE', 97,'CREATE PACKAGE BODY', 98,'ALTER PACKAGE BODY', 99,'DROP PACKAGE BODY', command||' - ???') command, decode(l.lmode,1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share', 5,'Share Row Exclusive', 6,'Exclusive','NONE') lmode, decode(l.request,1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share', 5,'Share Row Exclusive', 6,'Exclusive','NONE') request, l.id1||'-'||l.id2 Laddr, l.type||' - '|| decode(l.type, 'BL','Buffer hash table instance', 'CF',' Control file schema global enqueue', 'CI','Cross-instance function invocation instance', 'CU','Cursor bind', 'DF','Data file instance', 'DL','Direct loader parallel index create', 'DM','Mount/startup db primary/secondary instance', 'DR','Distributed recovery process', 'DX','Distributed transaction entry', 'FS','File set', 'HW','Space management operations on a specific segment', 'IN','Instance number', 'IR','Instance recovery serialization global enqueue', 'IS','Instance state', 'IV','Library cache invalidation instance', 'JQ','Job queue', 'KK','Thread kick', 'LA','Library cache lock instance (A=namespace)', 'LB','Library cache lock instance (B=namespace)', 'LC','Library cache lock instance (C=namespace)', 'LD','Library cache lock instance (D=namespace)', 'LE','Library cache instance lock (E=namespace)', 'LF','Library cache instance lock (F=namespace)', 'LG','Library cache instance lock (G=namespace)', 'LH','Library cache instance lock (H=namespace)', 'LI','Library cache instance lock (I=namespace)', 'LJ','Library cache instance lock (J=namespace)', 'LK','Library cache instance lock (K=namespace)', 'LL','Library cache instance lock (L=namespace)', 'LM','Library cache instance lock (M=namespace)', 'LN','Library cache instance lock (N=namespace)', 'LO','Library cache instance lock (O=namespace)', 'LP','Library cache instance lock (P=namespace)', 'MM','Mount definition gloabal enqueue', 'MR','Media recovery', 'NA','Library cache pin instance (A=namespace)', 'NB','Library cache pin instance (B=namespace)', 'NC','Library cache pin instance (C=namespace)', 'ND','Library cache pin instance (D=namespace)', 'NE','Library cache pin instance (E=namespace)', 'NF','Library cache pin instance (F=namespace)', 'NG','Library cache pin instance (G=namespace)', 'NH','Library cache pin instance (H=namespace)', 'NI','Library cache pin instance (I=namespace)', 'NJ','Library cache pin instance (J=namespace)', 'NL','Library cache pin instance (K=namespace)', 'NK','Library cache pin instance (L=namespace)', 'NM','Library cache pin instance (M=namespace)', 'NN','Library cache pin instance (N=namespace)', 'NO','Library cache pin instance (O=namespace)', 'NP','Library cache pin instance (P=namespace)', 'NQ','Library cache pin instance (Q=namespace)', 'NR','Library cache pin instance (R=namespace)', 'NS','Library cache pin instance (S=namespace)', 'NT','Library cache pin instance (T=namespace)', 'NU','Library cache pin instance (U=namespace)', 'NV','Library cache pin instance (V=namespace)', 'NW','Library cache pin instance (W=namespace)', 'NX','Library cache pin instance (X=namespace)', 'NY','Library cache pin instance (Y=namespace)', 'NZ','Library cache pin instance (Z=namespace)', 'PF','Password file', 'PI','Parallel operation', 'PR','Process startup', 'PS','Parallel operation', 'QA','Row cache instance (A=cache)', 'QB','Row cache instance (B=cache)', 'QC','Row cache instance (C=cache)', 'QD','Row cache instance (D=cache)', 'QE','Row cache instance (E=cache)', 'QF','Row cache instance (F=cache)', 'QG','Row cache instance (G=cache)', 'QH','Row cache instance (H=cache)', 'QI','Row cache instance (I=cache)', 'QJ','Row cache instance (J=cache)', 'QL','Row cache instance (K=cache)', 'QK','Row cache instance (L=cache)', 'QM','Row cache instance (M=cache)', 'QN','Row cache instance (N=cache)', 'QO','Row cache instance (O=cache)', 'QP','Row cache instance (P=cache)', 'QQ','Row cache instance (Q=cache)', 'QR','Row cache instance (R=cache)', 'QS','Row cache instance (S=cache)', 'QT','Row cache instance (T=cache)', 'QU','Row cache instance (U=cache)', 'QV','Row cache instance (V=cache)', 'QW','Row cache instance (W=cache)', 'QX','Row cache instance (X=cache)', 'QY','Row cache instance (Y=cache)', 'QZ','Row cache instance (Z=cache)', 'RT','Redo thread global enqueue', 'SC','System commit number instance', 'SM','SMON', 'SN','Sequence number instance', 'SQ','Sequence number enqueue', 'SS','Sort segment', 'ST','Space transaction enqueue', 'SV','Sequence number value', 'TA','Generic enqueue', 'TM','DML enqueue', 'TS',decode(l.id2,0,'Temporary segment enqueue', 'New block allocation enqueue lock'), 'TT','Temporary table enqueue', 'TX','Transaction enqueue', 'UL','User supplied', 'UN','User name', 'US','Undo segment DDL', 'WL','Being-written redo log instance', '????') Lockt from V$LOCK l, V$SESSION s, SYS.USER$ u, SYS.OBJ$ t where l.sid = s.sid and t.obj# = decode(l.type,'TM',l.id1,'DL',l.id1,'SQ',l.id1,1) and u.user# = t.owner# and s.type != 'BACKGROUND' order by 1,2,5 ; Username SID Term Table/Sequence Name Command Lock Held Lock Requested ID1 - ID2 Lock Type ---------- ---- ------ ------------------------------ ------------------------- -------------------- -------------------- ------------------ ---------------------------------------- HR 9 pts/18 HR.EMPLOYEES NONE Row Exclusive NONE 28788-0 TM - DML enqueue None NONE Exclusive NONE 262163-328 TX - Transaction enqueue SH 8 pts/5 None DELETE NONE Exclusive 262163-328 TX - Transaction enqueue .....
Reference: KROWN-63565 各セッションが実行中のコマンドの種類と獲得または要求しているロックの種類を確認するスクリプト
LOCKのモニタスクリプト
v$lock.typeがTX(Transaction)で、ID1・ID2が同じ値の場合競合となる。
また、lmodeがXのセッションはrequestがXのセッションをロックする意味である。
col username for a15 col requested for a9 select s.username, s.sid, s.serial#, l.type "LOCK TYPE", l.id1, l.id2, decode(l.lmode,0,'NONE', 1,'NULL', 2,' RS', 3,' RX', 4,' S', 5,' SRX', 6,' X', ' ?') HELD, decode(l.request,0,' NONE', 1,' NULL', 2,' RS', 3,' RX', 4,' S', 5,' SRX', 6,' X', ' ?') REQUESTED from v$lock l,v$session s where l.sid = s.sid and s.username like upper('%%') order by s.sid, l.type; USERNAME SID SERIAL# LO ID1 ID2 HELD REQUESTED --------------- -------- ------- -- ---------- ---------- ---- --------- LTO 5 15 TM 2294 0 RX NONE LTO 5 15 TM 2295 0 RX NONE LTO 5 15 TX 262167 87 X NONE LTO2 6 35 TM 2294 0 RX NONE LTO2 6 35 TM 2295 0 RX NONE LTO2 6 35 TX 262167 87 NONE X LTO3 9 17 TM 2294 0 RX NONE LTO3 9 17 TM 2295 0 RX NONE LTO3 9 17 TX 262167 87 NONE X LTO3 9 17 TX 196636 87 X NONE
拙者の修正したスクリプト:
select /*+ rule */ s.username, s.sid, s.serial#, l.type "LOCK TYPE", l.id1||'-'||l.id2 id1_id2, decode(l.lmode,0,'NONE', 1,'NULL', 2,' RS', 3,' RX', 4,' S', 5,' SRX', 6,' X', ' ?') HELD, decode(l.request,0,' NONE', 1,' NULL', 2,' RS', 3,' RX', 4,' S', 5,' SRX', 6,' X', ' ?') REQUESTED from v$lock l,v$session s where l.sid = s.sid and s.username like upper('%%') order by id1_id2, s.sid, l.type;
Reference:
KROWN-17289 LOCKを監視するスクリプト
KROWN-100077 V$LOCK, V$ENQUEUE_LOCK, V$TRANSACTION_ENQUEUE の検索に時間がかかる
KROWN-71034
シングルインスタンスロック情報の取得
概要 ハング時に取得する情報およびその取得方法(Oracle9i以降対応版 シングルインスタンス対応)
内容:
[概要]
Oracleがハングしたと考えられる場合に取得する情報とその取得方法を説明します。
Oracleがハングしたと考えられる状況の原因を特定するためには、Oracleが現在
どのような状況にあるのかを確認する必要があります。そのような場合に一般的に
取得すべき情報を以下に示します。
注意1: 本文書にある情報を取得すべきか否か、お客様自身で判断することができない
場合、現在の状況を弊社カスタマーサポートまでお問合せください。
その後サポートアナリストの指示に従ってください。
注意2: 復旧を最優先するためにサポートアナリストの指示を待つ時間的余裕がない
場合は、復旧作業(OS又はOracle再起動)前に以下の情報の取得を検討して
ください。
注意3: RAC環境を前提としたハング時に採取する情報およびその取得方法については、
以下の情報を参照してください。
KROWN文書番号:20667 OPS/RAC環境でのハング時に取得すべき情報
注意4: SQL*Plus で接続するユーザは sysユーザ(as sysdba)で実施してください。
もし、sysユーザで接続ができない場合には以下の KROWN:101159 で案内して
いる SQL*Plus の -prelim オプションで接続後、以下で説明している方法で
資料を採取してください。
SQL*Plus の -prelim オプションを使用する場合
^^^^^^^^^^^^
[対象リリース]
Oracle Database 11g Release 1(11.1.0)
Oracle Database 10g Release 2(10.2.0)
Oracle Database 10g Release 1(10.1.0)
Oracle9i Database Release 2(9.2.0)
Oracle9i Database Release 1(9.0.1)
[対象プラットフォーム]
すべてのプラットフォーム
[詳細]
取得方法:
問題のハング状態が発生しており、情報採取時時点においても継続中であることを確認し
たうえで以下のように情報を取得します。Oracleが稼動するOS環境に依存して取得する情
報に差があります。
- Unix系プラットフォームのOracleを利用している場合:
下記の1,2の取得情報を約3分間隔で3回取得します。
- WindowsプラットフォームのOracleを利用している場合:
下記の1,(可能であれば 2'も) の取得情報を約3分間隔で3回取得します。
- Windowsプラットフォームの以下のプラットフォームおよびバージョン以外では
lockchk10win.sql を使用してください。
Windows x86 10.2.0.1 以降
Windows x86-64,ia64 10.2.0.4 以降
* 詳細は[補足] の以下を参照してください。
■Windowsプラットフォームに関する注意
- HP-UX プラットフォームのOracle 10.2.0 を利用している場合:
リリースによっては short stack が出力されません。
詳細は KROWN:126057, KROWN:126055 を参照してください。
取得情報:
1. SQL*Plusを使用し、DBA権限を持つユーザで接続してから、データ取得対照のデータベース
のリリースに応じたスクリプト(lockchk9.sql、lockchk10.sql、lockchk10win.sql)を実行し、
結果をSPOOLします。(以下lockchk9.sqlと表記されている部分は適宜lockchk10.sqlもしくは
lockchk10win.sqlと読み替えて実行してください。
lockchk9.sql は9.2.0.6 / 10.1.0.3 以前を実行対象としています。
lockchk10.sql は9.2.0.7 / 10.1.0.4 / 10.2.0.1 以降のWindowsを除くプラットフォームを
実行対象としています。 ~~~~~~~~~~~~
lockchk10win.sql は9.2.0.7 / 10.1.0.4 / 10.2.0.1 以降のWindowsプラットフォームを
実行対象としています。 ~~~~~~~
<注意> 3回取得しますが、その際にSPOOL FILE名は重複しないように指定してください。
lockchk9.sql内でSYSTEM STATE DUMPとHANGANALYZEの情報を取得しています。トレース
ファイルは、初期化パラメータ USER_DUMP_DEST で指定されるディレクトリに出力され
ます。
<注意> lockchk9.sqlではSYSTEM STATE DUMPが完全に出力されるようにセッション単位
で初期化パラメータMAX_DUMP_FILE_SIZEをUNLIMITEDに設定しています。トレー
スファイル出力先のディレクトリには十分な領域があることを事前に確認して
ください。
2. ps コマンド: ps -elf の結果をリダイレクトしてファイルに出力します。
2'. Windowsプラットフォームで、スレッドの情報を取得できるツール(PSLIST.EXE 等)が
ある場合は、その実行結果をファイルにリダイレクトします。
※現在使用可能な最新バージョンはv1.82です。
pslist v1.82 の場合) pslist -d > pslist1.txt
注意: pslist でスレッドの情報を出力するためのパラメータについては、 pslist
のヘルプから使用可能なパラメータを確認してください。なお、PSLIST.EXEの
使用例の詳細は、KROWN文書番号:26845を参照してください。
«実行例»
注意4 に記載されている SQL*Plus の prelim オプションを使用する場合には
スクリプトによる取得ができないので sqlplus で取得する情報については以下で
説明している方法で採取してください。
SQL*Plus -prelim オプションを使用する場合
^^^^^^^^^
- Windowsプラットフォーム上のOracle9i R9.2.0での取得例:
1. ORACLE_SIDの指定
コマンド・プロンプトで、以下のように実行します。
C:\TEMP> SET ORACLE_SID=ORCL (<= ここではORACLE_SIDをORCLと仮定します。)
C:\TEMP> ECHO %ORACLE_SID%
ORCL (<= 設定したORACLE_SIDが正しく返されることを確認します。)
2. 上記ORACLE_SIDを設定したコマンド・プロンプト上にて、以下のように
情報取得を行います。ここでは pslist のバージョンは v1.82 と仮定します。
1度目:
C:\TEMP> sqlplus "/ as sysdba" @lockchk9.sql lockchk1.lst
(可能であれば) C:\TEMP> pslist -d > pslist1.txt
2度目: (1度目の取得の約3分後に実行します)
C:\TEMP> sqlplus "/ as sysdba" @lockchk9.sql lockchk2.lst
(可能であれば) C:\TEMP> pslist -d > pslist2.txt
3度目: (2度目の取得の約3分後に実行します)
C:\TEMP> sqlplus "/ as sysdba" @lockchk9.sql lockchk3.lst
(可能であれば) C:\TEMP> pslist -d > pslist3.txt
- Unix系プラットフォーム上のOracle9i R9.2.0での取得例:
環境変数 ORACLE_SID に 接続先のORACLEのSID名が設定されていると仮定します。その
シェル上にて、以下のように情報取得を行います。
1度目:
% sqlplus "/ as sysdba" @lockchk9.sql lockchk1.lst
% ps -elf > ps1.txt
2度目: (1度目の取得の約3分後に実行します)
% sqlplus "/ as sysdba" @lockchk9.sql lockchk2.lst
% ps -elf > ps2.txt
3度目: (2度目の取得の約3分後に実行します)
% sqlplus "/ as sysdba" @lockchk9.sql lockchk3.lst
% ps -elf > ps3.txt
スクリプト:
■9.2.0.6 / 10.1.0.3 以前用スクリプト(lockchk9.sql)
--- begin [lockchk9.sql] --- define spoolfile = &1 spool &spoolfile alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'; alter session set timed_statistics = true; alter session set max_dump_file_size = UNLIMITED; set feedback on set term on set wrap on set trimspool on set pagesize 1000 set linesize 2000 set numwidth 10 select to_char(sysdate) start_time from dual; alter session set events 'immediate trace name systemstate level 10'; alter session set events 'immediate trace name hanganalyze level 3'; column host_name format a20 tru select instance_name, host_name, version, status, startup_time from v$instance; set echo on select * from v$session; select * from v$process; select * from v$bgprocess; select * from v$lock; select * from v$locked_object; select * from v$session_wait; select * from v$latch; select * from v$latchholder; select * from v$rowcache; /* 以下はMTS用 */ select * from v$dispatcher; select * from v$shared_server; select * from v$circuit; select * from v$queue; select * from v$dispatcher_rate; set echo off Prompt; Prompt Output file name is:; define spoolfile Prompt; Prompt ALERT.LOG and TRACE FILES are located in:; column host_name format a12 tru column name format a20 tru column value format a60 tru select distinct i.host_name, p.name, p.value from v$instance i, v$parameter p where p.name like '%_dump_dest' and p.name != 'core_dump_dest'; select to_char(sysdate) end_time from dual; spool off exit --- end [lockchk9.sql] ---
■9.2.0.7 / 10.1.0.4 / 10.2.0.1 以降用スクリプト(lockchk10.sql)
--- begin [lockchk10.sql] --- define spoolfile = &1 spool &spoolfile alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'; alter session set timed_statistics = true; alter session set max_dump_file_size = UNLIMITED; set feedback on set term on set wrap on set trimspool on set pagesize 1000 set linesize 2000 set numwidth 10 select to_char(sysdate) start_time from dual; alter session set events 'immediate trace name systemstate level 266'; alter session set events 'immediate trace name hanganalyze level 3'; column host_name format a20 tru select instance_name, host_name, version, status, startup_time from v$instance; set echo on select * from v$session; select * from v$process; select * from v$bgprocess; select * from v$lock; select * from v$locked_object; select * from v$session_wait; select * from v$latch; select * from v$latchholder; select * from v$rowcache; /* 以下はMTS用 */ select * from v$dispatcher; select * from v$shared_server; select * from v$circuit; select * from v$queue; select * from v$dispatcher_rate; set echo off Prompt; Prompt Output file name is:; define spoolfile Prompt; Prompt ALERT.LOG and TRACE FILES are located in:; column host_name format a12 tru column name format a20 tru column value format a60 tru select distinct i.host_name, p.name, p.value from v$instance i, v$parameter p where p.name like '%_dump_dest' and p.name != 'core_dump_dest'; select to_char(sysdate) end_time from dual; spool off exit --- end [lockchk10.sql] ---
■Windows用 9.2.0.7 / 10.1.0.4 / 10.2.0.1 以降用スクリプト(lockchk10win.sql)
--- begin [lockchk10win.sql] --- define spoolfile = &1 spool &spoolfile alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'; alter session set timed_statistics = true; alter session set max_dump_file_size = UNLIMITED; set feedback on set term on set wrap on set trimspool on set pagesize 1000 set linesize 2000 set numwidth 10 select to_char(sysdate) start_time from dual; alter session set events 'immediate trace name systemstate level 10'; alter session set events 'immediate trace name hanganalyze level 3'; column host_name format a20 tru select instance_name, host_name, version, status, startup_time from v$instance; set echo on select * from v$session; select * from v$process; select * from v$bgprocess; select * from v$lock; select * from v$locked_object; select * from v$session_wait; select * from v$latch; select * from v$latchholder; select * from v$rowcache; /* 以下はMTS用 */ select * from v$dispatcher; select * from v$shared_server; select * from v$circuit; select * from v$queue; select * from v$dispatcher_rate; set echo off Prompt; Prompt Output file name is:; define spoolfile Prompt; Prompt ALERT.LOG and TRACE FILES are located in:; column host_name format a12 tru column name format a20 tru column value format a60 tru select distinct i.host_name, p.name, p.value from v$instance i, v$parameter p where p.name like '%_dump_dest' and p.name != 'core_dump_dest'; select to_char(sysdate) end_time from dual; spool off exit --- end [lockchk10win.sql] ---
SQL*Plus の -prelim オプションを使用する場合
^^^^^^^^^^^^
SQL*Plus の -prelim で接続した場合には oradebug コマンドを使用した情報を
取得することになります。
KROWN:101159 で案内している方法で接続後、以下のコマンドを実行してください。
また、資料については 3回取得してください。
SQL> oradebug dump hanganalyze 3 SQL> oradebug dump systemstate 10 SQL> exit
[補足]
9.2.0.7 / 10.1.0.4 / 10.2.0.1 以降では、systemstate dump の取得時に short stack
の取得が可能になりました。 これにより簡単な stack 情報を systemstate 取得時に
同時に取得することができます。
■Windowsプラットフォームに関する注意
Windowsプラットフォームにおいて short stack によりCPU使用率の高騰もしくは、
Oracleバックグラウンド・プロセスのダウンに至る事例が報告されていますが以下の
プラットフォームおよびバージョンでは short stack が取得可能です。
Windows x86 10.2.0.1 以降
Windows x86-64,ia64 10.2.0.4 以降
上記以外の Windowsプラットフォームにおいては short stack取得は行わないでください。
(使用スクリプトは、short stackの取得を行わない lockchk10win.sql を使用してください。)
なお、short stack は以下のようなフォーマットで systemstate dump 内に出力されます。
-10.2.0以前の出力例-
---------- Short stack dump: ksdxfstk<-ksdxcb<-sspuser<-sigacthandler<-_poll<-ntevpque <-ntevque<-nsevwait<-ksnwait<-ksliwat<-kswaitns<-kskthbwt<-kslwait<-ksuclnwt<- ksucln<-ksbrdp<-opirip<-opidrv<-sou2o<-main<-_start ----------
-10.2.0以降からの出力例-
---------- Short stack dump: ksdxfstk()+19<-ksdxcb()+1321<-sspuser()+81<-semtimedop()+31<-sskgpwwait()+304<- skgpwwait()+146<-ksliwat()+891<-kslwaitns()+29<-kskthbwt()+370<-kslwait()+57<- ksarcv()+343<-ksbabs()+517<-ksbrdp()+926<-opirip()+671<-opidrv()+864<-sou2o()+ 113<-opimai_real()+353<-main()+111<-__libc_start_main()+218 ----------
Reference: KROWN-66559
KROWN-19355 ハング時に取得する情報およびその取得方法
KROWN-126057 10.2 for HP-UX Itanium 環境において SYSTEM STATE DUMP に short stack が出力されない
KROWN-126055 10.2 for HP-UX PA-RISC 環境において SYSTEM STATE DUMP に short stack が出力されない
KROWN-101159 ハング時に診断のためにSQL*Plusでログインできない場合の回避策





