网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 性能调优 > Rollback(undo) Segment 优化-性能调优  

Rollback(undo) Segment 优化-性能调优

2008-04-01  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

    1、概念
    Transaction以轮循的方式使用rollback segment里的extent,当前所在的extent满时就移动到下一个extent。可能有多个transaction同时向同一个extent写数据,但一个rollback segment block中只能保存一个transaction的数据。 网管u家u.bitscn@com

    Oracle 在每个Rollback segment header中保存了一个transaction table,包括了每个rollback segment中包含的事务信息,rollback segment header的活动控制了向rollbak segment写入被修改的数据。rollback segment header是经常被修改的数据库块,因此它应该被长时间留在buffer cache中,为了避免在transaction table产生竞争导致性能下降,应有多个rollback segment或应尽量使用oracle server 自动管理的rollback segment。 网管u家u.bitscn@com

    2、诊断rollback segment header的竞争
    如果rollback segment 由手工管理,下列措施诊断rollback segment header的竞争
    SELECT class,count FROM v$waitstat WHERE class LIKE ’%undo%’ ;
    SELECT Sum(Value) sum FROM v$sysstat WHERE NAME IN (’db block gets’,’consistent gets’);
    任何类型的等待次数(count)与总请求数(sum)的比率,不能超过1%。
    或
    select sum(waits)*100/sum(gets) "Ratio", sum(waits) "Waits", sum(gets) "Gets" from v$rollstat;
    waits的汇总数与gets的汇总数的比率应低于1%,如果超过1%,应创建更多的rollback segment。 网管下载dl.bitscn.com

    下列字段数值如果大于0,则表明在rollback segment header上存在竞争:
    A、v$rollstat 中的waits
    B、v$waitstat中的undo header行
    C、v$system_event中的undo segment tx slot事件 网管论坛bbs_bitsCN_com

    3、消耗更少的rollback segment
    1)如果是删除表里所有的数据,尽可能使用trauncate而不是delete。
    2)在应用中允许用户有规律的提交,尽可能不用长事务。
    3)? Import
    – Set COMMIT = Y
    – Size the set of rows with BUFFER
    ? Export: Set CONSISTENT=N
    ? SQL*Loader: Set the COMMIT intervals with ROWS 网管联盟bitsCN@com


    4、小回滚段可能出现的问题
    A、事务由于缺少回滚空间失败
    B、由于下列原因导致的“Snapshot too old”问题:
    Block里的事务列表被刷新,block里的SCN比列表Interested Transaction List(ITL)里起始事务的SCN更新;
    Rollback segment header里的Transaction slot被重用;
    回滚数据已经被重写;

网管网www_bitscn_com

    5、9i的自动回滚管理
    Undo_managment指定了回滚空间的管理方式:Auto:自动管理;Manual:手工管理回滚段。
    Undo_retention指定了回滚数据的保留期限;
    Undo_tablespace指定了被使用的回滚表空间;

网管网www_bitscn_com

    Oracle自动管理的表空间可以在常见数据库的时候创建,也可以单独建立。回滚表空间可以相互转换(switch),但在某一时刻只能有一个回滚表空间处于活动状态。回滚表空间处于非活动状态时可以删除,如果有对处于被删除回滚表空间里的已提交事务的查询时,oracle会返回一个错误。

网管联盟bitsCN_com

    估计undo tablespace大小的公式:
    Undo space = (undo_retention * (undo blocks per second * db_block_size)) + db_block_size;

中国网管论坛bbs.bitsCN.com

    可以使用下列的sql设定undo_retention和undo tablespace:
    select (rd*(ups*overhead)+overhead) "bytes" from (select value rd from v$parameter where name =’undo_retention’),(select (sum(undoblks)/sum(((end_time-begin_time)*10800))) ups from v$undostat),(select value overhead from v$parameter where name=’db_block_size’);

网管有家bitscn.net

    其中:
    Rd:undo_retention设置的时间;
    Ups:undo blocks per second;
    Overhead:rollback segment header;

网管论坛bbs_bitsCN_com

TAGs   性能   优化       segment   rollback   header   空间   管理      
 上一篇:教你快速掌握Oracle数据库中的like优化-性能调优   下一篇:Oracle 9i数据库OMS没有数据库节点-性能调优
Rollback(undo) Segment 优化-性能调优 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: