iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >oracle 11g如何创建基线
  • 657
分享到

oracle 11g如何创建基线

2024-04-02 19:04:59 657人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关oracle 11g如何创建基线,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 性能优化时大体有如下两种评估方式

这篇文章将为大家详细讲解有关oracle 11g如何创建基线,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

性能优化时大体有如下两种评估方式:如果希望知道性能度量值指示服务器接近容量限制,则应设置绝对值;但是如果希望知道今天的性能与上周(或者上个月)同一时间的性能之间的差异,则当前性能必须与基线进行比较,基线是某个时段内生成的一组快照,按照统计学对这些快照进行了分组,以便获得一组随时间变化的基线值,可以以任何时段快照采样来做基线,只不过一般情况下我们大多会选择系统正常时段的快照来做基线。


基线在oracle 10g中就出现了,而在oracle database 11g进一步增强了自动工作量资料档案库基线:


1 即用型移动窗口基线,可通过该基线指定自适应阀值


2 使用基线模板安排基线的创建操作


3 重命名基线


4 设置基线的到期日期


AWR baseline是指一个特定时间段内的性能数据,保留这些数据是为了在性能问题产生时与其他类似的工作负载时间段进行比较:


fixed baseline:fixed baseline表示的是您制定的一个固定的、连续的时间段


moving window baseline:表示的是war保留期内存在的所有war数据


Baseline template:您可以使用baseline template创建将来某个连续时间段的baseline,oracle中有两种baseline模板分别是single和repeating


创建fixed baseline:


sql> begin
   2  dbms_workload_repository.create_baseline(
   3  start_snap_id=>1510,
   4  end_snap_id=>1511,
   5  baseline_name=>'test_baseline');
   6  end;
   7  /
 
 PL/SQL procedure successfully completed.
 
 SQL> select dbid,baseline_name,start_snap_id,end_snap_id,MOVING_WINDOW_SIZE,EXPIRATioN from dba_hist_baseline;
 
       DBID BASELINE_NAME                                                    START_SNAP_ID END_SNAP_ID MOVING_WINDOW_SIZE EXPIRATION
 ---------- ---------------------------------------------------------------- ------------- ----------- ------------------ ----------
 4257181262 test_baseline                                                             1510        1511
 4257181262 SYSTEM_MOVING_WINDOW                                                      1515        1591                  8
创建baseline的procedure和function


根据snap_id创建:
 PROCEDURE CREATE_BASELINE
  Argument Name                  Type                    In/Out Default?
  ------------------------------ ----------------------- ------ --------
  START_SNAP_ID                  NUMBER                  IN
  END_SNAP_ID                    NUMBER                  IN
  BASELINE_NAME                  VARCHAR2                IN
  DBID                           NUMBER                  IN     DEFAULT
  EXPIRATION                     NUMBER                  IN     DEFAULT
 FUNCTION CREATE_BASELINE RETURNS NUMBER
  Argument Name                  Type                    In/Out Default?
  ------------------------------ ----------------------- ------ --------
  START_SNAP_ID                  NUMBER                  IN
  END_SNAP_ID                    NUMBER                  IN
  BASELINE_NAME                  VARCHAR2                IN
  DBID                           NUMBER                  IN     DEFAULT
  EXPIRATION                     NUMBER                  IN     DEFAULT
 
 根据时间创建:
 PROCEDURE CREATE_BASELINE
  Argument Name                  Type                    In/Out Default?
  ------------------------------ ----------------------- ------ --------
  START_TIME                     DATE                    IN
  END_TIME                       DATE                    IN
  BASELINE_NAME                  VARCHAR2                IN
  DBID                           NUMBER                  IN     DEFAULT
  EXPIRATION                     NUMBER                  IN     DEFAULT
 FUNCTION CREATE_BASELINE RETURNS NUMBER
  Argument Name                  Type                    In/Out Default?
  ------------------------------ ----------------------- ------ --------
  START_TIME                     DATE                    IN
  END_TIME                       DATE                    IN
  BASELINE_NAME                  VARCHAR2                IN
  DBID                           NUMBER                  IN     DEFAULT
  EXPIRATION                     NUMBER                  IN     DEFAULT
还可以删除和重命名baseline:


SQL> begin
   2  dbms_workload_repository.drop_baseline(
   3  baseline_name=>'test_baseline',
   4  cascade=>true);
   5  end;
   6  /
 
 PL/SQL procedure successfully completed.
在oracle 11g中系统已经默认创建moving window baseline:


SQL> select dbid,baseline_name,start_snap_id,end_snap_id,MOVING_WINDOW_SIZE,EXPIRATION from dba_hist_baseline;
 
       DBID BASELINE_NAME                                                    START_SNAP_ID END_SNAP_ID MOVING_WINDOW_SIZE EXPIRATION
 ---------- ---------------------------------------------------------------- ------------- ----------- ------------------ ----------
 4257181262 SYSTEM_MOVING_WINDOW                                                      1515        1591                  8
 
 drop baseline时如果指定cascade=>true,将把baseline对应的snap也级联删除了
oracle database会自动维护系统定义的moving window baseline,系统定义的moving window baseline的默认窗口大小就是当前的AWR保留期,如果打算使用自适应阀值,请考虑使用更长的移动窗口,比如30天,以便精确的计算阀值。移动窗口的大小调整为小于或等于AWR的保留天数,因为要增加移动窗口的大小,必须要先增加相应的AWR保留期限。


调整awr的保留周期:
 SQL> exec dbms_workload_repository.modify_snapshot_settings(retention=>43200);
 
 PL/SQL procedure successfully completed.
 
 SQL> select retention from dba_hist_wr_control;
 
 RETENTION
 ---------------------------------------------------------------------------
 +00030 00:00:00.0
 
 SQL> select baseline_id,baseline_name,moving_window_size from dba_hist_baseline;
 
 BASELINE_ID BASELINE_NAME                                                    MOVING_WINDOW_SIZE
 ----------- ---------------------------------------------------------------- ------------------
           0 SYSTEM_MOVING_WINDOW                                                              8
 
 SQL> exec dbms_workload_repository.modify_baseline_window_size(window_size=>30);
 
 PL/SQL procedure successfully completed.
 
 SQL> select baseline_id,baseline_name,moving_window_size from dba_hist_baseline;
 
 BASELINE_ID BASELINE_NAME                                                    MOVING_WINDOW_SIZE
 ----------- ---------------------------------------------------------------- ------------------
           0 SYSTEM_MOVING_WINDOW                                                             30
基线模板:基线模板允许定义可能在将来要捕捉的基线,create_baseline_template存储过程定义单一基线或重复基线的捕捉,创建单一基线模板与创建基于时间的基线类似,除了将来的时间外。


single基线模板:
 PROCEDURE CREATE_BASELINE_TEMPLATE
  Argument Name                  Type                    In/Out Default?
  ------------------------------ ----------------------- ------ --------
  START_TIME                     DATE                    IN
  END_TIME                       DATE                    IN
  BASELINE_NAME                  VARCHAR2                IN
  TEMPLATE_NAME                  VARCHAR2                IN
  EXPIRATION                     NUMBER                  IN     DEFAULT
  DBID                           NUMBER                  IN     DEFAULT
 
 SQL> exec DBMS_WORKLOAD_REPOSITORY.create_baseline_template(start_time=>TO_DATE('09-MAR-2016 00:00', 'DD-MON-YYYY HH24:MI'),end_time=>TO_DATE('16-MAR-2016 05:00', 'DD-MON-YYYY HH24:MI'),baseline_name=>'09_11_14_BS1',template_name =>'09_11_14_TP1',expiration=> 10);
 
 PL/SQL procedure successfully completed.
 
 SQL> select dbid,template_name,template_type,baseline_name_prefix,start_time,end_time,duration,expiration from dba_hist_baseline_template;
 
       DBID TEMPLATE_NAME                  TEMPLATE_ BASELINE_NAME_PREFIX           START_TIME          END_TIME              DURATION EXPIRATION
 ---------- ------------------------------ --------- ------------------------------ ------------------- ------------------- ---------- ----------
 4257181262 09_11_14_TP1                   SINGLE    09_11_14_BS1                   2016-03-09 00:00:00 2016-03-16 05:00:00                    10
重复基线模板稍微有点不同,因为它需要调度信息,start_time和end_time参数分别在模板激活和释放时定义,day_of_week、hour_in_day和duration定义产生基线的日期、时间和持续时间,因为模板会产生多个基线,基线名是以baseline_name_prefix开始的。


repeat基线模板:


PROCEDURE CREATE_BASELINE_TEMPLATE
  Argument Name                  Type                    In/Out Default?
  ------------------------------ ----------------------- ------ --------
  DAY_OF_WEEK                    VARCHAR2                IN
  HOUR_IN_DAY                    NUMBER                  IN
  DURATION                       NUMBER                  IN
  START_TIME                     DATE                    IN
  END_TIME                       DATE                    IN
  BASELINE_NAME_PREFIX           VARCHAR2                IN
  TEMPLATE_NAME                  VARCHAR2                IN
  EXPIRATION                     NUMBER                  IN     DEFAULT
  DBID                           NUMBER                  IN     DEFAULT
 
 exec DBMS_WORKLOAD_REPOSITORY.create_baseline_template(day_of_week=>'MONDAY',hour_in_day=>0,duration=>5,start_time=>SYSDATE,end_time=>ADD_MONTHS(SYSDATE, 6),baseline_name_prefix =>'monday_morning_bl',template_name=>'monday_morning_tp',expiration=> NULL);
 
 SQL> select dbid,TEMPLATE_NAME,TEMPLATE_TYPE,BASELINE_NAME_PREFIX,START_TIME,END_TIME,DAY_OF_WEEK,HOUR_IN_DAY,DURATION,EXPIRATION,REPEAT_INTERVAL from dba_hist_baseline_template;
 
       DBID TEMPLATE_NAME                  TEMPLATE_ BASELINE_NAME_PREFIX           START_TIME          END_TIME            DAY_OF_WE HOUR_IN_DAY   DURATION EXPIRATION
 ---------- ------------------------------ --------- ------------------------------ ------------------- ------------------- --------- ----------- ---------- ----------
 REPEAT_INTERVAL
 --------------------------------------------------------------------------------
 4257181262 09_11_14_TP1                   SINGLE    09_11_14_BS1                   2016-03-09 00:00:00 2016-03-16 05:00:00                                          10
 
 4257181262 monday_morning_tp              REPEATING monday_morning_bl              2016-03-15 02:54:55 2016-09-15 02:54:55 MONDAY              0          5
 FREQ=WEEKLY;INTERVAL=1;BYDAY=MON;BYHOUR=0;BYMINUTE=0;BYSECOND=0
上面介绍了基线,那么如何来使用基线和指定时段的快照做awr数据对比了,其实Oracle为我们提供出AWR Compare Period Report来方便实现指定时段的awr数据对比。


由于基线又由于可以一直保存在awr快照中,DBA做性能分析时则可以利用基线和故障时段的awr做对比,更进一步的分析数据库的性能趋势变化,下面简单的来做一个AWR数据时段对比:


SQL> select dbid,min(snap_id),max(snap_id) from dba_hist_snapshot group by dbid;
 
       DBID MIN(SNAP_ID) MAX(SNAP_ID)
 ---------- ------------ ------------
 4257181262         1508         1669
 
 这里创建snap_id 1656到1657的基线
 SQL> begin
   2      dbms_workload_repository.create_baseline(
   3      start_snap_id=>1656,
   4      end_snap_id=>1657,
   5      baseline_name=>'test_baseline');
   6      end;
   7      /
 
 PL/SQL procedure successfully completed.
 
 删除大部分snapshot
 SQL> exec dbms_workload_repository.drop_snapshot_range(1508, 1667, 4257181262);
 
 PL/SQL procedure successfully completed.
 
 SQL> select snap_id,begin_interval_time,end_interval_time from dba_hist_snapshot where dbid=4257181262;
 
    SNAP_ID BEGIN_INTERVAL_TIME                                                         END_INTERVAL_TIME
 ---------- --------------------------------------------------------------------------- ---------------------------------------------------------------------------
       1669 15-MAR-16 10.23.42.387 PM                                                   15-MAR-16 11.10.41.380 PM
       1656 11-MAR-16 10.00.33.158 PM                                                   14-MAR-16 08.40.27.499 PM
       1657 14-MAR-16 08.40.27.499 PM                                                   14-MAR-16 10.00.35.439 PM
       1668 15-MAR-16 08.41.44.009 PM                                                   15-MAR-16 10.23.42.387 PM
 
 这里也验证了之前awr baseline的部分对应的snapshot并不会被awr保留策略或者手动删除awr而删除掉。
接下来使用awrddrpt.sql脚本来生成两个awr的对比数据:


SQL> @awrddrpt.sql
 
 Current Instance
 ~~~~~~~~~~~~~~~~
 
    DB Id       DB Id    DB Name      Inst Num Inst Num Instance
 ----------- ----------- ------------ -------- -------- ------------
  4257181262  4257181262 ORA11G              1        1 ora11g
 
 Specify the Report Type
 ~~~~~~~~~~~~~~~~~~~~~~~
 Would you like an html report, or a plain text report?
 Enter 'html' for an HTML report, or 'text' for plain text
 Defaults to 'html'
 Enter value for report_type: html
 
 Type Specified:  html
 
 Instances in this Workload Repository schema
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
    DB Id     Inst Num DB Name      Instance     Host
 ------------ -------- ------------ ------------ ------------
   2350429211        1 TLINK        tlink        ylqz_s
 * 4257181262        1 ORA11G       ora11g       redhat-ora
 
 Database Id and Instance Number for the First Pair of Snapshots
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Using 4257181262 for Database Id for the first pair of snapshots
 Using          1 for Instance Number for the first pair of snapshots
 
 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: 3
 
 Listing the last 3 days of Completed Snapshots
 
                                                         Snap
 Instance     DB Name        Snap Id    Snap Started    Level
 ------------ ------------ --------- ------------------ -----
 ora11g       ORA11G            1656 14 Mar 2016 20:40      1
                                1657 14 Mar 2016 22:00      1
                                1668 15 Mar 2016 22:23      1
                                1669 15 Mar 2016 23:10      1
 
 Specify the First Pair of Begin and End Snapshot Ids
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Enter value for begin_snap: 1656
 First Begin Snapshot Id specified: 1656
 
 Enter value for end_snap: 1657
 First End   Snapshot Id specified: 1657
 
 Instances in this Workload Repository schema
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
    DB Id     Inst Num DB Name      Instance     Host
 ------------ -------- ------------ ------------ ------------
   2350429211        1 TLINK        tlink        ylqz_s
 * 4257181262        1 ORA11G       ora11g       redhat-ora
 
 Database Id and Instance Number for the Second Pair of Snapshots
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Using 4257181262 for Database Id for the second pair of snapshots
 Using          1 for Instance Number for the second pair of snapshots
 
 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_days2: 3
 
 Listing the last 3 days of Completed Snapshots
 
                                                         Snap
 Instance     DB Name        Snap Id    Snap Started    Level
 ------------ ------------ --------- ------------------ -----
 ora11g       ORA11G            1656 14 Mar 2016 20:40      1
                                1657 14 Mar 2016 22:00      1
                                1668 15 Mar 2016 22:23      1
                                1669 15 Mar 2016 23:10      1
 
 Specify the Second Pair of Begin and End Snapshot Ids
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Enter value for begin_snap2: 1668
 Second Begin Snapshot Id specified: 1668
 
 Enter value for end_snap2: 1669
 Second End   Snapshot Id specified: 1669
 
 Specify the Report Name
 ~~~~~~~~~~~~~~~~~~~~~~~
 The default report file name is awrdiff_1_1656_1_1668.html  To use this name,
 press 
    
      to continue, otherwise enter an alternative.
 
 Enter value for report_name: /home/oracle/awr0316.hmtl

关于“oracle 11g如何创建基线”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: oracle 11g如何创建基线

本文链接: https://www.lsjlt.com/news/64018.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle 11g如何创建基线
    这篇文章将为大家详细讲解有关oracle 11g如何创建基线,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 性能优化时大体有如下两种评估方式...
    99+
    2024-04-02
  • 手工创建Oracle 11g数据库
    配置Oracle环境变量 1、编辑.bash_profile [oracle@FDB ~]$ vi ~/.bash_profile 2、使配置文件生效 [oracle@FDB ~]$ . .bas...
    99+
    2024-04-02
  • oracle 11g如何构建physical DG
    小编给大家分享一下oracle 11g如何构建physical DG,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • 基于RHEL 6.5如何安装Oracle 11g
    小编给大家分享一下基于RHEL 6.5如何安装Oracle 11g,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!6  ...
    99+
    2024-04-02
  • oracle 11g如何进行手工建库
    这篇文章给大家介绍oracle 11g如何进行手工建库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。工作环境: ORE 6.5手工建库是作为dba必须掌握的一个基本技能,它使清楚的认识oracle的目录结构、oracl...
    99+
    2023-06-06
  • Oracle 11g中怎么创建用户并赋权限
    Oracle 11g中怎么创建用户并赋权限,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 用户 建...
    99+
    2024-04-02
  • Centos6.5 + Oracle 11g r2 + nfs如何搭建RAC环境
    本篇文章给大家分享的是有关Centos6.5 + Oracle 11g r2 + nfs如何搭建RAC环境,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起...
    99+
    2024-04-02
  • ORACLE如何创建jobs
    这篇文章主要介绍了ORACLE如何创建jobs,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 一、使用Jobs   所谓JO...
    99+
    2024-04-02
  • 如何用_beginthreadex()创建线程
    这篇文章主要讲解了“如何用_beginthreadex()创建线程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用_beginthreadex()创建线程”吧!一、使用_beginthr...
    99+
    2023-06-22
  • Java线程池如何创建
    本文小编为大家详细介绍“Java线程池如何创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java线程池如何创建”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。线程池的好处可以实现线程的复用,避免重新创建线程和...
    99+
    2023-06-29
  • android如何创建子线程
    在Android中创建子线程有多种方式,以下是其中两种常用的方式:1. 使用Thread类创建子线程:```javanew Thre...
    99+
    2023-08-12
    android
  • Android如何创建线程池
    在Android中,可以使用`ThreadPoolExecutor`类来创建线程池。下面是创建线程池的步骤:1. 导入所需的类:``...
    99+
    2023-09-12
    Android
  • springboot如何创建线程池
    这篇文章主要介绍springboot如何创建线程池,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!springboot创建线程池两种方式1.使用static代码块创建这样的方式创建的好处是当代码用到线程池的时候才会初始...
    99+
    2023-06-22
  • oracle如何创建视图
    要创建一个视图,可以使用 CREATE VIEW 语句。以下是一个创建视图的示例:```CREATE VIEW view_name ...
    99+
    2023-08-08
    oracle
  • oracle 11G RAC如何改IP
    这篇文章将为大家详细讲解有关oracle 11G RAC如何改IP,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 #host IP10.16...
    99+
    2024-04-02
  • 如何理解oracle 11g DRM
    这期内容当中小编将会给大家带来有关如何理解oracle 11g DRM,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 DRM 简介 首先,我们对和DRM 相关的一些...
    99+
    2024-04-02
  • oracle 12c如何导入11g
    这篇文章给大家分享的是有关oracle 12c如何导入11g的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 迁移前字符集查看sqlplus &quo...
    99+
    2024-04-02
  • oracle中如何创建 dblink
    这篇文章给大家介绍oracle中如何创建 dblink ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  1、已经配置本地服务以下是引用片段:  create public&...
    99+
    2024-04-02
  • 如何在java中创建线程
    本篇文章为大家展示了如何在java中创建线程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4....
    99+
    2023-06-14
  • Linux系统如何创建线程
    这篇文章主要为大家展示了“Linux系统如何创建线程”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统如何创建线程”这篇文章吧。在创建多个控制线程以前,程序的行为与传统的进程并没有什么...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作