oracle RAC LOG_ARCHIVE_DEST_1 与 LOG_ARCHIVE_DEST 冲突解决

在做 oracle RAC 归档日志配置时,出现了一个错误,开始看资料的时候,

注意到了 LOG_ARCHIVE_DEST_n 与 LOG_ARCHIVE_DEST 不能同时使用,

但在配置的时候并没有往心里去,一直都在想,出现问题再解决也不迟。

于是乎当由于同时配置了  LOG_ARCHIVE_DEST_1  与 LOG_ARCHIVE_DEST 或者 LOG_ARCHIVE_DUPLEX_DEST 后,

停止数据库,执行 startup mount 时,出现如下错误

SQL> startup mount
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST

数据库启动不了,参数也改不了,只能修改 pfile 了。

ORACLE RAC 环境下的 pfile 都是存在 ASM 磁盘组里面,

1. 查看本地 spfile ,找到spfile 实际路径

cd $ORACLE_HOME/dbs
less initracdb1.ora
内容如下
SPFILE='+ORCLDATA/racdb/spfileracdb.ora'

    可以发现,他是做了一个连接,连接指向 ASM 磁盘组的共享 spfile 


2. 通过 spfile 创建 profile

    如果直接使用 create pfile='/tmp/oracle/init.ora' fromspfile; 语句的话,我们会发现,导出的 init.ora 并不是完整的 spfile 。

    因此我们需要指定 asm spfile 路径

SQL> create pfile='/tmp/oracle/init.ora' from spfile=' +ORCLDATA/racdb/spfileracdb.ora';

3. 修改 profile 文件,去掉或注释掉冲突项

    

vi /tmp/oracle/init.ora

    这里就是冲突的原因



    去掉 *.log_archive_dest='/u01/app/archivelog'


4. asmcmd里备份原来的spfile 

    使用 asmcmd 之前,grid 用户需要添加如下环境变量

export ORACLE_SID=+ASM1
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=$PATH:$ORACLE_HOME/bin

    执行

su - grid
asmcmd

    asmcmd下的文件操作命令与 linux 类似


ASMCMD> cd +ORCLDATA/racdb/
ASMCMD> cp spfileracdb.ora spfileracdb.ora.bak
ASMCMD> ls

    备份完成



5. 根据 pfile 创建 spfile

SQL> create spfile='+ORCLDATA/racdb/spfileracdb.ora' from pfile='/tmp/oracle/init.ora';

6. 验证 spfile 是否生效

ASMCMD> cp spfileracdb.ora /tmp/oracle/spfil.ora

vi /tmp/oracle/spfil.ora

    我们发现冲突选项已经没有了

7. 启动数据库

    

SQL> startup

    数据库成功启动,问题解决



原文地址:https://www.cnblogs.com/moonciki/p/8145826.html