定時收集gc事件的指令碼
透過該過程定時收集產生gc event的語句.
grant select on dba_tables to shsnc;
grant select on v_$sql to shsnc;
grant select on v_$session to shsnc;
grant select on dba_tables to shsnc;
grant select on v_$sql to shsnc;
grant select on v_$session to shsnc;
create or replace procedure shsnc.gc_event(TBS_NAME VARCHAR2) is
T_TABLE VARCHAR2(100) := 'GC_EVENT_TAB';
v_sql01 VARCHAR2(2000);
v_sql02 VARCHAR2(2000);
v_sql03 VARCHAR2(2000);
v_sql04 VARCHAR2(2000);
v_sql05 VARCHAR2(2000);
T_COUNT NUMBER;
begin
SELECT COUNT(1) INTO T_COUNT FROM DBA_TABLES WHERE TABLE_NAME = T_TABLE;
IF T_COUNT > 0 THEN
v_sql01 := 'insert into shsnc.' || T_TABLE || ' select SYS_CONTEXT(''USERENV'', ''INSTANCE'') INSTANCE,s.sid,
s.sql_id,
s.username,
s.module,
s.machine,
s.program,
s.status,
s.state,
t.FORCE_MATCHING_SIGNATURE,
t.EXACT_MATCHING_SIGNATURE,
t.sql_fulltext
from v$session s, v$sql t
where s.event like ''gc%''
and s.wait_class = ''Cluster''
and s.sql_id=t.sql_id';
EXECUTE IMMEDIATE v_sql01;
commit;
v_sql04 := 'delete shsnc.' || T_TABLE ||
' a WHERE a.rowid !=(select max(rowid) from shsnc.' ||
T_TABLE || ' b where a.sql_id=b.sql_id)';
execute immediate v_sql04;
commit;
v_sql05 := 'delete shsnc.' || T_TABLE ||
' a WHERE a.FORCE_MATCHING_SIGNATURE !=EXACT_MATCHING_SIGNATURE';
execute immediate v_sql05;
commit;
else
v_sql02 := 'create table shsnc.' || T_TABLE ||
'(instance number,sid number,sql_id VARCHAR2(13),username VARCHAR2(30),module VARCHAR2(64),machine VARCHAR2(64),program VARCHAR2(48),status VARCHAR2(8),state VARCHAR2(19),FORCE_MATCHING_SIGNATURE number,EXACT_MATCHING_SIGNATURE number,sql_fulltext CLOB) tablespace ' ||
TBS_NAME;
execute immediate v_sql02;
v_sql03 := 'insert into shsnc.' || T_TABLE || ' select SYS_CONTEXT(''USERENV'', ''INSTANCE'') INSTANCE,s.sid,
s.sql_id,
s.username,
s.module,
s.machine,
s.program,
s.status,
s.state,
t.FORCE_MATCHING_SIGNATURE,
t.EXACT_MATCHING_SIGNATURE,
t.sql_fulltext
from v$session s, v$sql t
where s.event like ''gc%''
and s.wait_class = ''Cluster''
and s.sql_id=t.sql_id';
EXECUTE IMMEDIATE v_sql03;
COMMIT;
v_sql04 := 'delete shsnc.' || T_TABLE ||
' a WHERE a.rowid !=(select max(rowid) from shsnc.' ||
T_TABLE || ' b where a.sql_id=b.sql_id)';
execute immediate v_sql04;
commit;
v_sql05 := 'delete shsnc.' || T_TABLE ||
' a WHERE a.FORCE_MATCHING_SIGNATURE !=EXACT_MATCHING_SIGNATURE';
execute immediate v_sql05;
commit;
END IF;
END;
/
T_TABLE VARCHAR2(100) := 'GC_EVENT_TAB';
v_sql01 VARCHAR2(2000);
v_sql02 VARCHAR2(2000);
v_sql03 VARCHAR2(2000);
v_sql04 VARCHAR2(2000);
v_sql05 VARCHAR2(2000);
T_COUNT NUMBER;
begin
SELECT COUNT(1) INTO T_COUNT FROM DBA_TABLES WHERE TABLE_NAME = T_TABLE;
IF T_COUNT > 0 THEN
v_sql01 := 'insert into shsnc.' || T_TABLE || ' select SYS_CONTEXT(''USERENV'', ''INSTANCE'') INSTANCE,s.sid,
s.sql_id,
s.username,
s.module,
s.machine,
s.program,
s.status,
s.state,
t.FORCE_MATCHING_SIGNATURE,
t.EXACT_MATCHING_SIGNATURE,
t.sql_fulltext
from v$session s, v$sql t
where s.event like ''gc%''
and s.wait_class = ''Cluster''
and s.sql_id=t.sql_id';
EXECUTE IMMEDIATE v_sql01;
commit;
v_sql04 := 'delete shsnc.' || T_TABLE ||
' a WHERE a.rowid !=(select max(rowid) from shsnc.' ||
T_TABLE || ' b where a.sql_id=b.sql_id)';
execute immediate v_sql04;
commit;
v_sql05 := 'delete shsnc.' || T_TABLE ||
' a WHERE a.FORCE_MATCHING_SIGNATURE !=EXACT_MATCHING_SIGNATURE';
execute immediate v_sql05;
commit;
else
v_sql02 := 'create table shsnc.' || T_TABLE ||
'(instance number,sid number,sql_id VARCHAR2(13),username VARCHAR2(30),module VARCHAR2(64),machine VARCHAR2(64),program VARCHAR2(48),status VARCHAR2(8),state VARCHAR2(19),FORCE_MATCHING_SIGNATURE number,EXACT_MATCHING_SIGNATURE number,sql_fulltext CLOB) tablespace ' ||
TBS_NAME;
execute immediate v_sql02;
v_sql03 := 'insert into shsnc.' || T_TABLE || ' select SYS_CONTEXT(''USERENV'', ''INSTANCE'') INSTANCE,s.sid,
s.sql_id,
s.username,
s.module,
s.machine,
s.program,
s.status,
s.state,
t.FORCE_MATCHING_SIGNATURE,
t.EXACT_MATCHING_SIGNATURE,
t.sql_fulltext
from v$session s, v$sql t
where s.event like ''gc%''
and s.wait_class = ''Cluster''
and s.sql_id=t.sql_id';
EXECUTE IMMEDIATE v_sql03;
COMMIT;
v_sql04 := 'delete shsnc.' || T_TABLE ||
' a WHERE a.rowid !=(select max(rowid) from shsnc.' ||
T_TABLE || ' b where a.sql_id=b.sql_id)';
execute immediate v_sql04;
commit;
v_sql05 := 'delete shsnc.' || T_TABLE ||
' a WHERE a.FORCE_MATCHING_SIGNATURE !=EXACT_MATCHING_SIGNATURE';
execute immediate v_sql05;
commit;
END IF;
END;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29446986/viewspace-1337762/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle指令碼收集【不定時更新】Oracle指令碼
- 定時ftp指令碼FTP指令碼
- linux啟定時指令碼Linux指令碼
- 定時清理監聽日誌的指令碼 。指令碼
- awr自動收集指令碼指令碼
- QTP - 指令碼相關收集QT指令碼
- ORACLE常用定時備份指令碼Oracle指令碼
- mysql每天定時備份指令碼MySql指令碼
- 定時刪除檔案指令碼指令碼
- oracle rman 定時備份指令碼Oracle指令碼
- tomcat定時啟動指令碼Tomcat指令碼
- 指令碼:定時生成awr報告指令碼
- mysql定時備份shell指令碼MySql指令碼
- RMAN定時全備份指令碼指令碼
- linux 定時關機指令碼Linux指令碼
- 等待事件指令碼事件指令碼
- mysql 定時指令碼(event),類似oracle的jobMySql指令碼Oracle
- Linux 定時執行指令碼、命令Linux指令碼
- 通過 Redis 定時執行指令碼Redis指令碼
- Mysql定時備份資料指令碼MySql指令碼
- Linux定時執行.sh指令碼Linux指令碼
- owI 事件的收集事件
- 【TABLE】Oracle表資訊收集指令碼Oracle指令碼
- oracle rman備份指令碼收集Oracle指令碼
- Linux定時執行指定的指令碼檔案Linux指令碼
- php不設定指令碼執行時間的方法PHP指令碼
- Windows ntp時間同步設定(bat指令碼)WindowsBAT指令碼
- Linux下 MYSQL 定時備分指令碼LinuxMySql指令碼
- Oracle用指令碼定時執行備份Oracle指令碼
- php網站的定時事件PHP網站事件
- 【RAC】Oracle Clusterware 診斷收集指令碼Oracle指令碼
- 定時重啟tomcat指令碼導致的亂碼問題Tomcat指令碼
- 定時將資料匯入到hive的shell指令碼Hive指令碼
- linux mysql定時備份指令碼記錄LinuxMySql指令碼
- 線上定時指令碼執行慢,分析過程指令碼
- Android系統原始碼分析-事件收集Android原始碼事件
- gc cr request等待事件GC事件
- Oracle運維指令碼-收集統計資訊Oracle運維指令碼