oracle rac环境下,修改参数cluster_database导致的ORA-29707与ORA-01102

本文介绍了解决Oracle RAC环境中因cluster_database参数设置不一致导致的启动失败问题的过程,通过调整参数并重启实例最终成功启动数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在oracle 10g rac环境下执行了以下命令
节点1上:
SQL> alter system set cluster_database=false scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
再次打开数据库到mount状态的时候,出现了报错:
SQL> startup mount
ORA-29707: inconsistent value 1 for initialization parameter cluster_database_instances with other instances
直接startup也是如此:
SQL> startup
ORA-29707: inconsistent value 1 for initialization parameter cluster_database_instances with other instances
经过在网上搜寻,得到一个方法就是:关闭其他所有的实例,然后重启数据库。

节点2上:
QL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

然后在两个节点上分别startup数据库:
节点1上:
SQL> startup
ORACLE instance started.

Total System Global Area  364904448 bytes
Fixed Size                  1219448 bytes
Variable Size             197133448 bytes
Database Buffers          163577856 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.

节点2上:
SQL> startup
ORACLE instance started.

Total System Global Area  364904448 bytes
Fixed Size                  1219448 bytes
Variable Size             155190408 bytes
Database Buffers          205520896 bytes
Redo Buffers                2973696 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode
发现在节点2上报了个ORA-01102的错误(真是一波未平,一波又起……),于是2继续搜索此错误,继续进行了下面的操作:
在节点2上:
SQL> show parameter cluster_database;                     

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
cluster_database                     boolean
FALSE
cluster_database_instances           integer

参数cluster_database发现为flase,记得之前设置了此参数,感觉可能是此参数引起的,便尝试着在一个节点上将此参数设置为true,然后重启该节点
SQL> alter system set cluster_database=true scope=spfile;
System altered.

SQL>  shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.

SQL> startup
ORACLE instance started.

Total System Global Area  364904448 bytes
Fixed Size                  1219448 bytes
Variable Size             155190408 bytes
Database Buffers          205520896 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SQL> select instance_name,status from gv$instance;

INSTANCE_NAME    STATUS
---------------- ------------
rac2             OPEN
rac1             OPEN

SQL>
问题解决!

<think>好的,我现在需要解决用户在Oracle 19c RAC单节点数据库启动时遇到的ORA-12560 TNS协议适配器错误。首先,我得回忆一下ORA-12560错误的常见原因和处理方法。这个错误通常TNS监听器配置、环境变量设置或者实例状态有关。不过用户是在RAC环境中,而且是单节点启动,可能需要考虑RAC特有的配置问题。 首先,用户提到的是单节点启动,可能需要确认是否正确的设置了ORACLE_SID环境变量。在RAC环境中,每个节点通常有唯一的实例名,比如加上节点号的后缀。如果用户没有正确设置ORACLE_SID到当前节点的实例名,可能会导致无法连接到实例,从而引发ORA-12560。这时候需要检查.bash_profile或者对应的shell配置文件,确认ORACLE_SID是否正确。例如,节点1的实例可能是ORCL1,而不是ORCL。 其次,检查监听器状态。在RAC环境中,每个节点都有自己的监听器,或者可能使用SCAN监听器。用户需要确认监听器是否在运行,使用lsnrctl status命令查看监听状态。如果监听器没有启动,或者没有正确注册实例,可能导致连接问题。此外,TNSNAMES.ORA文件中的配置是否正确,特别是服务名和实例名的对应关系是否正确,需要核实。比如,是否使用了正确的服务名或者SID。 另外,数据库实例是否真的已经启动。有时候用户可能认为实例已经启动,但实际上可能由于参数文件错误、存储问题等导致实例未能成功启动。使用ps -ef | grep pmon命令检查PMON进程是否存在,确认实例是否在运行。如果实例未启动,需要查看alert日志文件,找到具体的启动错误原因。 还有,检查sqlnet.ora文件中的配置,特别是ADR设置或者认证方式是否有问题。例如,SQLNET.AUTHENTICATION_SERVICES参数是否设置为NONE或者包含了合适的认证方式,比如ALL或者NTS(在Windows上)。不过用户的环境是Linux,可能需要不同的设置。 此外,在RAC环境中,可能需要检查集群资源的状态。使用crsctl status resource -t命令查看数据库资源是否在线。如果资源未在预期节点上运行,可能需要手动启动资源或者检查集群配置问题。 用户提供的引用[1]和[2]中提到了一些目录创建和参数设置的样例。比如,在引用[2]中提到了备库目录的创建,以及集群相关参数需要去掉。这可能意味着在单节点启动时,某些原本适用于集群的参数可能被错误保留,导致实例无法正确启动。因此需要检查参数文件(spfile或pfile)中的参数是否正确,特别是集群相关的参数CLUSTER_DATABASE是否被设置为FALSE,或者是否去掉了RAC相关的参数。 另外,用户的问题可能涉及到TNS配置是否正确。例如,在tnsnames.ora中是否配置了正确的服务名、主机名和端口。例如,是否指向了本地监听器的地址(比如LISTENER_NODE1),或者SCAN监听器的地址。如果配置的是SCAN监听器,但当前节点监听器未运行,可能导致连接问题。 总结一下,可能的解决步骤包括: 1. 检查ORACLE_SID环境变量是否正确设置。 2. 确认监听器状态,并确保实例已注册到监听器。 3. 检查实例是否真正启动,查看alert日志。 4. 检查参数文件中的集群相关参数是否正确。 5. 验证TNSNAMES.ORA和LISTENER.ORA的配置是否正确。 6. 确保sqlnet.ora中没有不合适的配置。 7. 检查集群资源状态,必要时重启资源。 在逐步排查这些可能性后,应该能找到问题的根源并解决ORA-12560错误。</think>### Oracle 19c RAC单节点启动ORA-12560错误解决方案 #### 1. 检查环境变量配置 - **确认`ORACLE_SID`是否正确** 在RAC环境中,每个节点的实例名通常带有节点编号(如`ORCL1`、`ORCL2`)。执行以下命令检查: ```bash echo $ORACLE_SID ``` 若未正确设置,需在用户配置文件(如`.bash_profile`)中修正,例如: ```bash export ORACLE_SID=ORCL1 ``` 修改后执行`source ~/.bash_profile`生效。 - **验证`ORACLE_HOME`路径** 确保`ORACLE_HOME`指向正确的RAC安装目录: ```bash echo $ORACLE_HOME ``` #### 2. 检查监听器状态 - **查看本地监听器是否运行** 执行以下命令检查监听状态: ```bash lsnrctl status LISTENER_NODE1 # 替换为实际监听器名称 ``` 若未启动,执行`lsnrctl start LISTENER_NODE1`。 - **确认实例注册状态** 在监听器状态输出中检查实例是否显示为`READY`。若未注册,手动注册: ```sql ALTER SYSTEM REGISTER; ``` #### 3. 检查数据库实例状态 - **确认实例是否已启动** 通过进程检查: ```bash ps -ef | grep pmon ``` 若无相关进程,尝试启动实例: ```sql sqlplus / as sysdba SQL> STARTUP ``` - **查看告警日志定位问题** 检查`$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/alert_<instance_name>.log`,分析启动失败的具体原因(如参数错误、存储权限问题)[^2]。 #### 4. 验证参数文件配置 - **检查`CLUSTER_DATABASE`参数** 单节点启动时需确保参数`CLUSTER_DATABASE=FALSE`,若需临时启动单实例,可通过以下方式修改: ```sql CREATE pfile='/tmp/pfile.ora' FROM spfile; -- 修改pfile.oraCLUSTER_DATABASE=FALSE,删除集群相关参数 SQL> STARTUP PFILE='/tmp/pfile.ora'; ``` - **移除冗余集群参数** 确保参数文件中未包含`CLUSTER_NODES`、`REMOTE_LISTENER`等集群专用参数。 #### 5. 检查网络配置 - **验证`tnsnames.ora`配置** 检查连接描述符是否指向正确的主机和端口,例如: ```tnsnames ORCL1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = ORCL1) ) ) ``` - **确认`listener.ora`配置** 确保监听器配置包含实例的静态注册(仅限未自动注册时): ```listener.ora SID_LIST_LISTENER_NODE1 = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1) (SID_NAME = ORCL1) ) ) ``` #### 6. 检查集群资源状态 - **查看数据库资源状态** 使用`crsctl`检查资源是否在线: ```bash crsctl status resource -t ``` 若数据库资源未运行,尝试启动: ```bash srvctl start database -d ORCL -node node1 ``` #### 7. 其他可能原因 - **检查`sqlnet.ora`配置** 确保未设置`SQLNET.AUTHENTICATION_SERVICES=NONE`导致认证失败。 - **权限问题** 确认`/u01/app/oracle/admin`等目录权限为`oracle:oinstall`[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值