ORA-01105: mount is incompatible with mounts by other instances。

问题描述

同事反馈在进行扩展表空间时增加数据文件报错ORA-00059: 超出 DB_FILES 的最大值,查询发现现场是RAC环境,DB_FILES参数为200,而当前数据文件总数已是200个引发的报错。随即沟通了停库窗口,进行了db_files参数的更改,启库提示报错:ORA-01105: mount is incompatible with mounts by other instances。

更改参数步骤如下:

--查数据库默认数据文件数量参数
SQL> show parameter db_files;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_files                             integer     200

或

select * from v$parameter where name like '%db_files%'

--查数据库数据文件数量总数
select count(*) from dba_data_files ;
200

总数已经是200了

--更改参数前 备份当前的参数文件(备份的目的是规避重启失败,建议更改任何参数前都先备份参数文件)
SQL> create pfile='/home/oracle/pfileywrac20240108.ora' from spfile;

--查看备份的参数文件
[oracle@gsdb ~]#cat /home/oracle/pfileywrac20240108.ora

--更改db_files参数(sid='*'  1个节点执行  2个节点都生效,不用2个节点都执行更改参数语句)
SQL> alter system set db_files=5000 sid='*' scope=spfile ;

System altered.

--节点1关库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

--节点1启库
SQL> startup
ORACLE instance started.

Total System Global Area 1.6729E+11 bytes
Fixed Size		    2262368 bytes
Variable Size		 3.2212E+10 bytes
Database Buffers	 1.3475E+11 bytes
Redo Buffers		  321286144 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-01174: DB_FILES is 5000 buts needs to be 200 to be compatible

问题原因

shutdown immediate是关闭1个节点的操作,第二个节点参数未生效,RAC场景下需要2个节点参数都生效方可启库成功。分别查2个节点的状态

--节点1
SQL> select status from v$instance;

STATUS
------------------------------------
STARTED


--节点2
SQL> select status from v$instance;

STATUS
------------------------------------
open

解决办法

采用srvctl的方式重启库,具体步骤如下:

--在open状态的节点上 备份当前的参数文件(备份的目的是规避重启失败)
SQL> create pfile='/home/oracle/pfileywrac20240108.ora' from spfile;

--查看备份的参数文件
[oracle@gsrac2 ~]#cat /home/oracle/pfileywrac20240108.ora

--修改参数
SQL> alter system set db_files=5000 sid='*' scope=spfile ;  #1个节点执行,所有实例生效

--重启数据库  法一(建议)
su - grid
crsctl stat res -t   #查集群状态
srvctl stop database -d racdb   #1个节点操作,两个节点的数据库实例都会关闭
srvctl start database -d racdb   #1个节点操作,两个节点的数据库实例都会启动
srvctl status database -d racdb  #查看集群数据库状态
crsctl stat res -t   #查集群状态

sid='*'是指在所有实例上生效

--重启数据库  法二
su - oracle
SQL> shutdown immediate  #节点1和节点2分别执行
SQL> startup  #节点1和节点2分别执行
法二场景必须按顺序操作,不然提示如下报错:
ORA-01105: mount is incompatible with mounts by other instances
ORA-01174: DB_FILES is 5000 buts needs to be 200 to be compatible

注意事项

1、更改参数前先备份参数文件,为规避万一启库失败好回退。

2、集群中shutdown immediate 是关闭1个实例,其他实例依然是open状态

总结

作为专业人员是不该出现这低级错误的,果真是基础不牢,地动山摇。还得多巩固多实验写文档,按规范的步骤操作,毕竟现在需要掌握的库类别多了,记忆力也不如从前了。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ORA-00955错误表示在创建新对象时,使用的名称已经被现有对象占用。这可能是因为您尝试创建一个与现有表、视图、索引或其他对象同名的对象。要解决此问题,您需要更改对象的名称,以确保它与现有对象不冲突。您还可以删除现有对象,以便您可以使用该名称创建新对象。请注意,删除现有对象可能会导致数据丢失,因此在执行此操作之前,请务必备份数据。 ### 回答2: ORA-00955是Oracle数据库在执行SQL脚本时的一种常见错误。它表示该脚本中使用的对象名称已经被现有对象占用。这常常发生在创建新表、索引或存储过程等数据库对象时。 通常,ORA-00955错误是由于数据库中已经存在同名的对象导致的。当您试图创建一个新的对象名称时,如果该名称已经被其他对象使用,数据库就会拒绝创建,并显示ORA-00955错误信息。 要解决ORA-00955错误,您需要检查当前数据库中是否已经存在了一个同名的对象。您可以使用Oracle SQL Developer、SQL*Plus或其他数据库工具来执行以下步骤: 1. 连接到数据库 首先,您需要连接到数据库。您可以使用SQL*Plus或其他数据库工具来连接到数据库,或者在Oracle SQL Developer中打开连接。 2. 查找重复的对象 然后,您需要执行类似于以下的SQL查询来检查数据库中是否已经存在同名的对象: SELECT object_name, object_type FROM user_objects WHERE object_name = 'YOUR_OBJECT_NAME'; 在此查询中,将YOUR_OBJECT_NAME替换为您想要创建的对象名称。如果该名称已经被使用,则查询将返回一个或多个现有对象的详细信息。 3. 更改对象名称 如果查询返回了一个或多个现有对象名称,则您需要更改您要创建的对象的名称,以避免与现有对象名称发生冲突。您可以选择重新命名现有的对象或选择一个新的名称来创建您的新对象。 4. 重新运行脚本 一旦您更改了对象名称,就可以重新运行您的SQL脚本。如果没有其他错误,您应该能够成功创建新的数据库对象,而不再遇到ORA-00955错误了。 总之,ORA-00955错误是因为数据库中已经存在同名的对象,导致无法创建新的对象。要解决此问题,您需要查找重复的对象名称,并重新命名或更改名称以避免与已有对象发生冲突。一旦解决了名称冲突问题,您应该能够创建新的数据库对象。 ### 回答3: ORA-00955是Oracle数据库中常见的错误之一,它通常出现在创建表、视图、函数、存储过程等对象的过程中,错误信息提示“name is already used by an existing object”,即数据库中已经存在同名的对象。 出现ORA-00955错误的原因可能有以下几种: 1. 已经创建了同名的对象,如同名的表、视图、函数、存储过程等; 2. 在创建对象时使用了已经被占用的名称,如Oracle内置的保留名称; 3. 在删除对象时没有删除干净,还有残留的同名对象存在。 如果出现ORA-00955错误,可以根据以下步骤进行解决: 1. 确认是否存在同名对象,通过查询数据库信息或使用系统管理员权限删除同名对象; 2. 避免使用Oracle内置保留名称来命名对象; 3. 确认是否有残留的同名对象存在,通过仔细查看数据库中的对象,并彻底删除它们。 在日常数据库的开发和维护中,出现ORA-00955错误时不要慌张,应该冷静分析错误原因,并根据实际情况采取相应的解决措施,以保证数据库的正常运行。同时,建议在创建对象时,加上一些有意义的前缀或后缀,以免与其他同名对象产生冲突。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福娃筱欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值