昨天在火车站一个朋友打电话过来说他将SPFILE修改错了数据库无法启动问我怎么办 我说你创建一个PFILE改一下用PFILE启动而他说数据库无法连接是Windows的环境 Ok这类问题很多很多我描述一下解决办法供参考 假如我们修改了以下参数 SQL> alter system set sga_max_size=G scope=spfile;System altered 那么下次启动如果内存不足数据库是无法启动的 SQL> shutdown immediate;Database closed Database dismounted ORACLE instance shut down SQL> startup ORA: out of memory 在UnixLinux上可以连接到数据库创建pfileSQL> create pfile from spfile;File created 如果在Window上你手上还没有任何可供参考的参数文件那么很简单用记事本(Notepad)编辑一个文件包含如下两行[oracle@test dbs]$ cat initeygleora SPFILE=/opt/oracle/product//dbs/spfileeygleora sga_max_size= 第一行指向SPFILE第二行写上出错的参数给一个正确的值这个值在实例启动时会覆盖之前错误的设置 然后就可以使用这个文件启动数据库实例了 SQL> startup pfile=$ORACLE_HOME/dbs/initeygleoraORACLE instance started Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted Database opened 如果在Windows上你只能通过服务起停数据库那么Oracle缺省的还是会寻找SPFILE一个办法是将SPFILE改名 比如将spfileeygleora更改为spfileeygleora然后再pfile里引用这个参数文件下次startup就不用指定pfile 数据库可以自动找到这个参数文件启动数据库 [oracle@test dbs]$ mv spfileeygleora spfileeygleora[oracle@test dbs]$ cat initeygleora SPFILE=/opt/oracle/product//dbs/spfileeygleora sga_max_size= 数据库可以自动使用PFILE启动SQL> startupORACLE instance started Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted Database opened SQL> show parameter spfile NAME TYPE VALUE spfile string /opt/oracle/product//dbs /spfileeygleora The End |