当前位置:  数据库>oracle

监控和管理Oracle UNDO表空间的使用

    来源: 互联网  发布时间:2017-06-13

    本文导语: 对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定);UNDO表空间是用于存储DML操作的前镜像数据,它是实例恢复,数据回滚,一致性查询功...

对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定);UNDO表空间是用于存储DML操作的前镜像数据,它是实例恢复,数据回滚,一致性查询功能的重要组件;我们常常会忽略对它的监控,这会导致UNDO表空间可能出现以下问题:
1).空间使用率100%,导致DML操作无法进行。
2).告警日志中出现大量的ORA-01555告警错误。
3).实例恢复失败,数据库无法正常打开。

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

RMAN备份与恢复之undo表空间丢失

关于Oracle 释放过度使用的undo表空间

Oracle undo的一些理解

Oracle undo 镜像数据探究

Oracle 回滚(ROLLBACK)和撤销(undo)

Linux-6-64下安装Oracle 12C笔记

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

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

一.对Oracle自动化管理UNDO进行干预。

  由于UNDO是自动化管理,可干预的地方非常的少,更多的是监控,通过以下几个地方可对UNDO表空间实施一定的干预:

1).初始化参数

undo_management=AUTO    表示实例自动化管理UNDO表空间,从Oracle 9i开始,Oracle引进了AUM(Automatic Undo Management)。
undo_retention=900              事务提交后,相应的UNDO数据保留的时间,单位:秒。
undo_tablespace=UNDOTBS1 活动的UNDO表空间。
_smu_debug_mode=33554432
 _undo_autotune=TRUE

2).Automatic UNDO Retention

    Automatic UNDO Retention是10g的新特性,在10g和之后的版本的数据库,这个特性是默认启用的。
    在Oracle Database 10g中当自动undo管理被启用,总是存在一个当前的undo retention,Oracle Database尝试至少保留旧的undo信息到该时间。数据库收集使用情况统计信息,基于这些统计信息和UNDO表空间大小来调整undo retention的时间。
    Oracle Database基于undo表空间大小和系统活动自动调整undo retention,通过设置UNDO_RETENTION初始化参数指定undo retention的最小值。

    查看Oracle自动调整UNDO RETENTION的值可以通过以下查询获得:
SELECT TO_CHAR(BEGIN_TIME, 'MM/DD/YYYY HH24:MI:SS') BEGIN_TIME,
    TUNED_UNDORETENTION FROM V$UNDOSTAT;

    针对自动扩展的UNDO表空间,系统至少保留UNDO到参数指定的时间,自动调整UNDO RETENTION以满足查询对UNDO的要求,这可能导致UNDO急剧扩张,可以考虑不设置UNDO RETENTION值。

    针对固定的UNDO表空间,系统根据最大可能的undo retention进行自动调整,参考基于UNDO表空间大小和使用历史进行调整,这将忽略UNDO_RETENTION,除非表空间启用了RETENTION GUARANTEE。

自动调整undo retention不支持LOB,因为不能在undo表空间中存储任何有关LOBs事务的UNDO信息。

 可以通过设置_undo_autotune=FALSE显示的关闭Automatic UNDO Retention功能。

3).TUNED_UNDORETENTION计算的值很大导致UNDO表空间增长很快?

    当使用的UNDO表空间非自动增长,tuned_undoretention是基于UNDO表空间大小的使用率计算出来的,在一些情况下,特别是较大的UNDO表空间时,这将计算出较大的值。

 为了解决此行为,设置以下的实例参数:
_smu_debug_mode=33554432

设置该参数,TUNED_UNDORETENTION就不基于undo表空间大小的使用率计算,代替的是设置(MAXQUERYLEN +300)和UNDO_RETENTION的最大值。

4).UNDO表空间数据文件自动扩展

    如果UNDO表空间是一个自动扩展的表空间,那么很有可能UNDO表空间状态为EXPIRED的EXTENT不会被使用(这是为了减少报ORA-01555错误的几率),这将导致UNDO表空间变得很大;如果将UNDO表空间设置为非自动扩展,那么状态为EXPIRED的EXTENT就能被利用,这样可以一定程度控制UNDO表空间的大小,但这样会增加ORA-01555报错和UNDO空间不足报错的风险。合理的非自动扩展的UNDO表空间大小,以及合理的UNDO_RETENTION设置可以确保稳定的UNDO空间使用。

5).UNDO表空间guarantee属性

    如果UNDO表空间是noguarantee状态,Oracle不确保提交后的事务对应的UNDO表空间中的数据会保留UNDO_RETENTION指定的时长,如果UNDO表空间不足,其他事务将可能偷盗相应的未过期的空间;将UNDO表空间设置为guarantee能够确保提交后的事务对应UNDO表空间中的数据在任何情况下都将保留UNDO_RETENTION指定的时长。
   
SQL> SELECT tablespace_name, retention FROM dba_tablespaces where tablespace_name='UNDOTBS1';

TABLESPACE_NAME                                              RETENTION
------------------------------------------------------------ ----------------------
UNDOTBS1                                                    NOGUARANTEE

SQL> alter tablespace undotbs1 retention guarantee;

表空间已更改。

SQL> SELECT tablespace_name, retention FROM dba_tablespaces where tablespace_name='UNDOTBS1';

TABLESPACE_NAME                                              RETENTION
------------------------------------------------------------ ----------------------
UNDOTBS1                                                    GUARANTEE

6).UNDO表空间大小

  针对不同类型的业务系统,需要有充足的UNDO表空间,确保系统能够正常的运行。UNDO空间的大小跟业务系统有关系,也跟UNDO_RETENTION和UNDO表空间的GUARANTEE属性有关系,通常我们可以通过V$UNDOSTAT的统计信息估算出需要的UNDO表空间大小。

二.监控UNDO表空间使用情况。

  作为管理员来说,针对UNDO表空间更重要的是日常的监控工作,监控常用到以下的视图:
a).DBA_ROLLBACK_SEGS
DBA_ROLLBACK_SEGS describes rollback segments.

b).V$ROLLSTAT
V$ROLLSTAT contains rollback segment statistics.

c).V$TRANSACTION
V$TRANSACTION lists the active transactions in the system.

d).V$UNDOSTAT
V$UNDOSTAT displays a histogram of statistical data to show how well the system is working. The available statistics include undo space consumption, transaction concurrency, and length of queries executed in the instance. You can use this view to estimate the amount of undo space required for the current workload. Oracle uses this view to tune undo usage in the system. The view returns NULL values if the system is in manual undo management mode.

Each row in the view keeps statistics collected in the instance for a 10-minute interval. The rows are in descending order by the BEGIN_TIME column value. Each row belongs to the time interval marked by (BEGIN_TIME, END_TIME). Each column represents the data collected for the particular statistic in that time interval. The first row of the view contains statistics for the (partial) current time period. The view contains a total of 576 rows, spanning a 4 day cycle.

e).DBA_UNDO_EXTENTS
DBA_UNDO_EXTENTS describes the extents comprising the segments in all undo tablespaces in the database.  This view shows the status and size of each extent in the undo tablespace.

DBA_UNDO_EXTENTS.STATUS有三个值:
ACTIVE      表示未提交事务还在使用的UNDO EXTENT,该值对应的UNDO SEGMENT的DBA_ROLL_SEGMENTS.STATUS一定是ONLINE或PENDING OFFLINE状态,一旦没有活动的事务在使用UNDO SEGMENT,那么对应的UNDO SEGMENT就变成OFFLINE状态。
EXPIRED    表示已经提交且超过了UNDO_RETENTION指定时间的UNDO EXTENT。
UNEXPIRED 表示已经提交但是还没有超过UNDO_RETENTION指定时间的UNDO EXTENT。

  Oracle重复使用UNDO EXTENT的原则如下:
1).ACTIVE状态的EXTENT在任何情况下都不会被占用。
2).如果是自动扩展的UNDO表空间,Oracle会保证EXTENT至少保留UNDO_RETENTION指定的时间。
3).如果自动扩展空间不足或者UNDO表空间是非自动扩展,Oracle会尝试重复使用同一个段下面EXPIRED状态的EXTENT,如果本段中没有这样的EXTENT,就会去偷别的段下面EXPIRED状态的EXTENT,如果依然没有这样的EXTENT,就会使用本段UNEXPIRED的EXTENT,如果还是没有,那么会去偷别的段的UNEXPIRED的EXTENT,这个都没有,就会报错。

更多详情见请继续阅读下一页的精彩内容:


    
 
 

您可能感兴趣的文章:

  • 关于使用Ptrace系统调用监控进程问题
  • 急!!!AIX上监控CPU和内存使用率的脚本
  • Linux 下监控某进程 内存使用峰值的方法?
  • 怎么监控文件的变化(不使用轮循的方法)
  • Linux的主机怎么监控网络使用情况?
  • linux系统使用python监控apache服务器进程脚本分享
  • mytop 使用介绍 mysql实时监控工具
  • android Textview文字监控(Textview使用方法)
  • shell脚本监控linux系统内存使用情况的方法(不使用nagios监控linux)
  • 如何使用shell脚本实现监控程序消息队列阻塞情况?
  • python使用pyhook监控键盘并实现切换歌曲的功能
  • 使用C#开源文件实时监控工具Tail&TailUI介绍
  • 在Oracle中监控和跟踪索引使用情况
  • python中使用pyhook实现键盘监控的例子
  • python监控网卡流量并使用graphite绘图的示例
  • 使用apachetop实时监控日志、动态分析服务器运行状态
  • 使用Inotify 监控目录与文件的方法详解
  • c#实现数据同步的方法(使用文件监控对象filesystemwatcher)
  • Oracle10g使用sql获得ADDM报告以及利用ADDM监控表的dml情况
  • 使用Python的Supervisor进行进程监控以及自动启动
  • Zabbix的Oracle监控插件 orabbix
  • Oracle 8x监控sysdba角色用户登陆情况
  • Oracle 10g各个帐号的访问权限、登录路径、监控状态命令查询等等
  • Oracle 创建监控账户 提高工作效率
  • 对Oracle执行计划进行监控
  • oracle监控某表变动触发器例子(监控增,删,改)
  • Linux平台下如何监控Oracle数据库的性能
  • 利用Oracle threshold(度量阀值)监控表空间
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Docker监控以及cAdvisor和Prometheus监控工具的对比
  • 网关监控(网管监控):监控员工上网内容、进出电子邮件内容、聊天内容、上传和下载内容,过滤不良网站;设置一部分电子邮件帐号只能够发
  • 针对Docker容器的监控指标
  • 业务系统监控 ​kaleido
  • shell监控脚本实例—监控mysql主从复制
  • Metric监控系统 node-bell
  • 网络接口监控 WMND
  • 应用监控系统 HawtIO
  • linux系统下如何监控和获取用户行为(高分悬赏)
  • 系统状态监控工具 ProcMeter3
  • Web服务器文件安全监控平台 Falcon
  • LDAP监控软件 CN=Monitor
  • 网络监控系统 FreeNATS
  • 网络管理与监控系统 JFFNMS
  • 关于文件监控~~~~~~~~~~~~~
  • nagios监控不正常
  • 数据库监控工具 TrafficObjects
  • Ganglia的批量作业监控插件 Job Monarch
  • OSA监控精灵
  • 监控多个文件目录
  • Redis 服务器监控系统 Angel


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,