Oracle数据库无法打开mount模式,报错ORA-01102

当尝试将Oracle数据库打开到mount模式时遇到ORA-01102错误,原因是共享内存段和信号量仍存在。解决步骤包括删除lk文件,检查并终止后台进程,然后重新尝试以mount模式启动数据库,问题得到解决。

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

数据库打开mount模式报错:ORA-01102: cannot mount database in EXCLUSIVE mode

SQL> startup nomount;
 
ORACLE instance started.

Total System Global Area 1073741824 bytes
Fixed Size		    2932632 bytes
Variable Size		  427819112 bytes
Database Buffers	  629145600 bytes
Redo Buffers		   13844480 bytes
SQL> SQL> alter database mount;
 
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode

原因:“ORACLE_HOME/dbs” 目录中有一个“sgadef.dbf”文件 , Oracle 的进程(pmon、smon、 lgwr 和 dbwr) 仍然存在 - 即使 数据库已关闭,共享内存段和信号量仍然存在 - 有一个“ORACLE_HOME/dbs/lk”文件 “lk”和“sgadef。 dbf”文件用于锁定共享内存。 似乎即使没有分配内存,Oracle 也认为内存是仍然锁定。
查看启动日志:
在这里插入图片描述
解决方法:
1.进入/d01/oracle/PROD/db/tech_st/12.1.0/dbs/目录
2.删除lkPOD文件

rm -rf  lkPROD

3.确认Oracle没有后台进程: ps -ef |grep ora_ |grep PROD|grep ora_dbw0_PROD
在这里插入图片描述
如果存在后台进程,请使用 命令“kill”将其删除。

[oracle@ebs ~]$  kill -9 1912

重新使用mount模式进行登录

[oracle@ebs ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed Mar 2 12:52:42 2022

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup mount
ORACLE instance started.

Total System Global Area 1073741824 bytes
Fixed Size		    2932632 bytes
Variable Size		  427819112 bytes
Database Buffers	  629145600 bytes
Redo Buffers		   13844480 bytes
Database mounted.

成功解决。

### 解决 Oracle 服务器重启后出现 ORA-12514 错误的方案 #### 1. ### 检查监听器状态 首先需要确认监听器是否已经启动并且运行正常。可以通过以下命令检查监听器的状态: ```bash lsnrctl status ``` 如果监听器未启动,可以尝试手动启动它: ```bash lsnrctl start ``` 此外,还需要确保 `listener.ora` 文件中的配置正确无误,并且其中的服务名称和服务注册信息与实际数据库实例相匹配[^1]。 #### 2. ### 启动数据库实例 当服务器重启后,即使监听器处于活动状态,也可能因为数据库实例尚未完全启动而导致此问题发生。此时应按照以下步骤操作: - 使用 SQL*Plus 登录到数据库管理账户: ```bash sqlplus /nolog conn / as sysdba ``` - 输入以下命令以启动数据库实例: ```sql startup ``` 若仅需挂载而不打开数据库,则可使用 `startup mount` 命令代替。这一步骤对于解决 “已连接到空闲例程” 的提示尤为重要[^2]。 #### 3. ### 核实 tnsnames.ora 和 listener.ora 配置文件 确保客户端使用的 `tnsnames.ora` 文件中定义的服务名 (SERVICE_NAME 或 INSTANCE_NAME) 能够被监听器识别。通常情况下,在这两个配置文件之间应该保持一致性。例如: - 在 `listener.ora` 中可能有如下内容: ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name_or_ip)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = your_service_name) (ORACLE_HOME = path_to_your_oracle_home_directory) (SID_NAME = your_instance_name) ) ) ``` - 在 `tnsnames.ora` 中则可能是这样的描述: ```plaintext YOUR_SERVICE_NAME = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name_or_ip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = your_service_name) ) ) ``` 注意这里的 `your_service_name` 应当与数据库的实际 SERVICE_NAME 参数相符[^3]。 #### 4. ### 测试连接 修改完毕后再次测试连接情况。如果仍然存在问题,考虑重新生成监听器配置并通过下列指令刷新其缓存: ```bash lsnrctl reload ``` 接着重复之前的登录流程验证修复效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值