最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

查看scnheadroom变化趋势的几种方法

来源:动视网 责编:小采 时间:2020-11-09 14:57:58
文档

查看scnheadroom变化趋势的几种方法

查看scnheadroom变化趋势的几种方法:查看scn headroom变化趋势的几种方法 scn headroom问题,本文不做解释。 本文为自己的总结,脚本来自于oracle sr技术工程师。 转载请注明出处http://blog.csdn.net/msdnchina/article/details/38404501 第一个方法:查询smon_scn
推荐度:
导读查看scnheadroom变化趋势的几种方法:查看scn headroom变化趋势的几种方法 scn headroom问题,本文不做解释。 本文为自己的总结,脚本来自于oracle sr技术工程师。 转载请注明出处http://blog.csdn.net/msdnchina/article/details/38404501 第一个方法:查询smon_scn


查看scn headroom变化趋势的几种方法 scn headroom问题,本文不做解释。 本文为自己的总结,脚本来自于oracle sr技术工程师。 转载请注明出处http://blog.csdn.net/msdnchina/article/details/38404501 第一个方法:查询smon_scn_time表获得。conn / as sysdb

查看scn headroom变化趋势的几种方法

scn headroom问题,本文不做解释。

本文为自己的总结,脚本来自于oracle sr技术工程师。

转载请注明出处http://blog.csdn.net/msdnchina/article/details/38404501

第一个方法:查询smon_scn_time表获得。conn / as sysdba
set numwidth 17
set pages 1000
alter session set nls_date_format='DD/Mon/YYYY HH24:MI:SS';
with t1 as(
select time_dp , 24*60*60*(time_dp - lag(time_dp) over (order by time_dp)) timediff,
scn - lag(scn) over(order by time_dp) scndiff
from smon_scn_time
)
select time_dp , timediff, scndiff,
trunc(scndiff/timediff) rate_per_sec
from t1
order by 1;

第二个方法:查询awr报告的信息:

1. 通过How to extract the historical values of a statistic from AWR Repository (Doc ID 948272.1)
将Script 部分复制到您生成数据库两个实例本地,命名为 例如 awr.sql

该脚本为:
set trimspool on
set pages 50000
set lines 132
set tab off
set feedback off

clear break compute;
repfooter off;
ttitle off;
btitle off;
set timing off veri off space 1 flush on pause off termout on numwidth 10;
set echo off feedback off pagesize 50000 linesize 1000 newpage 1 recsep off;
set trimspool on trimout on;

-- 
-- Request the DB Id and Instance Number, if they are not specified


column instt_num heading "Inst Num" format 99999;
column instt_name heading "Instance" format a12;
column dbb_name heading "DB Name" format a12;
column dbbid heading "DB Id" format a12 just c;
column host heading "Host" format a20;


prompt
prompt
prompt instances IN this workload repository SCHEMA
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECT DISTINCT ( CASE
 WHEN cd.dbid = wr.dbid
 AND cd.name = wr.db_name
 AND ci.instance_number = wr.instance_number
 AND ci.instance_name = wr.instance_name THEN '* '
 ELSE ' '
 END )
 || wr.dbid dbbid,
 wr.instance_number instt_num,
 wr.db_name dbb_name,
 wr.instance_name inst_name,
 wr.host_name host
FROM dba_hist_database_instance wr,
 v$database cd,
 v$instance ci;


prompt
prompt USING &&dbid FOR DATABASE id
-- 
-- Set up the binds for dbid and instance_number
variable dbid NUMBER;
BEGIN
 :dbid := &dbid;
END;
/
-- Error reporting
whenever SQLERROR EXIT;
variable max_snap_time CHAR(10);
DECLARE
 CURSOR cidnum IS
 SELECT 'X'
 FROM dba_hist_database_instance
 WHERE dbid = :dbid;
 CURSOR csnapid IS
 SELECT To_char(Max(end_interval_time), 'dd/mm/yyyy')
 FROM dba_hist_snapshot
 WHERE dbid = :dbid;
 vx CHAR(1);
BEGIN
 -- Check Database Id/Instance Number is a valid pair
 OPEN cidnum;


 FETCH cidnum INTO vx;


 IF cidnum%NOTFOUND THEN
 Raise_application_error(-20200, 'Database/Instance '
 || :dbid
 || '/'
 ||
 ' does not exist in DBA_HIST_DATABASE_INSTANCE');
 END IF;


 CLOSE cidnum;


 -- Check Snapshots exist for Database Id/Instance Number
 OPEN csnapid;


 FETCH csnapid INTO :max_snap_time;


 IF csnapid%NOTFOUND THEN
 Raise_application_error(-20200,
 'No snapshots exist for Database/Instance '
 ||:dbid
 ||'/');
 END IF;


 CLOSE csnapid;
END;
/


whenever SQLERROR CONTINUE;
-- 
-- Ask how many days of snapshots to display
set termout ON;
column instart_fmt noprint;
column inst_name format a12 heading 'Instance';
column db_name format a12 heading 'DB Name';
column snap_id format 99999990 heading 'Snap Id';
column snapdat format a18 heading 'Snap Started' just c;
column lvl format 99 heading 'Snap|Level';
prompt
prompt
prompt specify the NUMBER OF days OF snapshots TO choose FROM
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prompt entering the NUMBER OF days (n) will result IN the most recent
prompt (n) days OF snapshots being listed. pressing without
prompt specifying a NUMBER LISTS ALL completed snapshots.
prompt
prompt
set heading OFF;
column num_days new_value num_days noprint;
SELECT 'Listing '
 || Decode(Nvl('&&num_days', 3.14), 0, 'no snapshots',
 3.14, 'all Completed Snapshots',
 1,
 'the last day''s Completed Snapshots',
 'the last &num_days days of Completed Snapshots'
 ),
 Nvl('&&num_days', 3.14) num_days
FROM sys.dual;


set heading ON;
-- 
-- List available snapshots
break ON inst_name ON db_name ON host ON instart_fmt skip 1;
ttitle OFF;
SELECT To_char(s.startup_time, 'dd Mon "at" HH24:mi:ss') instart_fmt,
 di.instance_name inst_name,
 di.db_name db_name,
 s.snap_id snap_id,
 To_char(s.end_interval_time, 'dd Mon YYYY HH24:mi') snapdat,
 s.snap_level lvl
FROM dba_hist_snapshot s,
 dba_hist_database_instance di
WHERE s.dbid = :dbid
 AND di.dbid = :dbid
 AND di.dbid = s.dbid
 AND di.instance_number = s.instance_number
 AND di.startup_time = s.startup_time
 AND s.end_interval_time >= Decode(&num_days, 0, To_date('31-JAN-9999',
 'DD-MON-YYYY'
 ),
 3.14, s.end_interval_time,
 To_date(:max_snap_time,
 'dd/mm/yyyy')
 - ( &num_days - 1 ))
ORDER BY db_name,
 instance_name,
 snap_id;


clear break;
ttitle OFF;
-- 
-- Ask for the snapshots Id's which are to be compared
prompt
prompt
prompt specify the BEGIN AND END SNAPSHOT ids
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prompt BEGIN SNAPSHOT id specified: &&begin_snap
prompt
prompt END SNAPSHOT id specified: &&end_snap
prompt
-- 
-- Set up the snapshot-related binds
-- 
variable bid NUMBER;
variable eid NUMBER;
BEGIN
 :bid := &begin_snap;


 :eid := &end_snap;
END;
/


prompt
-- 
-- Ask for Statistics Name Filter
-- 
prompt
prompt
prompt search statistic
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prompt search BY STATISTICS name. pressing without
prompt specifying anything show ALL STATISTICS.
set heading OFF;
column stat_search new_value stat_search noprint;
SELECT 'Statistic Name Filter: '
 || Nvl('&&stat_search', '%'),
 Nvl('&&stat_search', '%') stat_search
FROM sys.dual;


set heading ON;
column stat_id heading "Statistic ID" format 9999999999999;
column name heading "Statistic Name" format a64;
column class_name heading "Statistic Class" format a10;
SELECT stat_id,
 ( CASE
 WHEN class = 1 THEN 'USER'
 WHEN class = 2 THEN 'REDO'
 WHEN class = 4 THEN 'ENQUEUE'
 WHEN class = 8 THEN 'CACHE'
 WHEN class = 16 THEN 'OS'
 WHEN class = 32 THEN 'RAC'
 WHEN class = 40 THEN 'RAC-CACHE'
 WHEN class = 64 THEN 'SQL'
 WHEN class = 72 THEN 'SQL-CACHE'
 WHEN class = 128 THEN 'DEBUG'
 ELSE To_char(class)
 END ) CLASS_NAME,
 name
FROM v$sysstat
WHERE Upper(name) LIKE Trim(Upper('%&stat_search%'))
ORDER BY class,
 name
/


-- 
-- Ask for the statistics
variable stat_filter_id NUMBER
variable stat_filter_name VARCHAR2(64)
prompt
prompt
prompt specify the STATISTICS
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prompt enter STATISTICS id OR STATISTICS name.
prompt
BEGIN
 SELECT To_number('&&stat_input')
 INTO :stat_filter_id
 FROM dual;
EXCEPTION
 WHEN invalid_number THEN
 :stat_filter_name := '&stat_input';
END;
/


prompt STATISTICS specified : &&stat_input
column end_interval_time heading 'Snap Started' format a18 just c;
column dbid heading 'DB Id' format a12 just c;
column instance_number heading 'Inst|Num' format 99999;
column elapsed heading 'Elapsed' format 999999;
column stat_value heading 'Stat Value' format 999999999999
column stat_name heading 'Stat Name' format a64 just l;
SELECT snap_id,
 To_char(dbid) DBID,
 instance_number,
 elapsed,
 To_char(end_interval_time, 'dd Mon YYYY HH24:mi') END_INTERVAL_TIME,
 --stat_name,
 ( CASE
 WHEN stat_value > 0 THEN stat_value
 ELSE 0
 END ) STAT_VALUE
FROM (SELECT snap_id,
 dbid,
 instance_number,
 elapsed,
 end_interval_time,
 stat_name,
 ( stat_value - Lag (stat_value, 1, stat_value)
 over (
 PARTITION BY dbid, instance_number
 ORDER BY snap_id) ) AS STAT_VALUE
 FROM (SELECT snap_id,
 dbid,
 instance_number,
 elapsed,
 end_interval_time,
 stat_name,
 SUM(stat_value) AS STAT_VALUE
 FROM (SELECT X.snap_id,
 X.dbid,
 X.instance_number,
 Trunc(SN.end_interval_time, 'mi')
 END_INTERVAL_TIME,
 X.stat_name,
 Trunc(( Cast(SN.end_interval_time AS DATE) -
 Cast(SN.begin_interval_time AS DATE) ) *
 86400) ELAPSED,
 ( CASE
 WHEN ( X.stat_name = :stat_filter_name
 OR X.stat_id = :stat_filter_id ) THEN
 X.value
 ELSE 0
 END ) AS STAT_VALUE
 FROM dba_hist_sysstat X,
 dba_hist_snapshot SN,
 (SELECT instance_number,
 Min(startup_time) STARTUP_TIME
 FROM dba_hist_snapshot
 WHERE snap_id BETWEEN :bid AND :eid
 GROUP BY instance_number) MS
 WHERE X.snap_id = sn.snap_id
 AND X.dbid = sn.dbid
 AND x.dbid = :dbid
 AND x.snap_id BETWEEN :bid AND :eid
 AND SN.startup_time = MS.startup_time
 AND SN.instance_number = MS.instance_number
 AND X.instance_number = sn.instance_number
 AND ( X.stat_name = :stat_filter_name
 OR X.stat_id = :stat_filter_id ))
 GROUP BY snap_id,
 dbid,
 instance_number,
 elapsed,
 end_interval_time,
 stat_name));




undefine dbid
undefine num_days
undefine begin_snap
undefine end_snap
undefine stat_id
undefine stat_search
undefine stat_filter_name
undefine stat_filter_id
undefine stat_input 


---该脚本结束。

2. 在SQLPLUS中运行该脚本,并根据您系统实际情况输入

instances IN this workload repository SCHEMA
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


DB Id Inst Num DB Name INST_NAME Host
------------ -------- ------------ ---------------- --------------------
* 1163866261 1 RBIG5 RBIG5 xxx
m


Enter value for dbid: 1163866261 《=====输入实例ID
USING 1163866261 FOR DATABASE id

specify the NUMBER OF days OF snapshots TO choose FROM
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
entering the NUMBER OF days (n) will result IN the most recent
(n) days OF snapshots being listed. pressing without
specifying a NUMBER LISTS ALL completed snapshots.

Enter value for num_days: 2 <===输入AWR采样天数

specify the BEGIN AND END SNAPSHOT ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 1605
BEGIN SNAPSHOT id specified: 1605 《===根据对话输入起始snapshot 序号


Enter value for end_snap: 1639
END SNAPSHOT id specified: 1639《===根据对话输入结束snapshot 序号

search statistic
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
search BY STATISTICS name. pressing without
specifying anything show ALL STATISTICS.
Enter value for stat_search: calls to kcmgas 《======输入需要显示的统计项: calls to kcmgas


Statistic Name Filter: calls to kcmgas


Statistic ID Statistic Statistic Name
-------------- ---------- ----------------------------------------------------------------
4072914524 DEBUG calls to kcmgas

specify the STATISTICS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
enter STATISTICS id OR STATISTICS name.

Enter value for stat_input: 4072914524 《======输入统计项返回的ID

最后,将返回一个列表,例如

Inst
Snap Id DB Id Num Elapsed Snap Started Stat Value
--------- ------------ ------ ------- ------------------ -------------
1605 1163866261 1 3600 08 Sep 2013 00:00 0
1606 1163866261 1 3601 08 Sep 2013 01:00 170
1607 1163866261 1 3600 08 Sep 2013 02:00 164
。。
1626 1163866261 1 3600 08 Sep 2013 21:00 155
1627 1163866261 1 3600 08 Sep 2013 22:00 165
1628 1163866261 1 3600 08 Sep 2013 23:00 2065《===如果有类似跳变发生,则表示数据库内部交易产生的剧烈变化,非DBLINK造成。
。。
1636 1163866261 1 3600 09 Sep 2013 07:00 145
1637 1163866261 1 3601 09 Sep 2013 08:00 174
1638 1163866261 1 3600 09 Sep 2013 09:00 156
1639 1163866261 1 3600 09 Sep 2013 10:00 142

请提供您的
输出结果来作为SCN 非外部数据库DBLINK造成跳变的调查结果。 第三个方法:查询v$archived_log视图(前提是数据库开启归档模式)
set numwidth 17 
set pages 1000 
alter session set nls_date_format='DD/Mon/YYYY HH24:MI:SS'; 
SELECT tim, gscn, 
round(rate), 
round((chk16kscn - gscn)/24/3600/16/1024,1) "Headroom" 
FROM 
( 
select tim, gscn, rate, 
(( 
((to_number(to_char(tim,'YYYY'))-1988)*12*31*24*60*60) + 
((to_number(to_char(tim,'MM'))-1)*31*24*60*60) + 
(((to_number(to_char(tim,'DD'))-1))*24*60*60) + 
(to_number(to_char(tim,'HH24'))*60*60) + 
(to_number(to_char(tim,'MI'))*60) + 
(to_number(to_char(tim,'SS'))) 
) * (16*1024)) chk16kscn 
from 
( 
select FIRST_TIME tim , FIRST_CHANGE# gscn, 
((NEXT_CHANGE#-FIRST_CHANGE#)/ 
((NEXT_TIME-FIRST_TIME)*24*60*60)) rate 
from v$archived_log 
where (next_time > first_time) 
) 
) 
order by 1,2 
; 

文档

查看scnheadroom变化趋势的几种方法

查看scnheadroom变化趋势的几种方法:查看scn headroom变化趋势的几种方法 scn headroom问题,本文不做解释。 本文为自己的总结,脚本来自于oracle sr技术工程师。 转载请注明出处http://blog.csdn.net/msdnchina/article/details/38404501 第一个方法:查询smon_scn
推荐度:
标签: 查看 方法 变化
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top