一、问题描述:

CENTOS 7操作系统上启动ORACLE数据库实例时,报ORA-01078和LRM-00109错误,如下图所示。
在这里插入图片描述

二、问题原因:

ORACLE数据库启动实例时无法加载参数文件spfile初始化数据库导致,可能原因是spfile损坏或误删除导致。

三、参数文件说明:

ORACLE数据库启动实例时,通过参数文件中配置参数进行数据库初始化,参数文件的位置一般在$ORACLE_HOME/dbs目录下,9i之前参数文件是pfile,9i及以后参数文件是spfile,

1、文件名称:

(1)pfile文件:格式为init+ORACLE_SID.ora ,该文件是普通文本文件格式,如实例名为orcl,则pfile文件名为initorcl.ora

(2)spfile文件:格式为spfile+ORACLE_SID.ora ,该文本二进制文件格式,如实例名为orcl,则spfile文件名为spfileorcl.ora

一般情况下$ORACLE_HOME/dbs/中会存在spfileorcl.ora和init.ora文件(如下图),spfileorcl.orcl是oracle启动时需要加载的参数文件,init.ora文件相当于参数文件的备份,但里面一些参数不完整,用到时需要调整。
在这里插入图片描述

2、参数文件加载顺序

ORACLE 启动时参数文件加载顺序如下(以实例名是orcl为例):
(1)默认读取 $ORACLE_HOME/dbs/spfileorcl.ora

(2)如果spfileorcl.ora读取不到,则读取$ORACLE_HOME/dbs/initorcl.ora

当然oracle为了防止spfile文件损坏丢失及误删除,会在/u01/app/oracle/admin/orcl/pfile目录下备份一份pfile文件。
当读取不到spfileorcl.ora就会报错,我们可以利用 /u01/app/oracle/admin/orcl/pfile中的pfile文件启动。

在这里插入图片描述

在这里插入图片描述

四、问题处理:

从/u01/app/oracle/admin/orcl/pfile目录下的pfile启动,然后重新创建spfile。

1、pfile启动

startup nomount pfile='/u01/app/oracle/admin/orcl/pfile/init.ora.0172022233121';

2、重新创建spfile

创建spfile有两种方式,一种是从pfile文件创建,另一种是MEMORY内存中参数创建,二者取其一即可。
(1)使用pfile创建spfile
create spfile from pfile='/u01/app/oracle/admin/orcl/pfile/init.ora.0172022233121';

(2)使用MEMORY内存中参数创建spfile

create spfile from memory;

在这里插入图片描述
在这里插入图片描述

五、SPFILE和PFILE互相创建:

1、通过spfile的配置生成pfile

格式:create pfile=全路径 from spfile=全路径;–不加路径默认在$ORACLE_HOME/dbs下
例:create pfile=’/home/oracle/initorcl.ora.20220304’ from spfile;

2、通过pfile的配置生成spfile

格式:create spfile=全路径 from pfile=全路径; --不加路径默认在$ORACLE_HOME/dbs下
例:create spfile from pfile='/u01/app/oracle/admin/orcl/pfile/init.ora.0172022233121';

3、通过内存创建spfile和pfile

create pfile from memory;–默认创建$ORACLE_HOME/dbs下initorcl.ora,pfile后加路径相当于备份到路径目录下

create spfile from memory;–默认创建$ORACLE_HOME/dbs下spfileorcl.ora,spfile后加路径相当于备份到路径目录下

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐