背景: 用户修改一些配置,shutdown immediate,但是系统很久也没有关闭。等不及的用户 shutdown abort 数据库,然后startup。重新启动之后的数据库,在alert.log中不段出现类似的错误信息:
SMON: about to recover undo segment 8
SMON: mark undo segment 8 as needs recovery
或者出现:
smon: undo segment 46 is avaliable
smon: need to recover undo segment 46
这些错误信息,由SMON 进程唤醒,所以一般是5分钟出现一次。
检查 dba_rollback_segs 发现这些回滚段的状态为:NEEDS RECOVERY 或者 PARTLY AVAILABLE。 A rollback segment in the PARTLY AVAILABLE state contains data for an in-doubt or recovered distributed transaction, or for yet to be recovered transactions.
原因: 用户关闭系统的时候,还存在大量的活动事务,在shutdown abort 后,重新启动的时候,系统要回滚这些事务,并且将这些回滚段置为不可用
解决:
1. 创建一个新的undo tablespace,并将系统切换到该UNDO tablespace 上。对系统进行耐心的等待,不断查看
dba_rollback_segs。等所有的回滚段的状态为online 或者 offline 后,在drop 该UNDO tablespace,操作步骤如下:
create undo tablespace Undo2 datafile '' size 500M segment space management AUTO;
alter syste set undo_tablespace=Undo2;
drop tablespace Undo1;
在alert.log 中将会出现:
SMON: mark undo segment 8 as available,
SMON: Parallel transaction recovery tried
2. sql> alter session set "_smu_debug_mode"=4; 将回滚段设置为手工的debug模式
sql> alter rollback segment "_SYSSMU8$" online;
3. 在参数文件中设置:._corrupted_rollback_segments='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$' 先打开数据
库,然后进行步骤1中的全部操作
4. 添加 _offline_rollback_segments ='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$' ,在重新启动数据库,删除有问题
的回滚段
ref: http://carson.yculblog.com/post.1391582.html[@more@]
SMON: about to recover undo segment 8
SMON: mark undo segment 8 as needs recovery
或者出现:
smon: undo segment 46 is avaliable
smon: need to recover undo segment 46
这些错误信息,由SMON 进程唤醒,所以一般是5分钟出现一次。
检查 dba_rollback_segs 发现这些回滚段的状态为:NEEDS RECOVERY 或者 PARTLY AVAILABLE。 A rollback segment in the PARTLY AVAILABLE state contains data for an in-doubt or recovered distributed transaction, or for yet to be recovered transactions.
原因: 用户关闭系统的时候,还存在大量的活动事务,在shutdown abort 后,重新启动的时候,系统要回滚这些事务,并且将这些回滚段置为不可用
解决:
1. 创建一个新的undo tablespace,并将系统切换到该UNDO tablespace 上。对系统进行耐心的等待,不断查看
dba_rollback_segs。等所有的回滚段的状态为online 或者 offline 后,在drop 该UNDO tablespace,操作步骤如下:
create undo tablespace Undo2 datafile '' size 500M segment space management AUTO;
alter syste set undo_tablespace=Undo2;
drop tablespace Undo1;
在alert.log 中将会出现:
SMON: mark undo segment 8 as available,
SMON: Parallel transaction recovery tried
2. sql> alter session set "_smu_debug_mode"=4; 将回滚段设置为手工的debug模式
sql> alter rollback segment "_SYSSMU8$" online;
3. 在参数文件中设置:._corrupted_rollback_segments='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$' 先打开数据
库,然后进行步骤1中的全部操作
4. 添加 _offline_rollback_segments ='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$' ,在重新启动数据库,删除有问题
的回滚段
ref: http://carson.yculblog.com/post.1391582.html[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7916042/viewspace-915069/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7916042/viewspace-915069/