Jboss数据源Oracle配置

发布于 2025-01-08 07:13:11 字数 2339 浏览 4 评论 0原文

我所有,

我正在使用jboss 5.1.0 jdk 1.6。 当我的 WebAPP 没有用户工作时,我执行下一个 sql 来查看 Oracle DB 上的会话:

 SELECT A.INST_ID,A.USERNAME,A.STATUS,A.SCHEMANAME,A.MACHINE,A.PROGRAM, 
      TO_CHAR((SYSDATE -((1/86400)*LAST_CALL_ET)),'YYYY-MM-DD HH24:MI:SS') LAST_CALL, 
      TO_CHAR(A.LOGON_TIME,'YYYY-MM-DD HH24:MI:SS') LOGON_TIME, 
      A.SID,A.SERIAL#, 
A.FAILOVER_TYPE,A.FAILED_OVER, 
A.OSUSER,A.TERMINAL,A.TYPE,A.MODULE,A.SERVER,A.LOCKWAIT,A.RESOURCE_CONSUMER_GROUP 
FROM GV$SESSION A  
WHERE A.SCHEMANAME IN ('USER_DB') 
ORDER BY USERNAME,MACHINE,LAST_CALL ASC

结果是:

1   USR_DB  INACTIVE    USR_DB  machine_name  JDBC Thin Client  2012-02-20 11:05:16 2012-02-20 11:04:46 24  5001    NONE    NO  root    unknown USER    JDBC Thin Client    DEDICATED       OTHER_GROUPS

2   USR_DB  ACTIVE      USR_DB  machine2_name  SQL Developer    2012-02-21 09:05:13 2012-02-21 09:03:23 31  3997    NONE    NO  clien2  unknown USER    SQL Developer   DEDICATED       OTHER_GROUPS

第一个结果是我的 WebAPP 的非活动会话,第二个结果是我的 SQL Developer 的活动会话。 我的问题是:如何从视图 GV$SESSION 不活动会话中删除或清理?这是我的 oracle-ds.xml:

   <?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
        <jndi-name>/MyDS</jndi-name>
        <connection-url>jdbc:oracle:thin:@//myhost:1521/xe</connection-url>
        <driver-class>oracle.jdbc.OracleDriver</driver-class>
        <user-name>USR_DB</user-name>
        <password>password</password>
        <min-pool-size>1</min-pool-size>
        <max-pool-size>20</max-pool-size>
        <idle-timeout-minutes>5</idle-timeout-minutes>
        <check-valid-connection-sql>SELECT 1 FROM DUAL</check-valid-connection-sql>
        <background-validation-millis>400000</background-validation-millis>
        <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
        <metadata>
          <type-mapping>Oracle9i</type-mapping>
        </metadata>
</local-tx-datasource>
</datasources>

有一个特殊的配置参数可以强制非活动连接不出现或在视图 GV$SESSION 中将其删除? 在我的应用程序中,我确信我将连接返回到池中。

提前致谢。

I all,

I'm using jboss 5.1.0 jdk 1.6.
When my WebAPP don't have users working, i execute the next sql to see sessions on my Oracle DB:

 SELECT A.INST_ID,A.USERNAME,A.STATUS,A.SCHEMANAME,A.MACHINE,A.PROGRAM, 
      TO_CHAR((SYSDATE -((1/86400)*LAST_CALL_ET)),'YYYY-MM-DD HH24:MI:SS') LAST_CALL, 
      TO_CHAR(A.LOGON_TIME,'YYYY-MM-DD HH24:MI:SS') LOGON_TIME, 
      A.SID,A.SERIAL#, 
A.FAILOVER_TYPE,A.FAILED_OVER, 
A.OSUSER,A.TERMINAL,A.TYPE,A.MODULE,A.SERVER,A.LOCKWAIT,A.RESOURCE_CONSUMER_GROUP 
FROM GV$SESSION A  
WHERE A.SCHEMANAME IN ('USER_DB') 
ORDER BY USERNAME,MACHINE,LAST_CALL ASC

and the result is:

1   USR_DB  INACTIVE    USR_DB  machine_name  JDBC Thin Client  2012-02-20 11:05:16 2012-02-20 11:04:46 24  5001    NONE    NO  root    unknown USER    JDBC Thin Client    DEDICATED       OTHER_GROUPS

2   USR_DB  ACTIVE      USR_DB  machine2_name  SQL Developer    2012-02-21 09:05:13 2012-02-21 09:03:23 31  3997    NONE    NO  clien2  unknown USER    SQL Developer   DEDICATED       OTHER_GROUPS

The first result, is an inactive session of my WebAPP, the second, is my active session of SQL Developer.
My question is: How can i remove or clean from the view GV$SESSION inactive sessions?. Here is my oracle-ds.xml:

   <?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
        <jndi-name>/MyDS</jndi-name>
        <connection-url>jdbc:oracle:thin:@//myhost:1521/xe</connection-url>
        <driver-class>oracle.jdbc.OracleDriver</driver-class>
        <user-name>USR_DB</user-name>
        <password>password</password>
        <min-pool-size>1</min-pool-size>
        <max-pool-size>20</max-pool-size>
        <idle-timeout-minutes>5</idle-timeout-minutes>
        <check-valid-connection-sql>SELECT 1 FROM DUAL</check-valid-connection-sql>
        <background-validation-millis>400000</background-validation-millis>
        <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
        <metadata>
          <type-mapping>Oracle9i</type-mapping>
        </metadata>
</local-tx-datasource>
</datasources>

There are an special config parameter to force inactive connecionts don't appear or remove it in view GV$SESSION?
In my app, i'm sure that i return connections to the pool.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流年里的时光 2025-01-15 07:13:11

大多数时候,您的会话将并且应该处于非活动状态。

INACTIVE 会话仅仅意味着在该特定时刻,该会话没有执行任何特定的 SQL 语句。这并不意味着会话需要清理。它与您的应用程序是否将连接返回到池无关。它只是意味着存在一个打开的数据库连接,该连接此时并未执行 SQL 语句。

当然,您可以通过在查询中添加 WHERE status = 'ACTIVE' 来查询 GV$session,仅查找 ACTIVE 会话。但这可能会排除中间层打开的大多数会话,因为大多数时候它们不会执行 SQL 语句。

Most of the time, your sessions will and should be INACTIVE.

An INACTIVE session merely means that at that particular instant, that session is not executing any particular SQL statement. It doesn't imply that the session needs to get cleaned up. And it has nothing to do with whether your application is returning connections to the pool. It simply means that there is an open database connection that is not at this instant executing a SQL statement.

You could, of course, query GV$session looking for only ACTIVE sessions by adding a WHERE status = 'ACTIVE' to the query. But that will probably exclude most of the sessions opened by the middle tier since most of the time they're not going to be executing SQL statements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文