Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1115623
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2013-08-26 10:00:22

今天在某客户的RAC数据库(10.2.0.5.9,AIX 5308)上遇到一个spfile在裸设备上无法正常启动的问题。
RAC数据库,每个节点上都有一个init$SID.ora的pfile,该pfile中只有1条参数信息:
spfile='裸设备位置'

正常情况下,使用sqlplus "/as sysdba"登录到数据库实例,使用startup命令启动数据库实例。
初次启动数据库实例没有问题,但是修改了关于SGA的参数,比如db_cache_size,shared_pool_size到spfile中,再次启动就会报错。

SQL> alter system set db_cache_size=350m scope=spfile;

System altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-01078: failure in processing system parameters
ORA-00600: internal error code, arguments: [kspgzp1], [101], [489], [1], [db_cache_size], [], [], []

trace中信息:
Error when reading init.ora parameter
Check syntax in init.ora file
Also your SRV image may need relinking
*** 2013-08-23 12:50:51.147
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kspgzp1], [101], [489], [1], [db_cache_size], [], [], []
Current SQL information unavailable - no SGA.


去掉spfile中的db_cache_size设置,再次启动报错:
ORA-00600: internal error code, arguments: [ksmcsdxchk_1], [101], [], [], [], [], [], []


在该报错情况下,使用以下2种方式启动数据库实例均正常:
startup pfile='$ORACLE_HOME/dbs/initSID.ora';
srvctl start instance -d xxx -i yyy

如果将spfile建立在本地目录下,使用startup命令启动正常。

怀疑是裸设备存在问题。
更换其他存储建立的vg,再建立lv用于的spfile,问题依旧。
也尝试了使用dd方式,问题依旧。

对sqlplus进程truss跟踪,也未发现有效信息。

怀疑是否PSU补丁安装有异常,将PSU补丁rollback,并且做了relink all
均未解决该问题。

最后怀疑是环境变量设置有误,将系统中非必须的环境变量全部去掉,只保留ORACLE_HOME,LIBPATH等。

使用startup方式启动正常。

逐个检查环境变量,最后发现,当设置NLS_SORT环境变量,启动存在问题。
原本该环境变量设置如下:
export NLS_SORT=SCHINESE_PINYIN_M

检查该数据库字符集为AL32UTF8,国际字符集为AL16UTF16,该字符集支持拼音排序。
select VALUE from V$NLS_VALID_VALUES where PARAMETER ='SORT' and ISDEPRECATED = 'FALSE' order by VALUE

VALUE
----------------------------------------------------------------
SCHINESE_PINYIN_M


最后小结一下:
spfile使用裸设备,设置了NLS_SORT环境变量,修改db_cache_size参数到spfile,再次用startup命令启动存在异常。
在什么都不修改的情况下:
使用srvctl命令启动没问题
startup pfile='$ORACLE_HOME/dbs/initSID.ora'; 也没问题
unset NLS_SORT后,再次用startup启动正常。

目前仍未找到为什么会出现这种现象的具体原因。

阅读(1301) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~