------------------------------------------------------------------------------------ File name: sql10.sql-- Author: zhangqiao-- Copyright: zhangqiaoc@olm.com.cn----------------------------------------------------------------------------------alter session set nls_date_format='yyyymmdd';col file_name new_value file_name noprintselect to_char(sysdate,'yyyymmddhh24miss')||'_'||'&&1' file_name from dual;spool sql_&file_nameset pagesize 0SET VERIFY OFFset linesize 130-------------------------------------------------------------------------------------------------col CPU_TIME heading "CPU|TIME" for 999,999,999col ELAPSED_TIME heading "ELAPSED|TIME" for 999,999,999col PARSE_CALLS heading "PARSE|CALLS" for 999,999col DISK_READS heading "DISK|READS" for 999,999,999col BUFFER_GETS heading "BUFFER|GETS" for 999,999,999 col SORTS heading "SORTS" for 999,999col ROWS_PROCESSED heading "ROWS|PROCESSED" for 999,999,999 col FETCHES heading "FETCHES" for 999,999,999col EXECUTIONS heading "EXEC" for 999,999,999col CPU_PRE_EXEC heading "CPU|PRE EXEC" for 999,999,999col DISK_PRE_EXEC heading "DISK|PRE EXEC" for 999,999,999col GET_PRE_EXEC heading "GET|PRE EXEC" for 999,999,999col ROWS_PRE_EXEC heading "ROWS|PRE EXEC" for 999,999,999col ROWS_PRE_FETCHES heading "ROWS|PRE FETCHES" for 999,999,999------------------------------------------------------------------------------------------------- col TABLE_NAME heading "TABLE|NAME" for a15col OWNER heading "OWNER" for a5col TABLESPACE_NAME heading "TABLESPACE|NAME" for a10col LOGGING heading "LOG" for a3 col BUFFER_POOL heading "BUFFER|POOL" for a7col DEGREE heading "DEGREE" for a6col PARTITIONED heading "PART" for a4 col NUM_ROWS heading "NUM|ROWS" for 999,999,999col BLOCKS heading "BLOCKS" for 999,999,999 col EMPTY_BLOCKS heading "EMPTY|BLOCKS" for 999,999,999 col AVG_SPACE heading "AVG|SPACE" for 999,999,999 col AVG_ROW_LEN heading "AVG|ROW_LEN" for 999,999,999 col AVG_ROW_LEN heading "AVG|ROW_LEN" for 999,999,999 col LAST_ANALYZED heading "LAST|ANALYZED"------------------------------------------------------------------------------------------------- col TABLE_OWNER heading "TABLE|OWNER" for a10col INDEX_NAME heading "Index|Name" for a15col UNIQUENESS heading "UNIQUE" for a9col COLUMN_NAME heading "COLUMN|NAME" for a15col COLUMN_POSITION heading "COL|POS" for 999col DESCEND heading "DESC" for a4 ------------------------------------------------------------------------------------------------- col CHILD_NUMBER heading "CHILD|NUMBER" for 999col name heading "BIND|NAME" for a10 col value_string heading "VALUE|STRING" for a60col DATATYPE_STRING heading "DATATYPE|STRING" for a20------------------------------------------------------------------------------------------------- col program heading "PROGRAM" for a30col event heading "EVENT" for a40col total heading "TOTAL" for 999,999col wait_class heading "WAIT|CLASS" for a15------------------------------------------------------------------------------------------------- col DATA_TYPE heading "DATA|TYPE" for a15 col NULLABLE heading "NL" for a2 col HISTOGRAM heading "HIST" for a5 col DENSITY heading "DENSITY" for 999,999,999col NUM_NULLS heading "NUM|NULLS" for 999,999,999col NUM_BUCKETS heading "NUM|BUCKETS" for 999,999,999col AVG_COL_LEN heading "AVG|COL LEN" for 999,999,999------------------------------------------------------------------------------------------------- col LOGGING heading "LOG" for a3 col STATUS heading "STATUS" for a6col INDEX_TYPE heading "INDEX|TYPE" for a8col UNIQUENESS heading "Unique" for a9col BLEV heading "B|Tree|Level" for 99col LEAF_BLOCKS heading "Leaf|Blks" for 999,999col DISTINCT_KEYS heading "Distinct|Keys" for 999,999,999col AVG_LEAF_BLOCKS_PER_KEY heading "Average|Leaf Blocks|Per Key" for 99,999col AVG_DATA_BLOCKS_PER_KEY heading "Average|Data Blocks|Per Key" for 99,999col CLUSTERING_FACTOR heading "Cluster|Factor" for 999,999,999col COLUMN_POSITION heading "Col|Pos" for 999prompt ****************************************************************************************prompt CURSORprompt ****************************************************************************************select * from table(dbms_xplan.display_cursor('&&1',0,'all'));select * from table(dbms_xplan.display_cursor('&&1',1,'all'));select * from table(dbms_xplan.display_cursor('&&1',2,'all'));select * from table(dbms_xplan.display_cursor('&&1',3,'all'));promptprompt ****************************************************************************************prompt AWRprompt ****************************************************************************************select * from table(dbms_xplan.display_awr('&&1',null,null,'all'));promptprompt ****************************************************************************************prompt SQL STATSprompt ****************************************************************************************set pagesize 9999select distinct parsing_schema_name from v$sql where sql_id='&&1';select CPU_TIME,ELAPSED_TIME,DISK_READS, BUFFER_GETS, ROWS_PROCESSED,FETCHES, PARSE_CALLS, SORTS,EXECUTIONS from v$sqlstats where sql_id='&&1';selectCPU_TIME/decode(EXECUTIONS,0,1,EXECUTIONS) CPU_PRE_EXEC,ELAPSED_TIME/decode(EXECUTIONS,0,1,EXECUTIONS) ELA_PRE_EXEC,DISK_READS/decode(EXECUTIONS,0,1,EXECUTIONS) DISK_PRE_EXEC,BUFFER_GETS/decode(EXECUTIONS,0,1,EXECUTIONS) GET_PRE_EXEC,ROWS_PROCESSED/decode(EXECUTIONS,0,1,EXECUTIONS) ROWS_PRE_EXEC,ROWS_PROCESSED/decode(FETCHES,0,1,FETCHES) ROWS_PRE_FETCHES,EXECUTIONS from v$sqlstats where sql_id='&&1';promptprompt ****************************************************************************************prompt TABLESprompt ****************************************************************************************break on ownerWITH t AS (SELECT /*+ materialize */DISTINCT OBJECT_OWNER, OBJECT_NAME FROM (SELECT OBJECT_OWNER, OBJECT_NAME FROM V$SQL_PLAN WHERE SQL_ID = '&&1' AND OBJECT_NAME IS NOT NULL UNION ALL SELECT OBJECT_OWNER, OBJECT_NAME FROM DBA_HIST_SQL_PLAN WHERE SQL_ID = '&&1' AND OBJECT_NAME IS NOT NULL))SELECT owner, TABLE_NAME, TABLESPACE_NAME, LOGGING, BUFFER_POOL, ltrim(DEGREE) DEGREE, PARTITIONED, NUM_ROWS, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, AVG_ROW_LEN, LAST_ANALYZED FROM DBA_TABLES WHERE (OWNER, TABLE_NAME) IN (SELECT table_owner,table_name FROM dba_indexes WHERE (owner,index_name) IN (SELECT * FROM t) UNION ALL SELECT * FROM t);promptprompt ****************************************************************************************prompt INDEX INFOprompt ****************************************************************************************break on table_owner on table_name on index_name on index_type on uniqueness on LOGGING on statusWITH t AS (SELECT /*+ materialize */DISTINCT OBJECT_OWNER, OBJECT_NAME FROM (SELECT OBJECT_OWNER, OBJECT_NAME FROM V$SQL_PLAN WHERE SQL_ID = '&&1' AND OBJECT_NAME IS NOT NULL UNION ALL SELECT OBJECT_OWNER, OBJECT_NAME FROM DBA_HIST_SQL_PLAN WHERE SQL_ID = '&&1' AND OBJECT_NAME IS NOT NULL)) SELECT A.TABLE_OWNER, A.TABLE_NAME, A.INDEX_NAME, UNIQUENESS, COLUMN_NAME, COLUMN_POSITION, DESCEND FROM DBA_INDEXES A, DBA_IND_COLUMNS B WHERE (A.OWNER, A.table_name) IN (SELECT table_owner,table_name FROM dba_indexes WHERE (owner,index_name) IN (SELECT * FROM t) UNION ALL SELECT * FROM t) AND A.OWNER = B.INDEX_OWNER AND A.INDEX_NAME = B.INDEX_NAME;promptprompt ****************************************************************************************prompt BINDprompt ****************************************************************************************break on CHILD_NUMBERSELECT CHILD_NUMBER,NAME,POSITION,DATATYPE_STRING,VALUE_STRING FROM v$sql_bind_capture WHERE SQL_ID = '&&1'order by CHILD_NUMBER,POSITION;promptprompt ****************************************************************************************prompt LITERAL SQLprompt ****************************************************************************************set serveroutput on size 1000000DECLARE LVC_SQL_TEXT VARCHAR2(4000); LVC_ORIG_SQL_TEXT VARCHAR2(4000); LN_CHILD NUMBER := 10000; LVC_BIND VARCHAR2(200); CURSOR C1 IS SELECT CHILD_NUMBER, NAME, POSITION, DATATYPE_STRING, VALUE_STRING FROM V$SQL_BIND_CAPTURE WHERE SQL_ID = '&&1' ORDER BY CHILD_NUMBER, POSITION;BEGIN SELECT SQL_FULLTEXT INTO LVC_ORIG_SQL_TEXT FROM V$SQL WHERE SQL_ID = '&&1' AND ROWNUM = 1; FOR R1 IN C1 LOOP IF (R1.CHILD_NUMBER <> LN_CHILD) THEN IF LN_CHILD <> 10000 THEN DBMS_OUTPUT.PUT_LINE(LVC_SQL_TEXT); DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------'); END IF; LN_CHILD := R1.CHILD_NUMBER; LVC_SQL_TEXT := LVC_ORIG_SQL_TEXT; END IF; IF R1.NAME LIKE ':SYS_B_%' THEN LVC_BIND := ':"'||substr(R1.NAME,2)||'"'; ELSE LVC_BIND := R1.NAME; END IF; IF r1.VALUE_STRING IS NOT NULL THEN IF R1.DATATYPE_STRING = 'NUMBER' THEN LVC_SQL_TEXT := REGEXP_REPLACE(LVC_SQL_TEXT, LVC_BIND, R1.VALUE_STRING,1,1,'i'); ELSIF R1.DATATYPE_STRING LIKE 'VARCHAR%' THEN LVC_SQL_TEXT := REGEXP_REPLACE(LVC_SQL_TEXT, LVC_BIND, ''''||R1.VALUE_STRING||'''',1,1,'i'); ELSE LVC_SQL_TEXT := REGEXP_REPLACE(LVC_SQL_TEXT, LVC_BIND, ''''||R1.VALUE_STRING||'''',1,1,'i'); END IF; ELSE LVC_SQL_TEXT := REGEXP_REPLACE(LVC_SQL_TEXT, LVC_BIND, 'NULL',1,1,'i'); END IF; END LOOP; DBMS_OUTPUT.PUT_LINE(LVC_SQL_TEXT);END;/promptprompt ****************************************************************************************prompt SQL WAIT HISTprompt ****************************************************************************************break on programSELECT PROGRAM,EVENT, SUM(CNT) TOTAL, WAIT_CLASS FROM (SELECT DECODE(SESSION_STATE, 'ON CPU', DECODE(SESSION_TYPE, 'BACKGROUND', 'BCPU', 'CPU'), EVENT) EVENT, REPLACE(TRANSLATE(DECODE(SESSION_STATE, 'ON CPU', DECODE(SESSION_TYPE, 'BACKGROUND', 'BCPU', 'CPU'), WAIT_CLASS), ' $', '____'), '/') WAIT_CLASS, PROGRAM, 1 CNT FROM V$ACTIVE_SESSION_HISTORY WHERE SQL_ID = '&&1' AND SAMPLE_TIME >= SYSDATE - 4 / 24 AND SAMPLE_TIME <= SYSDATE) GROUP BY EVENT, WAIT_CLASS, PROGRAM ORDER BY PROGRAM,TOTAL DESC;promptprompt ****************************************************************************************prompt TABLE COLUMNSprompt ****************************************************************************************break on owner on table_nameWITH t AS (SELECT /*+ materialize */DISTINCT OBJECT_OWNER, OBJECT_NAME FROM (SELECT OBJECT_OWNER, OBJECT_NAME FROM V$SQL_PLAN WHERE SQL_ID = '&&1' AND OBJECT_NAME IS NOT NULL UNION ALL SELECT OBJECT_OWNER, OBJECT_NAME FROM DBA_HIST_SQL_PLAN WHERE SQL_ID = '&&1' AND OBJECT_NAME IS NOT NULL))SELECT OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE, NULLABLE, substr(HISTOGRAM,0,5) HISTOGRAM, DENSITY, NUM_NULLS, NUM_BUCKETS, AVG_COL_LEN, LAST_ANALYZED FROM DBA_TAB_COLS WHERE (OWNER, TABLE_NAME) IN (SELECT table_owner,table_name FROM dba_indexes WHERE (owner,index_name) IN (SELECT * FROM t) UNION ALL SELECT * FROM t) ORDER BY owner,table_name,COLUMN_ID;promptprompt ****************************************************************************************prompt INDEX STATSprompt ****************************************************************************************WITH t AS (SELECT /*+ materialize */DISTINCT OBJECT_OWNER, OBJECT_NAME FROM (SELECT OBJECT_OWNER, OBJECT_NAME FROM V$SQL_PLAN WHERE SQL_ID = '&&1' AND OBJECT_NAME IS NOT NULL UNION ALL SELECT OBJECT_OWNER, OBJECT_NAME FROM DBA_HIST_SQL_PLAN WHERE SQL_ID = '&&1' AND OBJECT_NAME IS NOT NULL)) SELECT INDEX_NAME, INDEX_TYPE, LOGGING, STATUS, BLEVEL BLEV, LEAF_BLOCKS, DISTINCT_KEYS, NUM_ROWS, AVG_LEAF_BLOCKS_PER_KEY, AVG_DATA_BLOCKS_PER_KEY, CLUSTERING_FACTOR, LAST_ANALYZED FROM DBA_INDEXES T WHERE (TABLE_OWNER, TABLE_NAME) IN (SELECT table_owner,table_name FROM dba_indexes WHERE (owner,index_name) IN (SELECT * FROM t) UNION ALL SELECT * FROM t) ORDER BY 1 /spool offundefine 1
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8242091/viewspace-720513/
,如需转载,请注明出处,否则将追究法律责任。