白鳝-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$;

转载于:https://www.cnblogs.com/alang85/archive/2011/09/20/2182432.html

oracle优化日记脚本相关推荐

  1. oracle优化日记_Oracle优化日记:一个金牌DBA的故事

    金牌DBA精彩纷呈的经历 86个优化技巧活学活用 培养多种能力,保障职场成功 恩墨科技创始人.Oracle ACE Director盖国强倾力推荐 白鳝,本名徐戟,国内资深Oracle数据库优化专家, ...

  2. Oracle数据库实用脚本

    以下是Maclean.Liu所编写或收集的Oracle数据库实用脚本的列表,在这里分享一下: Script:收集Enterprise Manager Grid Control/Agent/Databa ...

  3. 将oracle优化器改为CBO,【DB.Oracle】Oracle 优化器 (RBO, CBO)

    Oracle优化器 Oracle数据库中的优化器又叫查询优化器(Query Optimizer).它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划.Oracle的优化器有两种,基于规则 ...

  4. 【云和恩墨大讲堂】从执行计划洞察ORACLE优化器的“小聪明”

    作者简介 黄浩  惠普 十年一剑,十年磨砺.3年通信行业,写就近3万条SQL:5年制造行业,遨游在ETL的浪潮:2年性能优化,厚积薄发自成一家 主题介绍: Oracle执行计划的另类解读:调皮的执行计 ...

  5. oracle stalestats_深入理解oracle优化器统计数据(Optimizer Statistics)

    理解oracle优化器统计数据 首先来介绍oracle数据库使用基于规则优化器(RBO)来决定如何执行一个sql语句.基于规则优化器顾名思义,它是遵循一组规则来判断一个sql语句的执行计划.这组规则是 ...

  6. Oracle 优化篇+Linux系统参数(vm.min_free_kbytes)

    说明:本文为面向Linux系统参数(vm.min_free_kbytes)初学者的指导手册 标签:Linux参数.Oracle优化.vm.min_free_kbytes.内存管理 注意:参数的修改有利 ...

  7. ORACLE优化器RBO与CBO介绍总结

    RBO和CBO的基本概念 Oracle数据库中的优化器又叫查询优化器(Query Optimizer).它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划.Oracle的优化器有两种,基 ...

  8. 【Oracle健康检查脚本加量不加价】对Oracle 10g、11g和12c版本分别提供了只读版,并且加上了MySQL的健康检查...

    目前一共包含6个脚本,若脚本的扩展名为".sql"则表示该脚本为sql脚本,若脚本的扩展名为".pl"则表示该脚本为perl脚本. 对于SQL脚本而言,其中DB ...

  9. Oracle优化器:星型转换

    Oracle 8i中引入了星型转换(star transformation)的优化器新特性以便更有效地处理星型查询.星型查询语句多用于基于星型模型设计的数据仓库应用中.星型模型的称谓源于该种模型以图形 ...

  10. Oracle优化之表连接方式

    Oracle优化之表连接方式 在Oracle数据库中,两个表之间的表连接方法有排序合并连接.嵌套循环连接.哈希连接和笛卡尔连接四种 1.排序合并连接(sort merge join) 排序合并连接是一 ...

最新文章

  1. YOLO算法史上最全综述:从YOLOv1到YOLOv5
  2. ubuntu18安装很慢_双硬盘装Win 10+Ubuntu 18.04双系统中的一些坑
  3. 对应 网口_威纶通网口屏和西门子1200/1500绝对地址实现通讯
  4. JDK14性能管理工具:jstack使用介绍
  5. XmlPullParser
  6. element vue 动态单选_SpringBoot+Vue(MyBatis + Shiro + Jwt + Druid + Redis + ElementUI )快速开发框架...
  7. 打印机(Brother MFC-7860DN)一直提示更换墨盒
  8. java微信刷卡支付demo_微信刷卡支付例子
  9. Python模拟谷歌浏览器发布文字、图片
  10. 小甲鱼python课后题共多少讲_小甲鱼python视频第七讲(课后习题)
  11. 三相并联功率因数校正matlab,基于并联技术的三相功率因数校正方法研究
  12. League of Legends 通过 游戏ID查询玩家QQ号码。
  13. kotlin框架Anko的使用及常用的项目配置
  14. [读书笔记] 图解HTTP
  15. C#版万年历源码、农历、节日、节气齐全
  16. 【LINGO】lingo 软件简介
  17. 简易数据看板--直播订单统计分析
  18. 2022年最新江西建筑八大员(标准员)考试试题及答案
  19. MSP432 P401R 单片机 矩阵键盘 贪吃蛇 OLED 代码 程序
  20. 最全的视频转换器工具清单,这18款免费视频格式转换器记得收藏

热门文章

  1. 这些实用的WhatsApp工具,赶快用起来
  2. 人工智能导论(10)——机器人(Robot)
  3. 通过app NA渲染后的app source 抓包
  4. 使用Cadence组件进行Pspice仿真
  5. 如何将ipad大文件传输到window PC
  6. 微信群二维码活码生成系统 生成微信活码
  7. Linux df 命令使用详解
  8. Linux下 df 命令查看磁盘空间
  9. Kossel 升级记 - 混乱之始
  10. 洗衣机测试点 思维导图