定時收集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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux啟定時指令碼Linux指令碼
- Linux 定時執行指令碼、命令Linux指令碼
- Linux定時執行.sh指令碼Linux指令碼
- ORACLE常用定時備份指令碼Oracle指令碼
- Mysql定時備份資料指令碼MySql指令碼
- 通過 Redis 定時執行指令碼Redis指令碼
- 【TABLE】Oracle表資訊收集指令碼Oracle指令碼
- Android系統原始碼分析-事件收集Android原始碼事件
- Windows ntp時間同步設定(bat指令碼)WindowsBAT指令碼
- linux mysql定時備份指令碼記錄LinuxMySql指令碼
- gc cr request等待事件GC事件
- Ubuntu伺服器定時執行Python指令碼Ubuntu伺服器Python指令碼
- GC 分代回收 - 垃圾收集器GC
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- Redis中Lua指令碼的使用和設定超時坍淑Redis指令碼
- Oracle運維指令碼-收集統計資訊Oracle運維指令碼
- 怎樣在windows上定時執行python指令碼WindowsPython指令碼
- 線上定時指令碼執行慢,分析過程指令碼
- 如何使用python指令碼定時清空檔案內容?Python指令碼
- 【SCRIPT】Oracle資料庫基本資訊收集指令碼Oracle資料庫指令碼
- Linux Crontab Shell指令碼實現秒級定時任務Linux指令碼
- 【DATAPUMP】Oracle資料泵定時備份刪除指令碼Oracle指令碼
- vbs指令碼和windows定時任務實現qq訊息表情包定時傳送指令碼Windows
- gc current/cr block busy等待事件GCBloC事件
- 解決gc current request等待事件GC事件
- Flowable框架-啟動事件-定時器啟動事件框架事件定時器
- Vue3原始碼解析--收集的依賴是什麼?怎麼收集的?什麼時候收集的?Vue原始碼
- 練習時的docker部署指令碼Docker指令碼
- 伺服器部署python指令碼並使用crontab定時執行伺服器Python指令碼
- jvm系列(三)GC演算法 垃圾收集器JVMGC演算法
- linux建立定時指令碼Linux指令碼
- 一些JS事件小片段程式碼整理收集(持續)JS事件
- faker 資料填充常用指令收集
- Camunda定時器事件示例Demo(Timer Events)定時器事件
- 基於Linux指令碼,對日誌進行定時壓縮備份Linux指令碼
- 用海豚排程器定時排程從Kafka到HDFS的kettle任務指令碼Kafka指令碼
- 案例五:shell指令碼實現定時監控http服務的執行狀態指令碼HTTP
- HTML <script> 指令碼的 async 與 defer 屬性及不同屬性的執行時機與 DOMContentLoaded 事件的關係HTML指令碼事件
- Buffer Cache以及buffer busy waits/gc相關事件AIGC事件