ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 奇怪的ORA-12528错误

奇怪的ORA-12528错误

原创 Linux操作系统 作者:pangzi913 时间:2008-11-22 18:43:09 0 删除 编辑
奇怪的ORA-12528错误

个人在配置两个数据库,在NET Manger 中,2个服务名,配置一个监听。两个服务的端口号都为1521,链接类型:数据库默认。

监听位置:TCP/IP 1521

数据库服务:全局数据库名:ORCL

ORACLE主目录:d:oracleproduct10.1.0db_1

SID:ORCL

另一个数据库类似配置

以下是从网上找来。

http://kenlan.itpub.net/post/21171/198811

在同一机器上新装了两个数据库,装完后能是正常应用的,但关闭数据库后重新打开就报错,不能连接,提示ORA-12528这样的错误,

ORA-12528错误

奇怪的ORA-12528错误

个人在配置两个数据库,在NET Manger 中,2个服务名,配置一个监听。两个服务的端口号都为1521,链接类型:数据库默认。

监听位置:TCP/IP 1521

数据库服务:全局数据库名:ORCL

ORACLE主目录:d:oracleproduct10.1.0db_1

SID:ORCL

另一个数据库类似配置

以下是从网上找来。

http://kenlan.itpub.net/post/21171/198811

在同一机器上新装了两个数据库,装完后能是正常应用的,但关闭数据库后重新打开就报错,不能连接,提示ORA-12528这样的错误,想不出是什么原因就上网搜了一下,找到了解决方法,不过很奇怪

..................



下面重演问题的全过程:

1、启动监听器

LSNRCTL> start

...

2、以SYS用户登录

SQL> connect sys@ctlg as sysdba;

Enter password:

ERROR:

ORA-12528: TNS:listener: all appropriate instances are blocking new connections

--这时候报错,唔知点解...

3、上网找办法ing....

4、修改listener.ora,增加一段

(SID_DESC =

(GLOBAL_DBNAME = ctlg)

(ORACLE_HOME = /oracle/product/10.1.0/Db_1)

(SID_NAME = ctlg)

)

保存后,重新启动监听器

5、再次尝试连接

SQL> connect sys@ctlg as sysdba;

Enter password:

Connected.

--可以正常连接,说明是因为没监听数据库???

6、再次修改listener.ora文件,去掉刚才加的那一段,保存后重启监听器

7、以SYS再次尝试连接

SQL> connect sys@ctlg as sysdba;

Enter password:

Connected.

又成功了喔,不明白。这不是又回起始状态了嘛,为什么现在可以连接而刚开始不行呢?真奇怪!

分类: ( Oracle DB ) :: 评论 (2) :: 静态链接网址 :: 引用 (0)

原来如此 [回复]

dmyao,你这样一说,俺就明白了.THANKS

kenlan | 12/09/2006, 12:21

简单的道理 [回复]

你修改好后是静态注册,所以数据库关闭后,还是在监听里?之前的是动态注册,数据库启动的时候,才会到监听里面,你数据库关闭的时候,监听里面的信息过一段时间后和会自动没有,所以通过监听连接数据库就会报错







ORA-12528问题解决

http://www.cublog.cn/u/17264/showart_472379.html




在solaris中运行了lsnrctl stop将listener停止,然后运行lsnrctl start将listener重新启动,出现问题及解决办法如下:

lsnrctl status

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lypch)(PORT=1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROCipc)))

Services Summary...

Service "LSExtProc" has 1 instance(s).

Instance "LSExtProc", status UNKNOWN, has 1 handler(s) for this service...

Service "ammicly" has 1 instance(s).

Instance "ammicly", status BLOCKED, has 1 handler(s) for this service...

The command completed successfully

这个问题说明数据库没有Mount

连接数据库,发现:

ORA-12528: TNS:listener: all appropriate instances are blocking new connections

用sqlplus /nolog

sql>connect [email=sys/ammic@amicly]sys/ammic@amicly[/email] as sysdba

ORA-12528: TNS:listener: all appropriate instances are blocking new connections

连接的问题可以通过修改listener.ora的参数,把动态的参数设置为静态的参数,红色标注部分,然后从新启动监听,就OK

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = C:oracleproduct10.1.0db_1)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME = ammicly)

(ORACLE_HOME = c:oracleproduct10.1.0db_1)

(SID_NAME = ammicly)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = lypch )(PORT = 1521))

)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

)

)

通过修改tnsnames.ora的参数,红色表注部分

# tnsnames.ora Network Configuration File: C:oracleproduct10.1.0db_1

networkadmintnsnames.ora

# Generated by Oracle configuration tools.

AMMICLY =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = lypch )(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ammicly)

(UR=A)

)

)

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)

然后 sqlplus /nolog

SQL>alter database mount;

SQL>alter database open;

这样就可以启动数据库了;

或者用Oradim -shutdown -sid ammicly -shuttype srvc,inst -shutmode immediate -syspwd ammic;关闭数据库

在用oradim -startup -sid ammicly -starttype srvc,inst -syspwd ammic;启动数据库解决;也可以在截面上从启动数据库服务来解决;

总结ORA-12528问题是因为监听中的服务使用了动态服务,系统启动后,数据库没有正常的MOUNT,因此在动态模式下,就会出现这个问题,用静态的就不会有这个问题,因此上面的方法就是把监听设置为静态,或者在tnsnames.ora中追加(UR=A)或者从启动服务,三种方法解决问题;



-------------------------

用静态注册的风险是,如果在instance运行中,lisener重新启动,就找不到instance了。换言之,静态注册需要先启动lisener,再启动instance。而且静态模式下,lisener status显示的是unknown

而且,用动态的话,instance nomount状态下,一般是dba需要进行操作(比如恢复),这个时候一般直接登陆到host进行,不使用tns远程连接

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7633405/viewspace-501441/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: ORA-01207(01991)
请登录后发表评论 登录
全部评论

注册时间:2008-11-22

  • 博文量
    40
  • 访问量
    63201