SET SERVEROUT ON
SET PAGESIZE 1000
SET LONG 2000000
SET LINESIZE 400
DECLARE
sts_exists number;
stmt_count number;
cur sys_refcursor;
begin_id number;
end_id number;
sts_name varchar2(50);
BEGIN
begin_id := &begin_id;
end_id := &end_id;
sts_name := '&sts_name';
SELECT count(*)
INTO sts_exists
FROM DBA_SQLSET
WHERE rownum = 1 AND
name = sts_name;
IF sts_exists = 1 THEN
SYS.DBMS_SQLTUNE.DROP_SQLSET(
sqlset_name=>sts_name
);
ELSE
DBMS_OUTPUT.PUT_LINE('SQL Tuning Set does not exist - will be created ...');
END IF;
SYS.DBMS_SQLTUNE.CREATE_SQLSET(
sqlset_name=>sts_name,
description=>'Statements from AWR Before-Change'
);
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
DBMS_OUTPUT.PUT_LINE('Snapshot Range between ' || begin_id || ' and ' || end_id || '.');
open cur for
select value(p) from table(dbms_sqltune.select_workload_repository(
begin_snap => begin_id,
end_snap => end_id,
basic_filter => 'parsing_schema_name not in (''DBSNMP'',''SYS'',''ORACLE_OCM'')',
ranking_measure1 => 'elapsed_time',
result_limit => 5000)) p;
dbms_sqltune.load_sqlset(sts_name, cur);
close cur;
SELECT statement_count
INTO stmt_count
FROM dba_sqlset
WHERE name = sts_name;
DBMS_OUTPUT.PUT_LINE('There are ' || stmt_count || ' SQL Statements in ' || sts_name);
END;
/
0 Comentários