问题描述:
在RAC环境中,想开启归档日志,其中使用
SQL> alter system
set
cluster_database=
false
scope=spfile;-->把集群修改为单实例
修改好后主节点,恢复集群双节点
SQL> alter system
set
cluster_database=
true
scope=spfile;-->把集群修改为双实例
当前数据库主节点已经open状态,查询状态是open
备节点已是shutdown状态,启动当前节点时报:
ORA-01102: cannot mount database in EXCLUSIVE mode
经从网上查阅信息,可能是如下,我把相关解决思路copy过来大家可以参考
分析原因:
一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备、集群没有正确开启)占用了;
二、说明oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,
1、 Oracle的共享内存段或信号量没有被释放;
2、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;
3、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。
解决思路:
当发生1102错误时,可以按照以下流程检查、排错:
如果是HA系统,检查其他节点是否已经启动实例检查Oracle进程是否存在,如果存在则杀掉进程检查信号量是否存在,如果存在,则清除信号量检查共享内存段是否存在,如果存在,则清除共享内存段检查锁内存文件lk<sid>和sgadef<sid>.dbf是否存在,如果存在,则删除。
具体做法:
首先,虽然我们的系统是HA系统,但是备节点的实例始终处在关闭状态,这点通过在备节点上查数据库状态可以证实。
其次、是因系统是修改过集群状态的,是否在修改后没有生效,当时就是查询当前集群状态
SQL> show parameter cluster
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cluster_database boolean fales
cluster_database_instances integer 2
cluster_interconnects string
这里可能大概判断出来啥问题影响,可能是当前修改参数后没有生效,需要重新修改生效,就是第一种情况
把数据库重启支mount状态
SQL> alter system
set
cluster_database=
true
scope=spfile;
把数据库修改成open状态,再去尝试备节点是否可以正常启动成功,结果发现启动成功
在修改RAC环境参数后最好再确认一下是否修改成功主