数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
由于回滚段参数设置存在问题导致数据库无法启动

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

操作系统:Sun Solaris 8
双机软件: Sun Cluster 3.0
数据库:Oracle 8.1.7.3

故障现象:
1.Oracle无法启动。
2.双机的环境一个节点或者所有点上的oracle资源组无法启动,显示为offline。
3.手工启动oracle时报告"ORA-01092: ORACLE instance terminated. Disconnection forced"错误。
4.查看$ORACLE_BASE/admin/ORCL/bdump/alert_ORCL.log,发现有ORA-01534: rollback segment RBSXXX does not exist类似的错误。

故障分析:
这个故障是由于初始化参数文件中的rollback_segments参数设置了一个并不存在的回滚段而引起的。Oracle内部有一个回滚段rollback segment的概念,它对于oracle有着非常重要的作用。回滚段有public和private两种类型,Oracle的初始化文件$ORACLE_BASE/admin/ORCL/pfile/initORCL.ora中有一个静态初始化参数rollback_segments。它包含在oracle启动时候需要online的private的回滚段的列表。如果这个参数设置了一个并不存在的回滚段会导致oracle在启动的时候报ORA-01534和ORA-01092错误,最终导致数据库无法启动,双机中的oracle资源也将无法online。如果rollback_segments在初始化参数中没有指定,那么oracle会将一部分public的回滚段online。具体online的回滚段的个数等于transactions/transactions_per_rollback_segment)。transactions和transactions_per_rollback_segment都是初始化参数文件中的静态初始化参数。在我们oss的系统中transactions=1.1*(1.1*processes+5),
transactions_per_rollback_segment=5。其中processes也是oracle的一个初始化参数,确定oracle的用户连接数,在我们oss的系统中一般为300。所以在我们的系统中如果没有指定rollback_segments,则会将73个public的回滚段online。由于在我们的系统中一般不会创建这么多回滚段,最终导致我们的系统中会将所有的public的回滚段online。

故障处理:
可以将oracle初始化参数中的rollback_segments注释掉,再重新启动数据库。如果是双机则要在两个节点上同时改变rollback_segments这个初始化参数。

日常维护:
1.平时维护初始化参数文件的时候最好用vi命令来维护;或者用ascii方式将初始化文件ftp到本地,用utlraedi修改后在用ascii方式ftp到主机系统上。千万不要telnet到主机上用拷屏的方法将初始化参数拷贝到本地再做修改,因为rollback_segments这个参数很长,直接拷贝屏幕会将这个参数分行。
2.双机的系统中初始化参数一定要同步。
3.如果将rollback_segments参数注释掉,系统只会将public的回滚段online,所以如果系统中所创建的public回滚段很少的话,oracle启动起来之后系统内将只有很少的回滚段。这会严重的影响系统的性能。因此如果要将rollback_segments参数注释掉,建议将所有的回滚段全部按照public的方式来来重新创建。



相关文章

相关软件