NOMOUNT状态下连接数据库出现ORA-12528错误解决

本文详细描述了数据库启动过程中的关键步骤,包括启动监听器、启动数据库服务及观察数据库与监听器的状态变化。同时,展示了如何在数据库关闭后的状态检查及重新启动到nomount状态的过程,并解决在特定状态下无法连接数据库的问题。

数据库没有启动时候,先启动listener:

D:\oracle\product\11.2.0.3\dbhome_1\BIN>lsnrctlstatus

LSNRCTLfor64-bitWindows:Version11.2.0.3.0-Productionon21-2月-201223:19:35

Copyright(c)1991,2011,Oracle.Allrightsreserved.

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleworld)(PORT=1521)))
LISTENER的STATUS
------------------------
别名LISTENER
版本TNSLSNRfor64-bitWindows:Version11.2.0.3.0-Production
启动日期21-2月-201223:19:14
正常运行时间0天0小时0分25秒
跟踪级别off
安全性ON:LocalOSAuthentication
SNMPOFF
监听程序参数文件d:\oracle\product\11.2.0.3\dbhome_1\network\admin\listener.ora
监听程序日志文件d:\oracle\diag\tnslsnr\oracleworld\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracleworld)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
服务摘要..
服务"CLRExtProc"包含1个实例。
实例"CLRExtProc",状态UNKNOWN,包含此服务的1个处理程序...
命令执行成功

然后在启动数据库服务:

D:\oracle\product\11.2.0.3\dbhome_1\BIN>netstartoracleservicedb11g
OracleServicedb11g服务正在启动....................
OracleServicedb11g服务已经启动成功。

再观察listener的状态:

D:\oracle\product\11.2.0.3\dbhome_1\BIN>lsnrctlstatus

LSNRCTLfor64-bitWindows:Version11.2.0.3.0-Productionon21-2月-201223:20:53

Copyright(c)1991,2011,Oracle.Allrightsreserved.

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleworld)(PORT=1521)))
LISTENER的STATUS
------------------------
别名LISTENER
版本TNSLSNRfor64-bitWindows:Version11.2.0.3.0-Production
启动日期21-2月-201223:19:14
正常运行时间0天0小时1分43秒
跟踪级别off
安全性ON:LocalOSAuthentication
SNMPOFF
监听程序参数文件d:\oracle\product\11.2.0.3\dbhome_1\network\admin\listener.ora
监听程序日志文件d:\oracle\diag\tnslsnr\oracleworld\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracleworld)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
服务摘要..
服务"CLRExtProc"包含1个实例。
实例"CLRExtProc",状态UNKNOWN,包含此服务的1个处理程序...
服务"db11g"包含1个实例。
实例"db11g",状态READY,包含此服务的1个处理程序...
命令执行成功
可以看到在databaseopen情况下,listener状态时READY的,这个db11g数据库是使用动态监听,通过PMON进程

向listener注册数据库的。

再关闭数据库:

D:\oracle\product\11.2.0.3\dbhome_1\BIN>sqlplus/nolog

SQL*Plus:Release11.2.0.3.0Productionon星期二2月2123:20:572012

Copyright(c)1982,2011,Oracle.Allrightsreserved.

SQL>conn/assysdba
已连接。
SQL>shutdownimmediate
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>hostlsnrctlstatus

LSNRCTLfor64-bitWindows:Version11.2.0.3.0-Productionon21-2月-201223:22:08

Copyright(c)1991,2011,Oracle.Allrightsreserved.

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleworld)(PORT=1521)))
LISTENER的STATUS
------------------------
别名LISTENER
版本TNSLSNRfor64-bitWindows:Version11.2.0.3.0-Production
启动日期21-2月-201223:19:14
正常运行时间0天0小时2分58秒
跟踪级别off
安全性ON:LocalOSAuthentication
SNMPOFF
监听程序参数文件d:\oracle\product\11.2.0.3\dbhome_1\network\admin\listener.ora
监听程序日志文件d:\oracle\diag\tnslsnr\oracleworld\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracleworld)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
服务摘要..
服务"CLRExtProc"包含1个实例。
实例"CLRExtProc",状态UNKNOWN,包含此服务的1个处理程序...
命令执行成功

没有db11g数据库相关的信息,因为PMON进程关闭了。

再尝试启动数据库到nomount状态:

SQL>startupnomount
ORACLE例程已经启动。

TotalSystemGlobalArea3407261696bytes
FixedSize2259960bytes
VariableSize2516583432bytes
DatabaseBuffers872415232bytes
RedoBuffers16003072bytes

查看listener状态:

服务"CLRExtProc"包含1个实例。
实例"CLRExtProc",状态UNKNOWN,包含此服务的1个处理程序...
服务"db11g"包含1个实例。
实例"db11g",状态BLOCKED,包含此服务的1个处理程序...
命令执行成功

状态时BLOCKED,这个时候连接数据库会报错:

SQL>connassysdba
ERROR:
ORA-12528:TNS:监听程序:所有适用例程都无法建立新连接

修改连接串db11g,在connect_data中添加(UR=A),如下面所示:

db11g=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=oracleworld)(PORT=1521))
(CONNECT_DATA=
(service_name=db11g)(UR=A)
)
)

再测试:

SQL>connassysdba
已连接。
SQL>select*fromv$version;

BANNER
--------------------------------------------------------------------------------
OracleDatabase11gEnterpriseEditionRelease11.2.0.3.0-64bitProduction
PL/SQLRelease11.2.0.3.0-Production
CORE11.2.0.3.0Production
TNSfor64-bitWindows:Version11.2.0.3.0-Production
NLSRTLVersion11.2.0.3.0-Production

现在可以正常连接了。

这个问题的处理,在创建databaseguard的时候比较有用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值