【Oracle】Script to Collect DRM Information (drmdiag.sql) (文档 ID 1492990.1)
脚本对应如下:
The following (drmdiag.sql) is a script to collect information related to DRM (Dyanamic Resource Re-mastering), particularly for troubleshooting "gcs drm freeze in enter server mode" wait events. Simply copy the following script into a file called drmdiag.sql, set execute permissions, and run in sqlplus with "@drmdiag.sql":
-- ------------------------------------------------------------------------
-- AUTHOR: Michael Polaski - Oracle Support Services
-- ------------------------------------------------------------------------
-- PURPOSE:
-- This script is intended to provide a user friendly guide to troubleshoot
-- drm (dynamic resource remastering) waits. The script will create a file
-- called drmdiag_<timestamp>.out in your local directory.
set echo off
 set feedback off
 column timecol new_value timestamp
 column spool_extension new_value suffix
 select to_char(sysdate,'Mondd_hh24mi') timecol,
 '.out' spool_extension from sys.dual;
 column output new_value dbname
 select value || '_' output
 from v$parameter where name = 'db_name';
 spool drmdiag_&&dbname&×tamp&&suffix
 set trim on
 set trims on
 set lines 140
 set pages 100
 set verify off
 set feedback on
PROMPT DRMDIAG DATA FOR &&dbname&×tamp
 PROMPT Important paramenters:
 PROMPT
 PROMPT _gc_policy_minimum (default is 1500). Increasing this would cause DRMs to happen less frequently.
 PROMPT Use the "OBJECT_POLICY_STATISTICS" section later in this report to see how active various objects are.
 PROMPT
 PROMPT _gc_policy_time (default to 10 (minutes)). Amount of time to evaluate policy stats. Use the
 PROMPT "OBJECT_POLICY_STATISTICS" section later in this report to see how active various objects are for the
 PROMPT _gc_policy_time. Usually not necessary to change this parameter.
 PROMPT
 PROMPT _gc_read_mostly_locking (default is TRUE). Setting this to FALSE would disable read mostly related DRMs.
 PROMPT
 PROMPT gcs_server_processes (default is derived from CPU count/4). May need to increase this above the
 PROMPT default to add LMS processes to complte the work during a DRM but the default is usually adequate.
 PROMPT
 PROMPT _gc_element_percent (default is 110). May need to apply the fix for bug 14791477 and increase this to
 PROMPT 140 if running out of lock elements. Usually not necessary to change this parameter.
 PROMPT
 PROMPT GC Related parameters set in this instance:
 show parameter gc
 PROMPT
 PROMPT CPU count on this instance:
 show parameter cpu_count
PROMPT
 PROMPT SGA INFO FOR &&dbname&×tamp
 PROMPT
 PROMPT Larger buffer caches (above 100 gig) may increase the cost of DRMs significantly.
 set lines 120
 set pages 100
 column component format a40 tru
 column current_size format 99999999999999999
 column min_size format 99999999999999999
 column max_size format 99999999999999999
 column user_specified_size format 99999999999999999
 select component, current_size, min_size, max_size, user_specified_size
 from v$sga_dynamic_components
 where current_size > 0;
PROMPT
 PROMPT ASH THRESHOLD...
 PROMPT
 PROMPT This will be the threshold in milliseconds for total drm freeze
 PROMPT times. This will be used for the next queries to look for the worst
 PROMPT 'drm freeze' minutes. Any minutes that have an average log file
 PROMPT sync time greater than the threshold will be analyzed further.
 column threshold_in_ms new_value threshold format 999999999.999
 select decode(min(threshold_in_ms),null,0,min(threshold_in_ms)) threshold_in_ms
 from (select inst_id, to_char(sample_time,'Mondd_hh24mi') minute,
 sum(time_waited)/1000 threshold_in_ms
 from gv$active_session_history
 where event like '%drm freeze%'
 group by inst_id,to_char(sample_time,'Mondd_hh24mi')
 order by 3 desc)
 where rownum <= 10;
PROMPT
 PROMPT ASH WORST MINUTES FOR DRM FREEZE WAITS:
 PROMPT
 PROMPT APPROACH: These are the minutes where the avg drm freeze time
 PROMPT was the highest (in milliseconds).
 column event format a30 tru
 column program format a35 tru
 column total_wait_time format 999999999999.999
 column avg_time_waited format 999999999999.999
 select to_char(sample_time,'Mondd_hh24mi') minute, inst_id, event,
 sum(time_waited)/1000 TOTAL_WAIT_TIME , count(*) WAITS,
 avg(time_waited)/1000 AVG_TIME_WAITED
 from gv$active_session_history
 where event like '%drm freeze%'
 group by to_char(sample_time,'Mondd_hh24mi'), inst_id, event
 having sum(time_waited)/1000 > &&threshold
 order by 1,2;
PROMPT
 PROMPT ASH DRM BACKGROUND PROCESS WAITS DURING WORST MINUTES:
 PROMPT
 PROMPT APPROACH: What are LMS and RMV doing when 'drm freeze' waits
 PROMPT are happening? LMD and LMON info may also be relevant
 column inst format 999
 column minute format a12 tru
 column event format a50 tru
 column program format a55 wra
 select to_char(sample_time,'Mondd_hh24mi') minute, inst_id inst,
 sum(time_waited)/1000 TOTAL_WAIT_TIME , count(*) WAITS,
 avg(time_waited)/1000 AVG_TIME_WAITED,
 program, event
 from gv$active_session_history
 where to_char(sample_time,'Mondd_hh24mi') in (select to_char(sample_time,'Mondd_hh24mi')
 from gv$active_session_history
 where event like '%drm freeze%'
 group by to_char(sample_time,'Mondd_hh24mi'), inst_id
 having sum(time_waited)/1000 > &&threshold and sum(time_waited)/1000 > 0.5)
 and (program like '%LMS%' or program like '%RMV%' or program like '%LMD%' or
 program like '%LMON%' or event like '%drm freeze%')
 group by to_char(sample_time,'Mondd_hh24mi'), inst_id, program, event
 order by 1,2,3,5 desc, 4;
PROMPT
 PROMPT POLICY HISTORY INFO:
 PROMPT See if you can correlate policy history events with minutes of high
 PROMPT wait time.
 select * from gv$policy_history
 order by event_date;
 PROMPT
 PROMPT DYNAMIC_REMASTER_STATS
 PROMPT This shows where time is spent during DRM operations.
 set heading off
 set lines 60
 select 'Instance: '||inst_id inst, 'Remaster Ops: '||remaster_ops rops,
 'Remaster Time: '||remaster_time rtime, 'Remastered Objects: '||remastered_objects robjs,
 'Quiesce Time: '||quiesce_time qtime, 'Freeze Time: '||freeze_time ftime,
 'Cleanup Time: '||cleanup_time ctime, 'Replay Time: '||replay_time rptime,
 'Fixwrite Time: '||fixwrite_time fwtime, 'Sync Time: '||sync_time stime,
 'Resources Cleaned: '||resources_cleaned rclean,
 'Replayed Locks Sent: '||replayed_locks_sent rlockss,
 'Replayed Locks Received: '||replayed_locks_received rlocksr,
 'Current Objects: '||current_objects
 from gv$dynamic_remaster_stats
 order by 1;
 set lines 120
 set heading on
PROMPT
 PROMPT OBJECT_POLICY_STATISTICS:
 PROMPT The sum of the last 3 columns (sopens,xopens,xfers) decides whether the object
 PROMPT will be considered for DRM (_gc_policy_minimum). The duration of the stats
 PROMPT are controlled by _gc_policy_time (default is 10 minutes).
 select object,node,sopens,xopens,xfers from x$object_policy_statistics;
PROMPT
 PROMPT ACTIVE OBJECTS (OBJECT_POLICY_STATISTICS)
 PROMPT These are the objects that are above the default _gc_policy_minimum (1500).
 select object, node, sopens+xopens+xfers activity
 from x$object_policy_statistics
 where sopens+xopens+xfers > 1500
 order by 3 desc;
PROMPT LWM FOR LE FREELIST
 PROMPT This number should never get near zero, if it does consider the fix for bug 14791477
 PROMPT and/or increasing _gc_element_percent.
 select sum(lwm) from x$kclfx;
PROMPT
 PROMPT GCSPFMASTER INFO WITH OBJECT NAMES
 column objname format a120 tru
 select o.name || ' - '|| o.subname objname, o.type#, h.*
 from v$gcspfmaster_info h, obj$ o where h.data_object_id=o.dataobj#
 order by data_object_id;
PROMPT
 PROMPT ASH DETAILS FOR WORST MINUTES:
 PROMPT
 PROMPT APPROACH: If you cannot determine the problem from the data
 PROMPT above, you may need to look at the details of what each session
 PROMPT is doing during each 'bad' snap. Most likely you will want to
 PROMPT note the times of the high drm freeze waits, look at what
 PROMPT LMS, RMV, LMD0, LMON is doing at those times, and go from there...
 set lines 140
 column program format a45 wra
 column sample_time format a25 tru
 column event format a30 tru
 column time_waited format 999999.999
 column p1 format a40 tru
 column p2 format a40 tru
 column p3 format a40 tru
 select sample_time, inst_id inst, session_id, program, event, time_waited/1000 TIME_WAITED,
 p1text||': '||p1 p1,p2text||': '||p2 p2,p3text||': '||p3 p3
 from gv$active_session_history
 where to_char(sample_time,'Mondd_hh24mi') in (select
 to_char(sample_time,'Mondd_hh24mi')
 from gv$active_session_history
 where event like '%drm freeze%'
 group by to_char(sample_time,'Mondd_hh24mi'), inst_id
 having sum(time_waited)/1000 > &&threshold)
 and time_waited > 0.5
 order by 1,2,3,4,5;
spool off
PROMPT
 PROMPT OUTPUT FILE IS: drmdiag_&&dbname&×tamp&&suffix
 PROMPT
【Oracle】Script to Collect DRM Information (drmdiag.sql) (文档 ID 1492990.1)的更多相关文章
- Script to Collect Log File Sync Diagnostic Information (lfsdiag.sql) (文档 ID 1064487.1)
		the article from :http://m.blog.itpub.net/31393455/viewspace-2130875/ Script to Collect Log File Syn ... 
- Oracle Recommended Patches -- "Oracle JavaVM Component Database PSU" (OJVM PSU) Patches (文档 ID 1929745.1)
		From: https://support.oracle.com What is "Oracle JavaVM Component Database PSU" ? Oracle J ... 
- Oracle版本发布规划 (文档 ID 742060.1)
		Oracle Database Release Schedule of Current Database Releases (文档 ID 742060.1) Oracle Database RoadM ... 
- ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档
		ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档 2015-10-21 12:51 525人阅读 评论(0) 收藏 举报 分类: Oracle RA ... 
- oracle数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)
		数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1) 文档内容 用途 详细信息 Patchsets ... 
- xtts v4for oracle 11g&12c(文档ID 2471245
		xtts v4for oracle 11g&12c(文档ID 2471245.1) 序号 主机 操作项目 操作内容 备注: 阶段一:初始阶段 1.1 源端 环境验证 migrate_check ... 
- SQL Tuning Health-Check Script (SQLHC) (文档 ID 1366133.1)
		Login to the database server and set the environment used by the Database Instance Download the &quo ... 
- Security Configuration and Auditing Scripts for Oracle E-Business Suite (文档 ID 2069190.1)
		This document provides the security configuration and auditing scripts for Oracle E-Business Suite. ... 
- Oracle Created Database Users: Password, Usage and Files References (文档 ID 160861.1)
		This document is no longer actively maintained, for info on specific (new) users in recent product e ... 
随机推荐
- mysql多实例启动、关闭
			启动(指定参数文件): [root@mysql01 ~]# mysqld_safe --defaults-file=/data/3306/my.cnf & [root@mysql01 ~]# ... 
- PHP字符串你不知道的事
			PHP常见的定义字符串的方式有那些? 1.单引号 在单引号中,任何特殊字符都会按原样输出[除\.\'将会被转义输出],不是什么都不解析的,这是很多人的误解 echo 'this is a var!'. ... 
- (转) SQL 中的 NULL 你真的懂了吗?【数据库|SQL】
			注:转载自下面链接 https://blog.csdn.net/lnotime/article/details/104847946 SQL 中的 NULL (译自 NULL Values in SQL ... 
- Kubernetes【K8S】(一):Kubernetes组件
			什么是Kubernetes  Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化.Kubernetes拥有一个庞大且快速增长的生态系统. ... 
- bugku 之 crypto:进制转换的python脚本
			题目如下: text.txt的内容: 知识点:python怎么做进制转换 除了自己按照计算方法写一遍进制转换,可以用python自带的强制转换: int(a,num) 其中,int是转换成十进制整数类 ... 
- Arduino PROGMEM 从程序空间读取float值的方法
			方法: 使用avr-libc提供的宏定义: #define pgm_read_float_near(address_short) __LPM_float((uint16_t)(address_shor ... 
- Python利用pandas处理数据后画图
			pandas要处理的数据是一个数据表格.代码: 1 import pandas as pd 2 import numpy as np 3 import matplotlib.pyplot as plt ... 
- 用Wireshark对Android应用的网络流量进行抓包
			通过Wireshark.Charles.Burpsuite等工具分析网络流量的过程,又叫做抓包. 为何需要抓包 测试手机应用(如搜狗号码通.搜狗手机浏览器)的功能时,经常遇到与网络交互的场景,这时候我 ... 
- asp.net mvc ajax文件上传
			前台页面提交文件 <!DOCTYPE html> <html> <head> <meta name="viewport" content= ... 
- Backdrop Filter
			CSS 滤镜 : backdrop-filter backdrop filter属性允许我们使用css对元素后面的内容应用过滤效果. 滤镜: 名称: 方法案例: 效果: blur() 模糊 filte ... 
