Oracle问题:ORA-01565

2023-05-12,

问题

oracle启动时报错,找不到spfile文件。

ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+datadg/prod/parameterfile/spfile.273.1008592463'
ORA-17503: ksfdopn:10 Failed to open file +datadg/prod/parameterfile/spfile.273.1008592463
ORA-15056: additional error message
ORA-15173: entry 'spfile.273.1008592463' does not exist in directory 'parameterfile'
ORA-06512: at line 4

问题分析

    但数据库是有spfile的,其他节点都可以运行。所以去asm中查看文件是否存在
su - grid  # 切换用户
asmcmd # 进入asmcmd命令行模式
ASMCMD> cd '+datadg/prod/parameterfile/' # 进入报错的spfile配置文件路径
ASMCMD> ls # 查看当前spfile文件名
spfile.273.1028631305
    查看oracle的initPROD或pfilePROD配置,我们知道,RAC环境下,使用共享的spfile的话,initPROD/pfilePROD会配置指向asm路径的配置,配置如下:
cd $ORACLE_HOME/dbs
cat initSID.ora # SID是自己数据库的实例名
SPFILE='+datadg/prod/parameterfile/spfile.273.1008592463'

可以看到文件名与asm中的spfile文件名不一致。

判断是在修改了spfile配置后,文件版本号发生了变化。所以我的理解是,每次修改spfile文件时,oracle会自动生成一个新的spfile文件,并由asm自动命名,这时文件名会发生变化,导致数据库重启时会找不到旧的。

解决方法

方法一 修改initSID.ora文件中的路径为新的路径即可,新的路径就是asm中实际文件名称。

vi initSID.ora

cat initSID.ora # SID是自己数据库的实例名

SPFILE='+datadg/prod/parameterfile/spfile.273.1008592463'

改为

cat initSID.ora # SID是自己数据库的实例名

SPFILE='+datadg/prod/parameterfile/spfile.273.1028631305'

优点:

操作简单,不易出错。

缺点:

每次修改完配置文件,spfile文件名会发生变化,重启后会报错无法启动。并且自动启动也会因为报错而终止。

方法二 为spfile.xxx.xxxxx创建别名

# 1. 创建别名
su - grid
asmcmd
mkalias +datadg/prod/PARAMETERFILE/spfile.273.1028631305 +datadg/prod/spfilePROD4.ora
# 2. 将initSID.ora文件路径指向新的别名路径
su - oracle
cd $ORACLE_HOME/dbs
vi initSID.ora
SPFILE='+datadg/prod/spfilePROD4.ora' # 配置文件内容

之后再启动数据库即可。

优点:

修改spfile文件后,别名不影响(未验证),每次修改不需要修改initSID.ora配置。

Oracle问题:ORA-01565的相关教程结束。

《Oracle问题:ORA-01565.doc》

下载本文的Word格式文档,以方便收藏与打印。