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

数据库没有启动时候,先启动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的时候比较有用。

你可能感兴趣的:(mount)