oracle优化日记脚本

白鳝-oracle优化日记 脚本资料

--查看所有用户下的monitor信息
SELECT u.name owner, io.name index_name, t.name table_name,
decode(bitand(i.flags, 65536), 0, 'NO', 'YES') monitoring,
decode(bitand(ou.flags, 1), 0, 'NO', 'YES') used,
ou.start_monitoring start_monitoring,
ou.end_monitoring end_monitoring
FROM sys.user$ u, sys.obj$ io, sys.obj$ t, sys.ind$ i, sys.object_usage ou
WHERE i.obj# = ou.obj#
AND io.obj# = ou.obj#
AND t.obj# = i.bo#
AND u.user# = io.owner#;

--查看长时间运行会话的脚本
SELECT
L.sid ssid,
substr(OPNAME,1,15) opname,
target,
trunc((sofar/totalwork)*100) pct,
to_char(60*sofar*8192/(24*60*(last_update_time - start_time))/1024/1024/60, '9999.0') Rate,
elapsed_seconds/60 es,
time_remaining/60 tr,PROGRAM,MACHINE
FROM v$session_longops L,V$SESSION S
WHERE time_remaining > 0 AND L.SID=S.SID
ORDER BY start_time
/

--date转为redo dump time的脚本
SET ECHO off 
REM NAME:    TFSTM2RD.SQL 
REM USAGE:"@path/tfstm2rd" 
REM ------------------------------------------------------------------------ 
REM REQUIREMENTS: 
REM    None. 
REM ------------------------------------------------------------------------ 
REM AUTHOR:  
REM    Anonymous      
REM    Copyright 1996, Orqacle Corporation   
REM ------------------------------------------------------------------------ 
REM PURPOSE: 
REM    Converts a standard date into redo dump time format. 
REM ------------------------------------------------------------------------ 
REM EXAMPLE: 
REM    Enter day (DD/MM/YYYY) ? 08/07/1996 
REM    Enter time (HH24:MI:SS) ? 12:05:05 
REM 
REM    REDO_YEAR REDO_MONTH REDO_DAY REDO_HOUR REDO_MIN REDO_SEC 
REM    --------- ---------- -------- --------- -------- -------- 
REM         1996        7        8        12        5        5 
REM 
REM    EDO_TIME 
REM    ---------- 
REM     273845105 
REM  
REM ------------------------------------------------------------------------ 
REM DISCLAIMER: 
REM    This script is provided for educational purposes only. It is NOT  
REM    supported by Oracle World Wide Technical Support. 
REM    The script has been tested and appears to work as intended. 
REM    You should always run new scripts on a test instance initially. 
REM ------------------------------------------------------------------------ 
REM Main text of script follows: 
 
undefine redo_day  
undefine redo_hhmiss  
  
accept redo_day prompt "Enter day (DD/MM/YYYY) ? "  
accept redo_hhmiss prompt "Enter time (HH24:MI:SS) ? "  
  
column redo_year  new_value redo_year format 9999  
column redo_month new_value redo_month format 9999  
column redo_day   new_value redo_day format 9999  
column redo_hour  new_value redo_hour format 9999  
column redo_min   new_value redo_min format 9999  
column redo_sec   new_value redo_sec format 9999  
column redo_time  new_value redo_time   
  
set verify off  
  
SELECT   
  to_number(to_char(to_date('&redo_day &redo_hhmiss',  
    'DD/MM/YYYY HH24:MI:SS'),'YYYY')) redo_year,  
  to_number(to_char(to_date('&redo_day &redo_hhmiss',  
    'DD/MM/YYYY HH24:MI:SS'),'MM'))   redo_month,  
  to_number(to_char(to_date('&redo_day &redo_hhmiss',  
    'DD/MM/YYYY HH24:MI:SS'),'DD'))   redo_day,  
  to_number(to_char(to_date('&redo_day &redo_hhmiss',  
    'DD/MM/YYYY HH24:MI:SS'),'HH24')) redo_hour,  
  to_number(to_char(to_date('&redo_day &redo_hhmiss',  
    'DD/MM/YYYY HH24:MI:SS'),'MI'))   redo_min,  
  to_number(to_char(to_date('&redo_day &redo_hhmiss',  
    'DD/MM/YYYY HH24:MI:SS'),'SS'))   redo_sec   
  FROM dual;  
  
SELECT    (  (  (  (  (       ( &redo_year - 1988 )   
                          ) * 12   
                               +  ( &redo_month - 1   )   
    ) * 31   
                               +  ( &redo_day   - 1   )   
           ) * 24   
                          +  ( &redo_hour        )   
          ) * 60   
                               +  ( &redo_min         )   
           ) * 60   
                               +  (  &redo_sec        )       redo_time  
  FROM dual;  
 
--redo dump time 转为date的脚本
SET ECHO off 
REM NAME:    TFSRD2TM.SQL 
REM USAGE:"@path/tfsrd2tm" 
REM ------------------------------------------------------------------------ 
REM REQUIREMENTS: 
REM None. 
REM ------------------------------------------------------------------------ 
REM AUTHOR:  
REM    Anonymous      
REM    Copyright 1996, Oracle Corporation      
REM ------------------------------------------------------------------------ 
REM PURPOSE: 
REM    Will convert redo dump time into a readable date. 
REM  
REM ------------------------------------------------------------------------ 
REM EXAMPLE: 
REM    Enter redo time ? 273845105 
REM     
REM    REDO_YEAR REDO_MONTH REDO_DAY REDO_HOUR REDO_MIN REDO_SEC 
REM    --------- ---------- -------- --------- -------- -------- 
REM         1996          7        8        12        5    5 
REM  
REM ------------------------------------------------------------------------ 
REM DISCLAIMER: 
REM    This script is provided for educational purposes only. It is NOT  
REM    supported by Oracle World Wide Technical Support. 
REM    The script has been tested and appears to work as intended. 
REM    You should always run new scripts on a test instance initially. 
REM ------------------------------------------------------------------------ 
REM Main text of script follows: 
 
undefine redo_time  
  
accept redo_time prompt "Enter redo time ? "  
  
column redo_year  new_value redo_year format 9999  
column redo_month new_value redo_month format 9999  
column redo_day   new_value redo_day format 9999  
column redo_hour  new_value redo_hour format 9999  
column redo_min   new_value redo_min format 9999  
column redo_sec   new_value redo_sec format 9999  
  
set verify off  
  
SELECT         
trunc(trunc(trunc(trunc(trunc(&redo_time/60)/60)/24)/31)/12)+1988  
          redo_year,  
mod(trunc(trunc(trunc(trunc(&redo_time/60)/60)/24)/31),12)+1  redo_month,  
mod(trunc(trunc(trunc(&redo_time/60)/60)/24),31)+1      redo_day,  
mod(trunc(trunc(&redo_time/60)/60),24)       redo_hour,  
mod(trunc(&redo_time/60),60)                    redo_min,  
mod(&redo_time,60)               redo_sec  
FROM dual;  

----锁解析脚本1
set linesize 200 feedback off heading on
column sid format 999
column res heading 'Resource Type' format a20
column id1 format 9999999
column id2 format 9999999
column lmode heading 'Lock Held' format a14
column request heading 'Lock Req.' format a14
column serial# format 99999
column username  format a10 
column terminal heading Term format a6
column tab format a10
column owner format a8
SELECT  l.sid,s.serial#,s.username,s.terminal,
        decode(l.type,'RW','RW - Row Wait Enqueue',
                    'TM','TM - DML Enqueue',
                    'TX','TX - Trans Enqueue',
                    'UL','UL - User',l.type||'System') res,
        substr(t.name,1,10) tab,u.name owner,
        l.id1,l.id2,
        decode(l.lmode,1,'No Lock',
                2,'Row Share',
                3,'Row Exclusive',
                4,'Share',
                5,'Shr Row Excl',
                6,'Exclusive',null) lmode,
        decode(l.request,1,'No Lock',
                2,'Row Share',
                3,'Row Excl',
                4,'Share',
                5,'Shr Row Excl',
                6,'Exclusive',null) request
FROM v$lock l, v$session s,
sys.user$ u,sys.obj$ t
WHERE l.sid = s.sid
AND s.type != 'BACKGROUND'
AND t.obj# = l.id1
AND u.user# = t.owner#
/

--锁解析脚本2
set lines 200
set pagesize 66
spool locks.lis
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 tab format a30 heading "Table Name"
column owner format a9
column LAddr heading "ID1 - ID2" format a18
column Lockt heading "Lock Type" format a40
column command format a25
column sid format 990
rem     L.SID||','||S.SERIAL# Kill,

SELECT
nvl(S.USERNAME,'Internal') username,
        L.SID,
        nvl(S.TERMINAL,'None') terminal,
        decode(command,
0,'None',decode(l.id2,0,U1.NAME||'.'||substr(T1.NAME,1,20),'None')) tab,
decode(command,
0,'BACKGROUND',
1,'Create Table',
2,'INSERT',
3,'SELECT',
4,'CREATE CLUSTER',
5,'ALTER CLUSTER',
6,'UPDATE',
7,'DELETE',
8,'DROP',
9,'CREATE INDEX',
10,'DROP INDEX',
11,'ALTER INDEX',
12,'DROP TABLE',
13,'---',
14,'---',
15,'ALTER TABLE',
16,'---',
17,'GRANT',
18,'REVOKE',
19,'CREATE SYNONYM',
20,'DROP SYNONYM',
21,'CREATE VIEW',
22,'DROP VIEW',
23,'---',
24,'---',
25,'---',
26,'LOCK TABLE',
27,'NO OPERATION',
28,'RENAME',
29,'COMMENT',
30,'AUDIT',
31,'NOAUDIT',
32,'CREATE EXTERNAL DATABASE',
33,'DROP EXTERNAL DATABASE',
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',
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',
84,'-',
85,'TRUNCATE TABLE',
86,'TRUNCATE CLUSTER',
87,'-',
88,'ALTER VIEW',
89,'-',
90,'-',
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 lock',
'CF','Cross-instance function invocation instance lock',
'CI','Control file schema global enqueue lock',
'CS','Control file schema global enqueue lock',
'DF','Data file instance lock',
'DM','Mount/startup db primary/secondary instance lock',
'DR','Distributed recovery process lock',
'DX','Distributed transaction entry lock',
'FI','SGA open-file information lock',
'FS','File set lock',
'IR','Instance recovery serialization global enqueue lock',
'IV','Library cache invalidation instance lock',
'MB','Master buffer hash table instance lock',
'MM','Mount definition gloabal enqueue lock',
'MR','Media recovery lock',
'RE','USE_ROW_ENQUEUE enforcement lock',
'RT','Redo thread global enqueue lock',
'RW','Row wait enqueue lock',
'SC','System commit number instance lock',
'SH','System commit number high water mark enqueue lock',
'SN','Sequence number instance lock',
'SQ','Sequence number enqueue lock',
'ST','Space transaction enqueue lock',
'SV','Sequence number value lock',
'TA','Generic enqueue lock',
'TD','DDL enqueue lock',
'TE','Extend-segment enqueue lock',
'TM','DML enqueue lock',
'TT','Temporary table enqueue lock',
'TX','Transaction enqueue lock',
'UL','User supplied lock',
'UN','User name lock',
'WL','Being-written redo log instance lock',
'WS','Write-atomic-log-switch global enqueue lock',
'TS',decode(l.id2,0,'Temporary segment enqueue lock (ID2=0)',
                    'New block allocation enqueue lock (ID2=1)'),
'LA','Library cache lock instance lock (A=namespace)',
'LB','Library cache lock instance lock (B=namespace)',
'LC','Library cache lock instance lock (C=namespace)',
'LD','Library cache lock instance lock (D=namespace)',
'LE','Library cache lock instance lock (E=namespace)',
'LF','Library cache lock instance lock (F=namespace)',
'LG','Library cache lock instance lock (G=namespace)',
'LH','Library cache lock instance lock (H=namespace)',
'LI','Library cache lock instance lock (I=namespace)',
'LJ','Library cache lock instance lock (J=namespace)',
'LK','Library cache lock instance lock (K=namespace)',
'LL','Library cache lock instance lock (L=namespace)',
'LM','Library cache lock instance lock (M=namespace)',
'LN','Library cache lock instance lock (N=namespace)',
'LO','Library cache lock instance lock (O=namespace)',
'LP','Library cache lock instance lock (P=namespace)',
'LS','Log start/log switch enqueue lock',
'PA','Library cache pin instance lock (A=namespace)',
'PB','Library cache pin instance lock (B=namespace)',
'PC','Library cache pin instance lock (C=namespace)',
'PD','Library cache pin instance lock (D=namespace)',
'PE','Library cache pin instance lock (E=namespace)',
'PF','Library cache pin instance lock (F=namespace)',
'PG','Library cache pin instance lock (G=namespace)',
'PH','Library cache pin instance lock (H=namespace)',
'PI','Library cache pin instance lock (I=namespace)',
'PJ','Library cache pin instance lock (J=namespace)',
'PL','Library cache pin instance lock (K=namespace)',
'PK','Library cache pin instance lock (L=namespace)',
'PM','Library cache pin instance lock (M=namespace)',
'PN','Library cache pin instance lock (N=namespace)',
'PO','Library cache pin instance lock (O=namespace)',
'PP','Library cache pin instance lock (P=namespace)',
'PQ','Library cache pin instance lock (Q=namespace)',
'PR','Library cache pin instance lock (R=namespace)',
'PS','Library cache pin instance lock (S=namespace)',
'PT','Library cache pin instance lock (T=namespace)',
'PU','Library cache pin instance lock (U=namespace)',
'PV','Library cache pin instance lock (V=namespace)',
'PW','Library cache pin instance lock (W=namespace)',
'PX','Library cache pin instance lock (X=namespace)',
'PY','Library cache pin instance lock (Y=namespace)',
'PZ','Library cache pin instance lock (Z=namespace)',
'QA','Row cache instance lock (A=cache)',
'QB','Row cache instance lock (B=cache)',
'QC','Row cache instance lock (C=cache)',
'QD','Row cache instance lock (D=cache)',
'QE','Row cache instance lock (E=cache)',
'QF','Row cache instance lock (F=cache)',
'QG','Row cache instance lock (G=cache)',
'QH','Row cache instance lock (H=cache)',
'QI','Row cache instance lock (I=cache)',
'QJ','Row cache instance lock (J=cache)',
'QL','Row cache instance lock (K=cache)',
'QK','Row cache instance lock (L=cache)',
'QM','Row cache instance lock (M=cache)',
'QN','Row cache instance lock (N=cache)',
'QO','Row cache instance lock (O=cache)',
'QP','Row cache instance lock (P=cache)',
'QQ','Row cache instance lock (Q=cache)',
'QR','Row cache instance lock (R=cache)',
'QS','Row cache instance lock (S=cache)',
'QT','Row cache instance lock (T=cache)',
'QU','Row cache instance lock (U=cache)',
'QV','Row cache instance lock (V=cache)',
'QW','Row cache instance lock (W=cache)',
'QX','Row cache instance lock (X=cache)',
'QY','Row cache instance lock (Y=cache)',
'QZ','Row cache instance lock (Z=cache)',
'TO','DDL operations on temporary tbl',
'DL','Direct Loader Index Creation',
'IN','Instance Number',
'IS','Instance State',
'KK','Redo Log Kick',
'PF','Password File',
'PI','Parallel Slaves',
'PR','Process Startup',
'PS','Parallel Slave Synchronization',
'TS','Temporary Segment (also TableSpace)',
'RO','Multiple object resue',
'????') Lockt
FROM    V$LOCK L, 
        V$SESSION S,
        SYS.USER$ U1,
        SYS.OBJ$ T1
WHERE   L.SID = S.SID 
AND     T1.OBJ#  = decode(L.ID2,0,L.ID1,1) 
AND     U1.USER# = T1.OWNER#
AND     S.TYPE != 'BACKGROUND'
ORDER BY 1,2,5
/
------------------------------------------------
--profile使用的部分脚本
------------------------------------------------
----profiler执行PL/SQL对象的脚本
declare
    err number;
begin
   err:=DBMS_PROFILER.START_PROFILER (to_char(sysdate,'dd-Mon-YYYY hh:mi:ss'));
  --此处执行要测试的PL/SQL存储过程或者程序
   err:=DBMS_PROFILER.STOP_PROFILER ;
end;
/

--查询run id
column RUN_COMMENT format a40 truncate;
Select runid, run_date, RUN_COMMENT FROM plsql_profiler_runs ORDER BY runid;

---查询分析结果
column unit_name format a15 truncate;
column occured format 999999 ;
column line# format 99999 ;
column tot_time format 999.999999 ;
SELECT p.unit_name, p.occured, p.tot_time, p.line# line, 
       substr(s.text, 1,75) text
FROM 
       (SELECT u.unit_name, d.TOTAL_OCCUR occured, 
               (d.TOTAL_TIME/1000000000) tot_time, d.line#
         FROM plsql_profiler_units u, plsql_profiler_data d
         WHERE d.RUNID=u.runid and d.UNIT_NUMBER = u.unit_number
           AND d.TOTAL_OCCUR >0
           AND  u.runid= &RUN_ID) p,  
       user_source s
 WHERE p.unit_name = s.name(+) and  p.line# = s.line (+) 
 ORDER BY p.unit_name, p.line#; 


--测试PL/SQL 类型性能的例子
create or replace procedure  testplsql is
 anumber number ;
 ainteger integer;
 anumber_10 number(10);
 apls_integer pls_integer;
 abinary BINARY_integer;
 err number;
begin
  anumber:=0;
  loop
    anumber:=anumber+1;
    ainteger:=ainteger+1;
    anumber_10:=anumber_10+1;
    apls_integer:=apls_integer+1;
    abinary:=abinary+1;
    exit when anumber>1500 ;
  end loop; 
end;
/

----测试集合类型性能的例子
CREATE OR REPLACE TYPE big_emp_ename_t AS TABLE OF varchar2(10);
/
 
CREATE OR REPLACE TYPE big_emp_ename_v AS VARRAY(200002) of varchar2(10);
/
 
CREATE OR REPLACE PROCEDURE coll_test IS
  TYPE big_emp_ename_i IS TABLE OF varchar2(10) INDEX BY BINARY_INTEGER;
  big_emp_cache_t big_emp_ename_t;
  big_emp_cache_v big_emp_ename_v;
  big_emp_cache_i big_emp_ename_i;
 
  CURSOR big_emp_curs IS SELECT rownum, ename FROM big_emp;
  cnt number;
  ename varchar2(10);
  p pls_integer;
BEGIN
  big_emp_cache_t:=big_emp_ename_t(' '); --to initilaize
  big_emp_cache_v:=big_emp_ename_v(' '); --to initilaize
 
  FOR be_r IN big_emp_curs LOOP
    big_emp_cache_t(be_r.rownum):=be_r.ename;
    big_emp_cache_t.EXTEND;
    big_emp_cache_v(be_r.rownum):=be_r.ename;
    big_emp_cache_v.EXTEND;
    big_emp_cache_i(be_r.rownum):=be_r.ename;
    ename:='DUMMY';
  END LOOP;
  
  SELECT COUNT(*) INTO cnt FROM big_emp WHERE ename='SCOTT';
 
  SELECT COUNT(*) cache_t INTO cnt 
    FROM TABLE(CAST( big_emp_cache_t AS big_emp_ename_t)) be_c
   WHERE be_c.column_value='SCOTT';
 
  SELECT COUNT(*) cache_v INTO cnt 
    FROM TABLE(CAST( big_emp_cache_v AS big_emp_ename_v)) be_c
   WHERE be_c.column_value='SCOTT';
 
  ename:= big_emp_cache_t(100000);
  FOR i in 1..1000 LOOP
    p:=100000+i;
    ename:= big_emp_cache_t(p);
    ename:= big_emp_cache_v(p);
    ename:= big_emp_cache_i(p);
  END LOOP;
 
  ename:='DUMMY';
END coll_test;
/

 

----查找热点块的脚本
Select decode(pd.bp_id,1,'KEEP',2,'RECYCLE',3,'DEFAULT',4,
'2K SUBCACHE', 5,'4K SUBCACHE',6,'8K SUBCACHE',7,
'16K SUBCACHE',8,'32K SUBCACHE','UNKNOWN') subcache,
  bh.object_name object_name,bh.blocks,tch
from x$kcbwds ds, x$kcbwbpd pd,
     (SELECT /*+ use_hash(x) */ set_ds,
        o.name object_name, count(*) BLOCKS,sum(tch)  tch
       FROM obj$ o, x$bh x
       WHERE o.dataobj# = x.obj
         AND x.state !=0 and o.owner# !=0
       GROUP BY set_ds,o.name) bh
WHERE ds.set_id >= pd.bp_lo_sid
  AND ds.set_id <= pd.bp_hi_sid
  AND pd.bp_size != 0
  AND ds.addr=bh.set_ds
  AND TCH>2000
ORDER BY subcache,object_name;

 

----检查cursor的脚本
SELECT
  'session_cached_cursors'  parameter,
  lpad(value, 5)  value,
  decode(value, 0, '  n/a', to_char(100 * used / value, '990') || '%')  usage
FROM
  ( SELECT
      max(s.value)  used
    FROM
      v$statname  n,
      v$sesstat  s
    WHERE
      n.name = 'session cursor cache count' and
      s.statistic# = n.statistic#
  ),
  ( SELECT
      value
    FROM
      v$parameter
    WHERE
      name = 'session_cached_cursors'
  )
UNION ALL
SELECT
  'open_cursors',
  lpad(value, 5),
  to_char(100 * used / value,  '990') || '%'
FROM
  ( select
      max(sum(s.value))  used
    from
      v$statname  n,
      v$sesstat  s
    WHERE
      n.name in ('opened cursors current', 'session cursor cache count') and
      s.statistic# = n.statistic#
    GROUP BY
      s.sid
  ),
  ( SELECT
      value
    FROM
      v$parameter
    WHERE
      name = 'open_cursors'
  )
/

---查找隐含参数
set line 132
col "session value" format a40 truncate
col "parameter" format a40 truncate

SELECT
   a.ksppinm  "Parameter",
   a.ksppdesc "Description",
   b.ksppstvl "Session Value"
   c.ksppstvl "Instance Value"
FROM
   x$ksppi a,
   x$ksppcv b,
   x$ksppsv c
WHERE
   a.indx = b.indx
   AND
   a.indx = c.indx
   AND
   a.ksppinm = lower('&1');

----闩锁分析
 SELECT name, 'Child '||child#, gets, misses, sleeps
    FROM v$latch_children
   WHERE addr='&P1'
  UNION
  SELECT name, null, gets, misses, sleeps
    FROM v$latch
   WHERE addr='&P1';
  
SELECT latch#, name, gets, misses, sleeps
    FROM v$latch
    WHERE sleeps>0
ORDER BY sleeps  DESC;


SELECT addr, latch#, gets, misses, sleeps
    FROM v$latch_children
    WHERE sleeps>0
    and latch# = &LATCH_NUMBER
ORDER BY sleeps ;


--ora-1591处理的相关脚本
SELECT KTUXEUSN, KTUXESLT, KTUXESQN, 
               KTUXESTA Status, KTUXECFL Flags
  FROM x$ktuxe
WHERE ktuxesta!='INACTIVE'
     AND ktuxeusn=&usn;

SELECT local_tran_id, global_tran_fmt, global_Oracle_id,
   global_foreign_id, state, status, heuristic_dflt,
          session_vector, reco_vector,
        global_commit#
        FROM pending_trans$;

 

posted @ 2011-09-20 14:21  痞子过  阅读(484)  评论(0编辑  收藏  举报