iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >oracle的快照和基线
  • 222
分享到

oracle的快照和基线

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

1.查看当前的AWR保存策略select * from dba_hist_wr_control;DBID,SNAP_INTERVAL,RETENTioN,TOPNsql860524039,+00

1.查看当前的AWR保存策略
select * from dba_hist_wr_control;

DBID,SNAP_INTERVAL,RETENTioN,TOPNsql
860524039,+00 01:00:00.000000,+07 00:00:00.000000,DEFAULT

以上结果表示,每小时产生一个SNAPSHOT,保留7天

2.调整AWR配置
AWR配置都是通过dbms_workload_repository包进行配置

2.1调整AWR产生snapshot的频率和保留策略,如:如将收集间隔时间改为30 分钟一次。并且保留5天时间(注:单位都是为分钟):
exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);

2.2关闭AWR,把interval设为0则关闭自动捕捉快照

2.3手工创建一个快照
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();

2.4 查看快照
select * from sys.wrh$_active_session_history

2.5手工删除指定范围的快照
exec WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 22, high_snap_id => 32, dbid => 3310949047);

2.6创建baseline
exec dbms_workload_repository.create_baseline (56,59,'apply_interest_1')

2.7删除baseline
exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ' apply_interest_1', cascade => FALSE);


3.生产AWR报告
$oracle_HOME/rdbms/admin/awrrpt.sql

 

4.1 Snapshots( 快照)

  前面操作报表生成时,snap这个关键字已经出现过多次了,想必你对它充满了疑惑,这个东西是哪来的咋来的谁让它来的呢?事实上,Snap是Snapshot的简写,这正是AWR在自动性方面的体现,虽然你没有创建,但是AWR自动帮你创建了(当然也可以手动创建snapshot),并且是定时(每小时)创建,定期清除(保留最近7天)。

  Snapshots 是一组某个时间点时历史数据的集合,这些数据就可被ADDM(Automatic Database Diagnostic Monitor)用来做性能对比。默认情况下,AWR能够自动以每小时一次的频率生成Snapshots性能数据,并保留7天,,如果需要的话,DBA可以通过DBMS_WORKLOAD_REPOSITORY过程手动创建、删除或修改snapshots。

  • 提示:调用DBMS_WORKLOAD_REPOSITORY包需要拥有DBA权限。

4.1.1  手动创建Snapshots

  手动创建Snapshots,通过DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT过程,例如:

SQL> exec dbms_workload_repository.create_snapshot();

  • PL/SQL procedure successfully completed.

  然后可以通过DBA_HIST_SNAPSHOT 视图查看刚刚创建的Snapshots信息。

4.1.2  手动删除Snapshots

  删除Snapshots是使用DBMS_WORKLOAD_REPOSITORY包的另一个过程:DROP_SNAPSHOT_RANGE,该过程在执行时可以通过指定snap_id的范围的方式一次删除多个Snapshots,例如:

SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;

  COUNT(0)

----------

        10

SQL> begin

  2   dbms_workload_repository.drop_snapshot_range(

  3     low_snap_id => 7509,

  4     high_snap_id => 7518,

  5     dbid => 3812548755);

  6  end;

  7  /

PL/SQL procedure successfully completed.

SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;

  COUNT(0)

----------

  •          0

  注意当snapshots被删除的话,与其关联的ASH记录也会级联删除。

4.1.3  修改Snapshots设置

  通过MODIFY_SNAPSHOT_SETTINGS过程,DBA可以调整包括快照收集频率、快照保存时间、以及捕获的SQL数量三个方面的设置。分别对应MODIFY_SNAPSHOT_SETTINGS的三个参数:

  • Retention :设置快照保存的时间,单位是分钟。可设置的值最小为1天,最大为100年。设置该参数值为0的话,就表示永久保留收集的快照信息。

  • Interval :设置快照收集的频率,以分钟为单位。可设置的值最小为10分钟,最大为1年。如果设置该参数值为0,就表示禁用AWR特性。

  • Topnsql :指定收集的比较占用资源的SQL数量,可设置的值最小为30,最大不超过100000000。

  查看当前快照收集的相关设置,可以通过DBA_HIST_WR_CONTROL视图查看,例如:

SQL> select * from dba_hist_wr_control;


      DBID SNAP_INTERVAL            RETENTION            TOPNSQL

---------- ------------------------ -------------------- ----------

  • 3812548755 +00000 01:00:00.0        +00007 00:00:00.0    DEFAULT

  又比如通过MODIFY_SNAPSHOT_SETTTINGS过程修改snap_intrval的设置:

SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>120);

PL/SQL procedure successfully completed.

SQL> select * from dba_hist_wr_control;


      DBID SNAP_INTERVAL            RETENTION            TOPNSQL

---------- ------------------------ -------------------- ----------

  • 3812548755 +00000 02:00:00.0        +00007 00:00:00.0    DEFAULT

4.2 Baselines( 基线)

  Baseline ,直译的话叫做基线,顾名思义的方式理解,就是用于比较的基本线。因为Baseline中包含指定时间点时的性能数据,因此就可以用来与其它时间点时的状态数据做对比,以分析性能问题。

  创建Baseline时,Snapshots是做为其中的一个组成部分存在,因此一般来说当AWR自动维护快照时,如果定义过baseline,与baseline相关的快照不会被删除,即使是过期的快照,这样就相当于手动保留了一份统计数据的历史信息,DBA可以在适当的时间将其与现有的快照进行对比,以生成相关的统计报表。

  用户可以通过DBMS_WORKLOAD_REPOSITORY包中的相关过程,手动的创建或删除Baseline。

4.2.1  创建Baseline

  创建Baseline使用CREATE_BASELINE过程,执行该过程时分别指定开始和结果的snap_id,然后为该baseline定义一个名称即可,例如:

SQL> BEGIN

  2    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id => 7550,

  3                                             end_snap_id   => 7660,

  4                                             baseline_name => ¨am_baseline¨);

  5  END;

  6  /

PL/SQL procedure successfully completed.

SQL> select dbid,baseline_name,start_snap_id,end_snap_id from dba_hist_baseline;

      DBID BASELINE_NAME        START_SNAP_ID END_SNAP_ID

---------- -------------------- ------------- -----------

  • 3812548755 am_baseline                   7550        7660

4.2.2  删除Baseline

  删除Baseline使用DROP_BASELINE过程,删除时可以通过cascade参数选择是否将其关联的Snapshots级别进行删除,例如:

SQL> BEGIN

  2    DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ¨am_baseline¨,

  3                                           cascade       => true);

  4  END;

  5  /

PL/SQL procedure successfully completed.

SQL> select * from dba_hist_baseline;

no rows selected

SQL> select * from dba_hist_snapshot where snap_id between 7550 and 7660;

  • no rows selected

  如上例中所示,删除时指定了cascade参数值为true,对应的snap也被级联删除了。

 

不管是EM也好,或是前面演示中使用的awr*.sql脚本也好,实质都是访问ORACLE中的部分相关视图来生成统计数据,因此如果DBA对自己的理解能力有足够的自信,也可以直接查询动态性能视图(或相关数据字典)的方式来获取自己想要的那部分性能数据。ORACLE将这部分性能统计数据保存在DBA_HIST开头的数据字典中,要查询当前实例所有能够访问的DBA_HIST字典,可以通过下列语句:

SQL> select * from dict where table_name like ¨DBA_HIST%¨;

TABLE_NAME COMMENTS

------------------------------ --------------------------------------------------------------------------------

DBA_HIST_DATABASE_INSTANCE Database Instance InfORMation

DBA_HIST_SNAPSHOT Snapshot Information

DBA_HIST_SNAP_ERROR Snapshot Error Information

DBA_HIST_BASELINE Baseline Metadata Information

DBA_HIST_WR_CONTROL Workload Repository Control Information

DBA_HIST_DATAFILE Names of Datafiles

DBA_HIST_FILESTATXS Datafile Historical Statistics Information

DBA_HIST_TEMPFILE Names of Temporary Datafiles

DBA_HIST_TEMPSTATXS Temporary Datafile Historical Statistics Information

DBA_HIST_COMP_iOSTAT I/O stats aggregated on component level

DBA_HIST_SQLSTAT SQL Historical Statistics Information

DBA_HIST_SQLTEXT SQL Text

......................

  • ........................

  ORACLE 数据库中以DBA_HIST命名的视图非常多,下面简单介绍几个,比如说:

V$ACTIVE_SESSION_HISTORY


  该视图由ASH自动维护,以每秒一次的频率收集当前系统中活动session的信息。虽然说是记录SESSION的历史记录,不过该视图与V$SESSION还是有差异的。

SQL> desc v$active_session_history;

Name Type Nullable Default Comments

------------------------- ------------ -------- ------- --------

SAMPLE_ID NUMBER Y

SAMPLE_TIME TIMESTAMP(3) Y

SESSION_ID NUMBER Y

SESSION_SERIAL# NUMBER Y

USER_ID NUMBER Y

SQL_ID VARCHAR2(13) Y

SQL_CHILD_NUMBER NUMBER Y

SQL_PLAN_HASH_VALUE NUMBER Y

FORCE_MATCHING_SIGNATURE NUMBER Y

SQL_OPCODE NUMBER Y

PLSQL_ENTRY_OBJECT_ID NUMBER Y

PLSQL_ENTRY_SUBPROGRAM_ID NUMBER Y

PLSQL_OBJECT_ID NUMBER Y

PLSQL_SUBPROGRAM_ID NUMBER Y

SERVICE_HASH NUMBER Y

SESSION_TYPE VARCHAR2(10) Y

SESSION_STATE VARCHAR2(7) Y

QC_SESSION_ID NUMBER Y

QC_INSTANCE_ID NUMBER Y

BLOCKING_SESSION NUMBER Y

BLOCKING_SESSION_STATUS VARCHAR2(11) Y

BLOCKING_SESSION_SERIAL# NUMBER Y

EVENT VARCHAR2(64) Y

EVENT_ID NUMBER Y

EVENT# NUMBER Y

SEQ# NUMBER Y

P1TEXT VARCHAR2(64) Y

P1 NUMBER Y

P2TEXT VARCHAR2(64) Y

P2 NUMBER Y

P3TEXT VARCHAR2(64) Y

P3 NUMBER Y

WaiT_CLASS VARCHAR2(64) Y

WAIT_CLASS_ID NUMBER Y

WAIT_TIME NUMBER Y

TIME_WAITED NUMBER Y

XID RAW(8) Y

CURRENT_OBJ# NUMBER Y

CURRENT_FILE# NUMBER Y

CURRENT_BLOCK# NUMBER Y

PROGRAM VARCHAR2(48) Y

MODULE VARCHAR2(48) Y

ACTION VARCHAR2(32) Y

  • CLIENT_ID VARCHAR2(64) Y

  v$session 中与操作相关的列均被收集,除此之外还冗余了部分列,这是为了方便DBA查询V$ACTIVE_SESSION_HISTORY时能够快速获取到自己需要的数据。

DBA_HIST_ACTIVE_SESS_HISTORY


  该视图与V$ACTIVE_SESSION_HISTORY的结构灰常灰常灰常的想像,功能也灰常灰常灰常的类似,都是记录活动session的操作记录,所不同点在于,V$ACTIVE_SESSION_HISTORY是ORACLE自动在内存中维护的,受制于其可用内存区限制,并非所有记录都能保存,而DBA_HIST_ACTIVE_SESS_HISTORY视图则是维护到磁盘中的。简单理解的话,就是说通常情况下,DBA_HIST_ACTIVE_SESS_HISTORY视图的数据量要比V$ACTIVE_SESSION_HISTORY的多。

  • 提示:上述结构并不绝对,因为默认情况下DBA_HIST_ACTIVE_SESS_HISTORY字典的数据每10秒收集一次,而V$ACTIVE_SESSION_HISTORY中则是每秒一次,因此也有可能V$ACTIVE_SESSION_HISTORY中记录量更大。不过相对来说,DBA_HIST字典中保存的数据更长久。

DBA_HIST_DATABASE_INSTANCE


  该视图用来显示数据库和实例的信息,比如DBID,实例名,数据库版本等等信息,生成报表中第一行表格,就是由该视图生成的。如图:

  oracle的快照和基线

  如果你去分析awrrpt.sql脚本的话,会发现其中有如下脚本,上述表格中显示的内容信息,正是来自于下列脚本:

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 instt_name

, wr.host_name host

  • from dba_hist_database_instance wr, v$database cd, v$instance ci;

DBA_HIST_SNAPSHOT


  该视图用来记录当前数据库收集到的快照信息。相信朋友应该还记得之前使用脚本生成报表时,输入完快照区间后显示的一堆列表,没错,那正是DBA_HIST_SNAPSHOT记录的内容,该段功能对应的代码如下:

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 s.instance_number = :inst_num

and di.instance_number = :inst_num

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;

 


您可能感兴趣的文档:

--结束END--

本文标题: oracle的快照和基线

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

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

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

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

下载Word文档
猜你喜欢
  • Oracle的快照standby有什么特点
    这篇文章主要讲解了“Oracle的快照standby有什么特点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle的快照standby有什么特点”吧!...
    99+
    2024-04-02
  • oracle怎么查看表快照
    要查看Oracle数据库中的表快照,可以使用以下方法:1. 使用DBA视图:可以使用以下查询语句来查看表快照的信息:```SELEC...
    99+
    2023-08-26
    oracle
  • 快照读和当前读
    1、快照读(普通读) 普通的 select 语句。 执行方式是生成 readview,直接利用 MVCC 机制来读取,并不会对记录进行加锁。 它是基于多版本并发控制即 MVCC机制,既然是多版本,那么快照读读到的数据不一定是当前最新的数据...
    99+
    2023-09-05
    mysql
  • oracle快照过旧如何处理
    当Oracle快照过旧时,可以考虑以下几种处理方法: 增加快照的保留时间:可以通过修改快照策略,延长快照的保留时间,以便更长时间...
    99+
    2024-04-09
    oracle
  • oracle快照刷新的步骤是什么
    Oracle快照刷新的步骤如下:1. 检查当前的快照刷新状态:使用以下命令查询当前快照刷新是否已启用:```SELECT n...
    99+
    2023-09-25
    oracle
  • oracle快照功能怎么使用
    Oracle数据库的快照功能允许用户创建数据库对象的快照,以便可以在不修改原始数据的情况下对其进行分析和查询。以下是使用Oracle...
    99+
    2024-04-09
    oracle
  • oracle快照过旧如何回退
    要将Oracle数据库快照回退到先前的状态,可以执行以下步骤:1. 首先,确保数据库是在归档模式下运行。如果不是,需要将其切换到归档...
    99+
    2023-09-25
    oracle
  • oracle快照刷新的方法是什么
    Oracle数据库中刷新快照的方法有以下几种:1. 刷新快照日志:使用ALTER SESSION语句刷新当前会话的快照日志。例如:A...
    99+
    2023-08-26
    oracle
  • oracle数据库快照的步骤是什么
    以下是使用Oracle数据库创建快照的一般步骤:1. 确认数据库是否支持快照功能:需要检查数据库版本和许可证是否支持快照功能。2. ...
    99+
    2023-08-26
    oracle
  • oracle awr快照间隔怎么设置
    在Oracle数据库中,AWR(Automatic Workload Repository)是用于收集和存储数据库性能统计信息的功能...
    99+
    2024-04-09
    oracle
  • 云服务器镜像和快照
    云服务器镜像和快照是在云服务中提供的服务和资源的备份和恢复工具。以下是如何使用云服务器镜像和快照来恢复数据和更新系统的操作流程: 下载和安装云服务器镜像和快照软件 可以从云服务提供商(如Amazon、Google、Salesforce...
    99+
    2023-10-26
    快照 镜像 服务器
  • oracle手动生成快照的方法是什么
    Oracle数据库中生成快照(Snapshot)的方法有两种:1. 使用Flashback技术生成快照:Flashback技术是Or...
    99+
    2023-09-25
    oracle
  • 怎么使用oracle快照恢复数据
    使用Oracle快照恢复数据的步骤如下:1. 确保你有一个可用的数据库快照。在Oracle数据库中,可以使用RMAN(Recover...
    99+
    2023-08-26
    oracle
  • oracle快照功能有哪些优缺点
    Oracle快照功能是Oracle数据库中的一种机制,用于创建数据库的快照或镜像,以便在需要时能够快速还原数据。下面是Oracle快...
    99+
    2024-04-09
    oracle
  • Oracle 18c新特性-PDB快照轮播的示例分析
    这篇文章给大家分享的是有关Oracle 18c新特性-PDB快照轮播的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Oracle 18c推出的一个新功能就是PDB快照轮播...
    99+
    2024-04-02
  • linux快照指的是什么
    本篇内容介绍了“linux快照指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,快照是文件系统状态的只读时间点副本,是...
    99+
    2023-06-30
  • 浅谈Redis中的RDB快照
    目录一、概述二、快照怎么用?三、执行 bgsava 快照时,数据能被修改吗?四、RDB 和 AOF 合体一、概述 所谓的快照,就是记录某一个瞬间东西,比如当我们给风景拍照时,那一个瞬...
    99+
    2024-04-02
  • oracle 11g rac ORA-01555快照过旧报错的处理方法
    今天就跟大家聊聊有关oracle 11g rac ORA-01555快照过旧报错的处理方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ORA-01...
    99+
    2024-04-02
  • MVCC中快照怎么工作的
    这篇文章将为大家详细讲解有关MVCC中快照怎么工作的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MVCC在 MySQL 中(innodb存储引擎),实际上每条记录在更新...
    99+
    2024-04-02
  • 云主机的快照如何做
    云主机的快照是一种备份机制,可以保存主机的所有数据和配置信息。以下是快照的步骤:1. 登录到云主机提供商的控制台。2. 选择要创建快...
    99+
    2023-09-17
    云主机
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作