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

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

D:\oracle\product\11.2.0.3\dbhome_1\BIN>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.3.0 - Production on 21-2月 -2012 23:19:35

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleworld)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.3.0 - Production
启动日期                  21-2月 -2012 23:19:14
正常运行时间              0 天 0 小时 0 分 25 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          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>net start oracleservicedb11g
OracleServicedb11g 服务正在启动 ....................
OracleServicedb11g 服务已经启动成功。

再观察listener的状态:

D:\oracle\product\11.2.0.3\dbhome_1\BIN>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.3.0 - Production on 21-2月 -2012 23:20:53

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleworld)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.3.0 - Production
启动日期                  21-2月 -2012 23:19:14
正常运行时间              0 天 0 小时 1 分 43 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          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 个处理程序...
命令执行成功
可以看到在database open情况下,listener状态时READY的,这个db11g数据库是使用动态监听,通过PMON进程

向listener注册数据库的。

 

再关闭数据库:

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

SQL*Plus: Release 11.2.0.3.0 Production on 星期二 2月 21 23:20:57 2012

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

SQL> conn / as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.3.0 - Production on 21-2月 -2012 23:22:08

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracleworld)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.3.0 - Production
启动日期                  21-2月 -2012 23:19:14
正常运行时间              0 天 0 小时 2 分 58 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          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> startup nomount
ORACLE 例程已经启动。

Total System Global Area 3407261696 bytes
Fixed Size                  2259960 bytes
Variable Size            2516583432 bytes
Database Buffers          872415232 bytes
Redo Buffers               16003072 bytes

查看listener 状态:

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

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

SQL> conn  as sysdba
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> conn  as sysdba
已连接。
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

现在可以正常连接了。

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

 

你可能感兴趣的:(NOMOUNT状态下连接数据库出现ORA-12528错误解决)