全方位介绍Oracle数据库中的回滚段本文分为以下几个部分: * 回滚段的作用 * 回滚段的类型 * 回滚段的数量、大小及存储参数 * 回滚段的维护及查询 * 有关回滚段的常见错误及解决方法 1. 回滚段的作用 回滚段用于对数据库修改时, 保存原有的数据, 以便稍后可以通过使用ROLLBACK来恢复到修改前的数据; 另外, 回滚段可以为数据库中的所有进程提供读一致性. 因此, 回滚段设置的合理与否, 直接影响到数据库的性能, 在更新密集的OLTP应用中,更是如此. 2. 回滚段的类型 回滚段可分为系统回滚段和非系统回滚段, 其中非系统回滚段又分为PUBLIC回滚段和PRIVATE回滚段. 系统回滚段用于处理涉及系统的CATALOG的事物(比如大多数的DDL), 它位于SYSTEM表空间, 由于只有SYSTEM表空间可以随时保持可用, 因此, 不要把SYSTEM回滚段放在其他的表空间中. *** 原则1: 系统回滚段应放在SYSTEM表空间中, 并且应该永远保持ONLINE状态. PUBLIC回滚段对于数据库的所有实例(INSTANCE)都是可用的, 除非将其显式设置为OFFLINE. PRIVATE回滚段是指对于数据库的某个实例是私有的, 为了使用PRIVATE回滚段, 某个实例应当在其INITsid.ORA的ROLLBACK_SEGMENTS中标明所有要使用的PRIVATE回滚段, 或通过使用ALTER ROLLBACK SEGMENT XXX ONLINE来使用某一个回滚段. *** 建议1: 在单实例系统中,建议将所有回滚段设为PUBLIC. *** 建议2: 在多实例系统中(如OPS), 建议将每个实例的PRIVATE回滚段放置到访问比较快的本地设备上. 3. 回滚段的数量、大小及存储参数 精确的回滚段的数量及大小的计算涉及很多方面: 应用的类型(OLTP/OLAP/BATCH), 同时进行的事物的数量, DML语句的类型, 每个事物处理的数据量等等. 精确的计算, 限于篇幅, 不在此提及, 朋友们可参考相关文档(参考文献4), 在此, 只提供几个原则及建议. *** 原则2: OLTP系统应使用小但较多的回滚段, OLAP系统/批处理系统应使用少量的大回滚段 *** 建议3: OLTP/OLAP混合型系统中, 应专门设置一个或几个大的回滚段, 平时设置为OFFLINE, 使用时通过使用SET TRANSACTION USE ROLLBACK SEGMENT XXX来使用它. 这些回滚段应使用OPTIMAL参数,以便在不使用时,可以SHRINK到一个较小的尺寸。 *** 建议4: 在很难计算准确的数量、大小时,可用"偏大不偏小"的原则。 *** 原则3: 所有的回滚段的INITIAL/NEXT参数应设为相同, 只有建议3中提到的大回滚段例外. *** 原则4: 不要将回滚段的MAXEXTENTS设为UNLIMITED, 回滚段所在表空间也不要设为AUTOEXTEND方式, 否则将会使得由于某个不正常的事务导致整个数据库处于失控状态. 4. 回滚段的维护及查询 (1) 创建回滚段
2) 更改ONLINE/OFFLINE状态
(3) 更改OPTIMAL参数
(4) 缩小回滚段
(5) 修改INITIAL/NEXT参数 *** 建议5: 根据原则3, 修改NEXT时, 总应该同时修改INITIAL. INITIAL参数无法直接修改, 只能先DROP, 然后再CREATE.
(6) 在事务中使用特定的回滚段
(7) 常用的有关回滚段的系统数据字典
5. 有关回滚段的常见错误及解决方法 (1) 回滚段空间不够
上一篇:简单谈谈Oracle 10G中的闪回恢复区 下一篇:深刻理解Oracle数据库的启动和关闭 更多相关文章
|
推荐文章
精彩文章
|