ORACLE回滚段管理(下)

天然帅windy

天然帅windy

2016-02-19 18:46

下面这个ORACLE回滚段管理(下)教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

  创建回滚段

  语法:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  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)

  修改回滚段的存储参数

  可以使用ALTER ROLLBACK SEGMENT命令修改回滚段的存储参数(包括OPTIMAL,MAXEXTENTS)。

  语法:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  ALTER ROLLBACK SEGMENT rollback_segment

  [STORAGE ([NEXT integer[K|M]]

       [MINEXTENTS integer]

       [MAXEXTENTS {integer|UNLIMITED}]

       [OPTIMAL {integer[K|M]|NULL}]) ]

  例:

  ALTER ROLLBACK SEGMENT rbs01 STORAGE (MAXEXTENTS 1000);

  回收回滚段的空间

  如果指定了回滚段的OPTIMAL参数,ORACLE将自动回收回滚段到OPTIMAL指定的位置。用户也可以手动回收回滚段的空间。

  语法:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  ALTER ROLLBACK SEGMENT rollback_segment SHRINK [TO integer [K|M]];

  说明:

   如果不指明TO integer的数值,ORACLE将试图回收到OPTIMAL的位置。

  例:

  ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 2M;

  使回滚段离线

  为了达到以下两个目的将要回滚段离线:

  1.阻止新的事务使用该回滚段;

  2.该回滚段必须删除。

  语法:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

   ALTER ROLLBACK SEGMENT rollback_segment OFFLINE;

  例:

   ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

  说明:

  如果有事务正在使用该回滚段,运行该命令后,回滚段的状态将是PENDING OFFLINE。事务结束后,状态将改为OFFLINE,可以通过V$ROLLSTAT查询回滚段的状态。

  删除回滚段

  当回滚段不再需要或要重建以改变INITIAL,NEXT或MINEXTENTS参数时,可以将其删除。要删除回滚段,不许使该回滚段离线。

语法:

  DROP ROLLBACK SEGMENT rollback_segment;

例:

  DROP ROLLBACK SEGMENT rbs01;

  查询回滚段的信息

  所用数据字典:DBA_ROLLBACK_SEGS

  可以查询的信息:回滚段的标识(SEGMENT_ID)、名称(SEGMENT_NAME)、所在表空间(TABLESPACE_NAME)、类型(OWNER)、状态(STATUS)。

  例:

  SQLSELECT segment_name,tablespace_name,owner,status FROM dba_rollback_segs;

  回滚段的统计信息

  数据字典:V$ROLLNAME,V$ROLLSTAT

  例:

  SQLSELECT n.name,s.extents,s.rssize,s.optsize,s.hwmsize,s.xacts,s.status

    FROM v$rollname n,v$rollstat s

    WHERE n.usn=s.usn;

  回滚段的当前活动事务

  数据字典:V$SESSION,V$TRANSACTION

  例:

  SQLSELECT s.username,t.xidusn,t.ubafil,t.ubablk,t.used_ublk

    FROM v$session s,v$transaction t

    WHERE s.saddr=t.ses_addr;

   USERNAME  XIDUSN   UBAFIL   UBABLK  USED_UBLK

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

   SYSTEM      2      2     7      1

   SCOTT       1      2    163      1

   2 rows selected.

  回滚段的数量规划

  对于OLTP系统,存在大量的小事务处理,一般建议:

  数量多的小回滚段;每四个事务一个回滚段;每个回滚段不要超过十个事务。

  对于批处理,一般建议:

  少的大回滚段;每个事务一个回滚段。

  回滚段的问题及解决方法

  问题一:事务要求的回滚段空间不够,表现为表空间用满(ORA-01560错误),回滚段扩展到达参数MAXEXTENTS的值(ORA-01628)。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  解决方法:向回滚段表空间添加文件或使已有的文件变大;增加MAXEXTENTS的值。

  问题二:读一致性错误(ORA-01555 SNAPSHOT TOO OLD)

  解决方法:增加MINEXTENTS的值,增加区的大小,设置一个高的OPTIMAL值。

  全文完

展开更多 50%)
分享

猜你喜欢

ORACLE回滚段管理(下)

编程语言 网络编程
ORACLE回滚段管理(下)

ORACLE回滚段管理(上)

编程语言 网络编程
ORACLE回滚段管理(上)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Oracle回滚段的概念用法和规划及问题的解决

编程语言 网络编程
Oracle回滚段的概念用法和规划及问题的解决

TXT编辑回滚

电脑入门
TXT编辑回滚

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Win10怎么回滚?

windows10
Win10怎么回滚?

Spring事务管理只对出现运行期异常进行回滚

编程语言 网络编程
Spring事务管理只对出现运行期异常进行回滚

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

解决ajax缓存的问题

解决ajax缓存的问题

使用Oracle 10gMERGE语句更新数据行

使用Oracle 10gMERGE语句更新数据行
下拉加载更多内容 ↓