问题:
正在阅读到Expert One on One Oracle,想验证log_buffer的最小值为最大数据块的4倍。打开位于${ORACLE_HOME}/database/ SPFILEORA9I.ORA的数据库参数文件,发现没有对应的参数条目,然后手工增加log_buffer=1,通过服务控制台重新启动数据库。然后通过sql/plus连接,发现不能连接数据库。出现的错误为“ORA- 01034 : ORACLE not available”,“ORA-27101 : shared memory realm does not exist”。Google一下,许多人提到这是因为数据库没有启动。手工启动数据库,相关命令如下:
c:>sqlplus /nolog
sql>conn sys/abcdefg@server as sysdba
sql>startup
而执行如上语句,能够连接数据库,但是startup的时候,系统却报错:“ora-00600,[][][]”。通过“Database Configuration Assistant”进行参数修改的时候,出现同样的错误。
解决方法:
Google一下,原来有人和我犯了同样的错误:Sfile是一个二进制文件,不能通过文本的方式修改。如果需要修改,必须通过“alter system set ... scope=.. ”或者先修改,然后通过“create spfile from pfile;”将pfile里的内容复制到spfile里。 参考:http://www.itpub.net/226670,1.html。
1) 将${ORACLE_HOME}/admin/ora9i/pfile/init.ora.4162007215332文件(这是数据库的pfile参数文件,8i前使用,可以手工编辑)拷贝到${ORACLE_HOME}/database目录下,更名为init.ora。
2) 运行如下命令,使用Pfile参数文件打开数据库。
sqlplus /nolog
conn sys/abcdefg@server as sysdba
startup pfile =${ORACLE_HOME}/databaseinit.ora;
3) 从Pfile重新创建Spfile。create spfile from pfile = 'init.ora';
Spfile相关内容:
找到了eygle关于Spfile的文章(http://www.eygle.com/faq/Oracle9i.New.Feature.Spfile.01.htm)。
1). Oracle通过startup时候,搜索参数文件的顺序:
a.spfile${ORACLE_SID}.ora in (NT: ${ORACLE_HOME}/database)
b.spfile.ora in (NT: ${ORACLE_HOME}/database)
c.init${ORACLESID}.ora in (NT: ${ORACLE_HOME}/database or${ORACLE_HOME}/admindb_name/pfile)
2).修改参数ALTER SYSTEM ,SCOPE参数有三个可选值:MEMORY ,SPFILE , BOTH。
3).查询是否使用了Spfile。
SELECT name,value FROM v$parameter WHERE name='spfile';
SHOW PARAMETER spfile;
SELECT COUNT(*) FROM v$spparameter WHERE value IS NOT NULL;
4).使用Rman备份Spfile。
5).使用Spfile屏蔽或者更改Oracle行为。alter system set event='10841 trace name context forever' scope=spfile;
其他问题。
解决问题的过程中,使用“Startup pfile”命令的时候还出现过“ORA-01031: insufficient privileges upon instance startup”错误。一般检查两个地方,登录系统的O/S用户是否在ORA_DBA用户组中。另为,是否配置${ORACLE_HOME}/network/admin下的sqlnet.ora文件是否存在,以及是否有“SQLNET.AUTHENTICATION_SERVICES = (NTS)”条目,否在Oracle不能使用O/S认证。
2007年6月15日星期五
订阅:
博文评论 (Atom)
没有评论:
发表评论