首页 > 数据库 >Oracle问题:ORA-01565

Oracle问题:ORA-01565

时间:2023-03-27 10:12:07浏览次数:41  
标签:spfile prod datadg 01565 initSID spfile.273 Oracle ORA ora

问题

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

问题分析

  1. 但数据库是有spfile的,其他节点都可以运行。所以去asm中查看文件是否存在
su - grid  # 切换用户
asmcmd     # 进入asmcmd命令行模式
ASMCMD> cd '+datadg/prod/parameterfile/'  # 进入报错的spfile配置文件路径
ASMCMD> ls   # 查看当前spfile文件名
spfile.273.1028631305
  1. 查看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配置。

标签:spfile,prod,datadg,01565,initSID,spfile.273,Oracle,ORA,ora
From: https://www.cnblogs.com/smyz/p/17260538.html

相关文章