现场报网公司数据库连不上,先检查了下数据库processes=1500,session=2200.我认为非常大啊。这个数据库没有几个人用。
查看v$session中的session最多是哪个machine发起的。发现是省公司的数据库发起的session,找开发梳理了下业务,省公司同步dblink操作网公司表,且是通过weblogic的连接池。
哦,有点明确了,是dblink引起的。weblogic连接池是一直存在的,所以在网公司端session是不释放的。假设省公司把应用都停掉,那在网公司端的session都会释放。要验证想法。做个试验:
目标:数据库A上建dblink,改动数据库B上的表。
环境准备:
1.在数据库A上建dblink
create public database link TO_B connect to TEST_DB identified by TEST_DB using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.15.150)(PORT = 1521)))(CONNECT_DATA =(SID = orcl)))';
2.在数据库B上建表
create table TEST( ID NUMBER );
insert into test values(1);
開始測试:
1.在数据库B上select count(1) from v$session;
2.在数据库A上update test@TO_B set id=1;
commit;
3.在数据库B上select count(1) from v$session;能够看到涨了一个
对照測试:
1.在数据库B上select count(1) from v$session;
2.在数据库A上update test@TO_B set id=1;
commit;
alter session close database linkTO_B;
3.在数据库B上select count(1) from v$session;能够看到没有变化
总结: 出现这样的问题。归根结底是操作dblink不规范,用了之后没有关闭。
有可能是bug:
提供反馈... 您已依据 ID 匹配定向到此 BUG。或者, 单击此处搜索此短语。隐藏 Bug 18394488 : TOO MANY CONNECTIONS OVER SHARED DBLINK AFTER UPGRADE TO 11.2.0.4 转究竟部Its count didn't change , anyway after upgrade it is same that the previous value before upgrade. ct found metalink document why they use shared db link. ORA-24777 reported when using a database link from within an XA coordinated transaction (Doc ID 1506756.1) Solution from document; Two options 1. Configure the database to allow the use of shared servers and then let the application use these as per the following documentation http://docs.oracle.com/cd/E11882_01/server.112/e25494/manproc003.htm#ADMIN0050 2 or establish whether the Java application needs to start an XA transaction. OR 2. Define the database link being utilised as a shared database link, i.e, CREATE SHARED DATABASE LINK .. They got this error many years ago ; ORA-24777 reported by a JDBC/XA application when utilising a database link between two Oracle databases. And db links was configured to shared db links. I explained before why we are using shared server ( performance ) A complete test case epxlaining how a connection from 11.2.0.4. to 11.2.0.3 opens alot of connections: db_link.pdf WORKAROUND: ----------- none RELATED BUGS: ------------- Bug 18157790 - ORA-22 AFTER UPGRADE FROM 11.2.0.3 TO 11.2.0.4 Bug 1559258 - PSEUDO SESSION INCREASE WITH XA + SHARED DBLINK REPRODUCIBILITY: ---------------- issue is reproducible on ct's env. TEST CASE: ---------- provided STACK TRACE: ------------ SUPPORTING INFORMATION: ----------------------- 24 HOUR CONTACT INFORMATION FOR P1 BUGS: ---------------------------------------- DIAL-IN INFORMATION: -------------------- IMPACT DATE: ------------
附录为官方文档:
If you access a database link in a session, then the link remains open until you close the session. A link is open in the sense that a process is active on each of the remote databases accessed through the link. This situation has the following consequences:
If 20 users open sessions and access the same public link in a local database, then 20 database link connections are open.
If 20 users open sessions and each user accesses a private link, then 20 database link connections are open.
If one user starts a session and accesses 20 different links, then 20 database link connections are open.
After you close a session, the links that were active in the session are automatically closed. You may have occasion to close the link manually. For example, close links when:
The network connection established by a link is used infrequently in an application.
The user session must be terminated.
To close a link, issue the following statement, where linkname refers to the name of the link:
ALTER SESSION CLOSE DATABASE LINK linkname;Note that this statement only closes the links that are active in your current session.
转载于:https://www.cnblogs.com/bhlsheji/p/5056641.html
相关资源:数据结构—成绩单生成器