手工建立rollback segment练习:
SQL> alter system set undo_management=manual scope=spfile;
系统已更改。
SQL> startup force
ORACLE 例程已经启动。
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string MANUAL
undo_retention integer 900
undo_tablespace string UNDOTBS1
现在回滚段属于手动管理状态
创建rollback segment:
SQL> create rollback segment un_do1 tablespace un_do storage (initial 100k next 100k minex
tents 10 maxextents 100 optimal 1000k);
create rollback segment un_do1 tablespace un_do storage (initial 100k next 100k minextents
10 maxextents 100 optimal 1000k)
*
第 1 行出现错误:
ORA-30574: 无法利用 AUTO 段空间管理在表空间中创建回退段
不能在使用自动段空间上使用建立回滚段
解决办法:建segment space management为manual的表空间
SQL> create tablespace uuud datafile 'E:\oracle\product\10.2.0\oradata\ORACLE\DATAFILE\uuu
d.dbf' size 10m extent management local uniform segment space management manual;
表空间已创建。
建立手动rollback segment
SQL> create rollback segment ud1 tablespace uuud storage (initial 100k next 100k minextents 10 maxextents 100 optimal 1100k);
create rollback segment ud1 tablespace uuud storage (initial 100k next 100k minextents 10
maxextents 100 optimal 1100k)
*
第 1 行出现错误:
ORA-01552: 非系统表空间 'UUUD' 不能使用系统回退段
非系统永久表空间不能使用回滚段
解决办法:建undo tablespace。
SQL> create undo tablespace uuuud datafile 'E:\oracle\product\10.2.0\oradata\ORACLE\DATAFILE\uuuud.dbf' size 10m ;
表空间已创建。
SQL> create rollback segment ud1 tablespace uuuud storage (initial 100k next 100k minexten
ts 10 maxextents 100 optimal 1100k);
回退段已创建。
总结:手工建rollback segment时,tablespace 后面应该跟undo tablespace,而不是一般的tablespace。这样就不会报上面的两个错误了。