12 c数据库之坑爹又坑队友的无故链接不上问题处理

  

公司两年前上的系统,当时要用12 c的新特性,就上线投产了。初始甲骨文版本为12.1,该版本在实际使用中错误不断,简直头疼。近日开发投产一些新的应用服务器大概20多台,在投产至10台的时候,数据库内部链接在910年的时候,就会报的错,但是我们的会话数很大,远远没有到达临界值,具体报错如下所示,

  

TNS - 12518: TNS:侦听器不能移交客户端连接
TNS - 12536: TNS:操作将阻止
TNS - 12560: TNS:协议适配器错误
TNS - 00506:操作将阻止
Linux错误:11:资源暂时不可用

  

通过金属氧化物半导体账户查询;ora - 12518对甲骨文12 c多租户架构(文档ID 2252001.1)

  

ora - 12518对甲骨文12 c多租户架构(文档ID 2252001.1)

  


症状时试图通过侦听器连接到PDB,
以下错误发生。

  

错误   

ora - 12518: TNS:侦听器不能移交客户端连接

  

侦听器日志:=======

  

03 - 4月- 2017 08:57:31 (CONNECT_DATA=https://www.yisu.com/zixun/(SID=wd1) (CID=(程序=d:/orasfw/prd1/bin/sqlplus.exe)(主机=主机名)(用户=ismeirb))) (地址==(协议tcp)(主机=XX.XX.XX.XX)(端口=63994))建立 wd1 * 12518

  

TNS - 12518: TNS:侦听器不能移交客户端连接
TNS - 12560: TNS:协议适配器错误
TNS - 00530:协议适配器错误
64位Windows错误:203:未知错误

  


原因PDB SiD侦听器的名字没有正确配置。ora文件

  

SID_LIST_LSNRPD=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=ct1)
(ORACLE_HOME=d: \ orasfw \ prd1)
(SID_NAME=ct1) & lt; & lt; & lt; & lt;国开行Instance_name
)
(SID_DESC=
(GLOBAL_DBNAME=wd1)
(ORACLE_HOME=d: \ orasfw \ prd1)
(SID_NAME=wd1) & lt; & lt; & lt; & lt; & lt;假设是国开行instance_name但PDB instance_name已经配置
)

  

解决方案
PDB instance_name wd1”将永远存在在国开行instance_name“ct1”。配置的SID PDB服务名称wd1所示。

  

SID_LIST_LSNRPD=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=ct1)
(ORACLE_HOME=d: \ orasfw \ prd1)
(SID_NAME=ct1)
)
(SID_DESC=
(GLOBAL_DBNAME=wd1) & lt; & lt; & lt; & lt;PDB Instance_name
(ORACLE_HOME=d: \ orasfw \ prd1)
(SID_NAME=ct1) & lt; & lt; & lt; & lt;国开行Instance_name
)

  

之后添加SID WD1 PDB却很正常的连接。

  

比较适用我们的场景,原来的监听配置文件为;

  

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=salesdb)
(ORACLE_HOME=/u01/app/oracle/产品/12.2.0.1/db_1)
(SID_NAME=salesdb)
)
(SID_DESC=
(GLOBAL_DBNAME=salesstdydb)
(ORACLE_HOME=/u01/app/oracle/产品/12.2.0.1/db_1)
(SID_NAME=salesstdydb)
)
(SID_DESC=
(GLOBAL_DBNAME=salesdb_DGMGRL)
(ORACLE_HOME=/u01/app/oracle/产品/12.2.0.1/db_1)
(SID_NAME=salesdb)
)
)

  

后将监听修改为;
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=salesdb)
(ORACLE_HOME=/u01/app/oracle/产品/12.2.0.1/db_1)
(SID_NAME=salesdb)
)
(SID_DESC=
(GLOBAL_DBNAME=salesstdydb)
(ORACLE_HOME=/u01/app/oracle/产品/12.2.0.1/db_1)
(SID_NAME=salesstdydb)
)
(SID_DESC=
(GLOBAL_DBNAME=salesdb_DGMGRL)
(ORACLE_HOME=/u01/app/oracle/产品/12.2.0.1/db_1)
(SID_NAME=salesdb)
(SID_DESC=
(GLOBAL_DBNAME=salespdb)
(ORACLE_HOME=/u01/app/oracle/产品/12.2.0.1/db_1)
(SID_NAME=salesdb)
)
)
)

  

和开发人员逐个上应用服务器,并投产,观察连接数和监听日志,并没有出现,链接至910的时候疯狂报错现象;

  

完成/

  

SESSIONS_CURRENT SESSIONS_HIGHWATER   <人力资源/>   

 1456 <代码> 1202  

12 c数据库之坑爹又坑队友的无故链接不上问题处理