ora-12528 : message 12528 not found; product=RDBMS ; facility=ora

  ora-12528 : message 12528 not found; product=RDBMS ; facility=ora 收藏

author:skate
time:2009/11/28



我用pl/sql developer连接数据库时报错误ora-12528

故障环境说明:


在pl/sql(client)连接数据库时为提示:


ora-12528 : message 12528 not found; product=RDBMS ; facility=ora

说明:我的数据库类型是asm类型,不是rdbms数据库

我登录数据库服务器查看:

C:\Documents and Settings\Administrator>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 28-11月-2009 21:1
0:56

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

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期                  28-11月-2009 18:35:33
正常运行时间              0 天 2 小时 35 分 23 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          C:\oracle\product\10.2.0\db_1\network\admin\listener.o
ra
监听程序日志文件          C:\oracle\product\10.2.0\db_1\network\log\listener.log

监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=asm)(PORT=1521)))
服务摘要..
服务 "+ASM_XPT" 包含 1 个例程。
例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...
服务 "+ASm" 包含 2 个例程。
例程 "+ASM", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功

发现服务的状态为blocked,表示此实例不能接受连接

监听服务一共有三种状态,分别如下所示:

BLOCKED:表示此实例不能接受连接
UNKNOWN:表示此实例在listener.ora文件中注册,而不是通过动态服务注册,因而不知道其状态
READY:表示此实例可接受连接

解决办法:


修改clinet 的tnsnames.ora


方法1、我的listener中local_listener是动态注册的.


动态注册需在TNS的connect_data字串加入(UR=A),对UR=A用于在listener中的服务状态为blocked service时仍样建立通信。
asm =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.105)(PORT = 1521))
)
(CONNECT_DATA =
#skate add begin
   (UR=A)
#skate add end
(SERVICE_NAME = +asm)
)
)

这种方式适合客户端少,如果客户端多的话,你要修改所有的客户端。而下面的方法只有修改服务器的listener.ora文件就ok的

方法2、如果你的监听器注册为动态注册的话。修改服务器的listener.ora,变动态注册监听为静态注册。


SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
#skate add begin
     (SID_DESC =
(GLOBAL_DBNAME = +ASm)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(SID_NAME =+ASM)
)
#skate add end
)

----end------

你可能感兴趣的:(message)