手工管理回滚段
sql>show parameter undo;
undo_management可见是否为手工or 自动
手工回滚段需要考虑的问题有:建多少私有回滚段,公有回滚段及回滚段建立的路径等
。这些东西已经不像auto管理的一样有系统自动建立
sql>show parameter transactions;
可见transaction值41 表示这个系统里面准备支持41个并发事务
transaction_per_rollback_segment值5 表示每个回滚段支持5个并发事务
例如:该例中可见该系统所需要的回滚段数目为8个
---实现手工管理回滚段需要设定的参数:
1.transactions
2.transaction_per_rollback_segment
3.sql>show parameter rollback;查出来的rollback_segments
这三个参数的关系是what?
在oracle启动过程中首先会去找私有的回滚段由rollback_segments指定且online,用
transactions,transaction_per_rollback_segment来计算所需要的回滚段,计算后用
这个结果跟rollback_segments指定的回滚段数量比较看回滚段是否够用,如果够用则
打开database 如果不够用则去找公用的回滚段,如果私有的回滚段加上公有的回滚段
都还不满足transactions,transaction_per_rollback_segment来计算所需要的回滚段
的话oracle照样会正常的打开database 而且不会报任何错误,只是会出现资源争用所有手工管理回滚段的
话也有私有and公有回滚段的说法
---做法:
1.sql>shutdown immediate
2.修改initfile undo_management=manual(如果是spfile则在shutdown 之前就alter
system set undo_management=manual scope=spfile)
3.startup pfile=pathinittest.ora
4.察看结果
sql>select * from dba_rollback_segs;
查出的结果除system外其他的实际上都已经没有用了
sql>show parameter undo;
可见undo_management参数
sql>show parameter rollback;
rollback_segments可见私有回滚段一个都没有
另开一个sqlplus
sql>connect soctt/tiger
sql>delete emp;
eror ora-01552 非系统表空间users无法使用系统回滚段(也就是没有回滚段系统改变
用)
5.sql>create rollback segment rbs1
tablespace undotbs;
sql>create public rollback segment prbs1
tablespace undotbs;
我们所创建的rollback segment 没有自动online default 为offline得需要手工去
online
6. sql>alter rollback segment rbs1 online;
sql>alter rollback segment prbs1 online;
(所以在oracle对私有的rollback segment在启动的时候 有个自动的online 的过程,
而且这些私有的回滚段必须设定在parameter 里面即:rollback_segments)
7. 修改initfile里面的rollback_segments=('rbs1','rbs2')
相应的transactions,transaction_per_rollback_segment也可以去设定一下
sql>修改了以上参数后
8.shutdown immediate
9.startup pfile=pathinittest.ora
让修改生效
10.select * from dba_rollback_segs;
可见rbs1,prbs1了
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/202861/viewspace-799021/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/202861/viewspace-799021/