把此数据库从客户端移除,然后重新建一个,ok!!!
今天下班到家,接到一同事电话,说是用oracle9i的客户端连接oracle10g后,修改某些参数后,导致oracle10无法正常启动,小机重启了好几次都不行。
远程连接之后,用oracle用户在sqlplus下面startup时,系统提示如下:
ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information
看来是sga_target这个参数设置的有问题。在网上查了查sga_target参数的信息(具体可见我的另外一篇转载的文章:ORACLE10--SGA_MAX_SIZE与SGA_TARGET),了解到它是oracle10里新的内存参数,用于动态调整SGA内存的各组成部分。它的内容同样是存储在spfile中。
在此之前,在另一片文章ORACLE9i——优化SGA最大值超过1.7G后导致实例无法启动 中,通过pfile和spfile之间的关系解决了因调整SGA_MAX_SIZE无法启动实例的问题,那么利用这种关系同样可以解决今天sga_target的问题。
而且,经过实践我发现,上次使用的方法太过于繁琐,今天通过实践找到一个简便方法。
但是思路都是一样的:想办法把sga_target的值修改到正常阀值内,然后再启动数据库实例
按照这种思路:
1、我们完全可以先用pfile的配置参数启动数据库实例
2、通过pfile重建spfile文件(create spfile from pfile)
3、关闭数据库实例
4、正常启动数据库实例
具体的操作如下:
[oracle@redhat pfile]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Oct 20 00:20:19 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup pfile='/home/oracle/admin/zgz/pfile/init.ora.82220096537'
Connected to an idle instance.
SQL> startup pfile='/home/oracle/admin/zgz/pfile/init.ora.82220096537'
--“通过pfile文件启动oracle实例”
ORACLE instance started.
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218968 bytes
Variable Size 88082024 bytes
Database Buffers 188743680 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
SQL> create spfile from pfile='/home/oracle/admin/zgz/pfile/init.ora.82220096537';--“通过pfile重建spfile文件”
Fixed Size 1218968 bytes
Variable Size 88082024 bytes
Database Buffers 188743680 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
SQL> create spfile from pfile='/home/oracle/admin/zgz/pfile/init.ora.82220096537';--“通过pfile重建spfile文件”
File created.
SQL> shutdown immediate --"关闭数据库实例"
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup --"通过spfile文件正常启动oracle实例"
ORACLE instance started.
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup --"通过spfile文件正常启动oracle实例"
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218968 bytes
Variable Size 88082024 bytes
Database Buffers 188743680 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
SQL>
Fixed Size 1218968 bytes
Variable Size 88082024 bytes
Database Buffers 188743680 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
SQL>
瞧!和上次的方法比起来是不是很简便,完全在命令行下就可以完成。
学习就是这样,同样一个问题,要不断掌握更简便的方法,才是进步!

但是在具体的解决过程中,当我用
shutdown immediate来关闭数据库时,系统突然报以下错误:ORA-03113: end-of-file on communication channel
以前没有遇到过,在网上搜了搜,造成这个错误的原因有很多,大部分是网络连接不好造成的,结果我关掉现在的SSH窗口,重新建立一个SSH连接,问题解决。