技术开发 频道

ORACLE回滚段管理


回滚段的扩张(EXTEND)

当当前回滚段区的所有块用完而事务还需要更多的回滚空间时,回滚段的指针将移到下一个区。当最后一个区用完,指针将移到第一个区的前面。回滚段指针移到下一个区的前提是下一个区没有活动的事务,同时指针不能跨区。当下一个区正在使用时,事务将为回滚段分配一个新的区,这种分配称为回滚段的扩展。回滚段将一直扩展到该回滚段区的个数到达回滚段的参数MAXEXTENTS的值时为止。

回滚段的回收和OPTIMAL参数

OPTIMAL参数指明回滚段空闲时收缩到的位置,指明回滚段的OPTIMAL参数可以减少回滚段空间的浪费。
创建回滚段

语法:
CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment
[TABLESPACE tablespace]
[STORAGE ([INITIAL integer[K|M]] [NEXT integer[K|M]]
[MINEXTENTS integer]
[MAXTENTS {integer|UNLIMITED}]
[OPTIMAL {integer[K|M]|NULL}]) ]


注:

  • 回滚段可以在创建时指明PRIVATE或PUBLIC,一旦创
  • 建将不能修改。
  • MINEXTENTS 必须大于等于2
  • PCTINCREASE必须是0
  • OPTIMAL如果要指定,必须大于等于回滚段的初始大小(由MINEXTENTS指定)


  • 建议:
    • 一般情况下,INITIAL=NEXT
    • 设置OPTIMAL参数来节约空间的使用
    • 不要设置MAXEXTENTS为UNLIMITED
    • 回滚段应创建在一个特定的回滚段表空间内


    例:
    CREATE ROLLBACK SEGMENT rbs01
    TABLESPACE rbs
    STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 10
    MAXEXTENTS 500 OPTIMAL 1000K);


    使回滚段在线

    当回滚段创建后,回滚段是离线的,不能被数据库使用,为了使回滚段被事务利用,必须将回滚段在线。可以用以下命令使回滚段在线:
    ALTER ROLLBACK SEGMENT rollback_segment ONLINE;


    例:
    ALTER ROLLBACK SEGMENT rbs01 ONLINE;


    为了使回滚段在数据库启动时自动在线,可以在数据库的参数文件中列出回滚段的名字。例如在参数文件中加入以下一行:
    ROLLBACK_SEGMENT=(rbs01,rbs02)
0
相关文章