在一些情况下,你可能需要对oracle数据库进行优化,如修改spfile中的参数配置(如:扩展sga内存区)等,但是往往不是一次就一步到位的,尤其是一不小心给的sgamax_size、shared_pool_size等的值不合理时(如超出整个物理内存,给值的时候多写一个零),虽然提示已经更改,但是一重启数据库时,对不起,数据无法open,用sqlplus登录,出现如下图的症状:

    如何通过pfile来创建spfile来启动数据库 - 图1

    解决办法:

    _1,
    拷贝参数文件(位置如:$oraclehome/admin/orcl/pfile/init.ora.5162009204825)拷贝到$_oraclehome/db1/database下面,将init.ora.5162009204825文件名改为“init实例名.ora”,如:initorcl.ora(拷贝到这里的时候,可以通过参数文件启动数据库)
    2, 然后在sqlplus中执行:“create spfile from pfile”,如下图所示:


    如何通过pfile来创建spfile来启动数据库 - 图2


    3,这时将在“$OracleHome/db_1/database/”路径下面生成一个spfile文件,文件命名格式为“SPFILE实例名.ORA”,如:SPFILEORCL.ORA。这时数据可以用spfile启动(可以尝试把initorcl.ora删除掉也不会影响数据库的启动了)当然也可以从$OracleHome/db_1/dbs/下面拷贝SPFILE实例名.ORA$OracleHome/db_1/database下面也可以。

    如果在$OracleHome/db_1/database下面找不到参数文件,将出现下图的错误。
    如何通过pfile来创建spfile来启动数据库 - 图3

    然后再次启动oracle的服务,用SQLPLUS就可以连接上数据库了.如下:

    如何通过pfile来创建spfile来启动数据库 - 图4