日常运维中我们常常遇到一些问题无法进行分析,此时需要结合一些相关的监控脚本信息来辅助我们进行判断;这里提供purge和session的监控内容。
这里的purge监控,可以定位到哪些业务表存在问题,导致purge堆积,防止出现数据库回滚文件过大问题。
CREATE TABLE "SYSDBA"."PURGE_RECORD"
(
"TIME" TIMESTAMP(6) NOT NULL,
"SCH_NAME" VARCHAR(50),
"TAB_NAME" VARCHAR(50),
"OBJ_NUM" INTEGER NOT NULL) ;
CREATE INDEX "IDX_PUREGE_1" ON "SYSDBA"."PURGE_RECORD"("TIME" ASC,"OBJ_NUM" ASC) ;
监控语句:
insert into "SYSDBA"."PURGE_RECORD" (SCH_NAME,TAB_NAME,OBJ_NUM,TIME)
select TOP 10 sch.name,s.name,count(*),SYSDATE from v$purge_pseg_tab p,sysobjects s,sysobjects sch where s.id=p.tab_id
and s.schid=sch.id group by sch.name,s.name order by 3 desc;
COMMIT;
定时删除语句:
DELETE FROM "SYSDBA"."PURGE_RECORD" WHERE TIME <= SYSDATE() - 30;
周期为5分钟一次
会话监控,可以帮我们定位数据库异常会话连接的问题,处理相关业务会话满之类的问题。
CREATE TABLE "SYSDBA"."SESSION_MON_5MIN"
(
"IP" VARCHAR(128),
"USER_NAME" VARCHAR(128),
"NUM" VARCHAR(64),
"SELECT_TIME" TIMESTAMP(6),
"DB_NAME" VARCHAR2(32);
CREATE INDEX "INDEX_SESSMON_TIME" ON "SYSDBA"."SESSION_MON_5MIN"("SELECT_TIME" ASC) ;
监控语句
INSERT INTO SESSION_MON_5MIN
SELECT USER_NAME,CLNT_IP,COUNT(*),SYSDATE(),INSTANCE_NAME FROM GV$SESSIONS
GROUP BY USER_NAME,CLNT_IP,INSTANCE_NAME
删除语句
DELETE FROM SESSION_MON_5MIN WHERE SELECT_TIME <= SYSDATE() - 30;
COMMIT;
可以1分钟一次,也可以5分钟一次
文章
阅读量
获赞