gpt4 book ai didi

java - 这个查询来自哪里?

转载 作者:行者123 更新时间:2023-11-28 23:59:01 25 4
gpt4 key购买 nike

我有一个在 Tomcat 中运行的 Web 应用程序,它通过数据源连接到 Oracle 数据库。我一直在处理一些奇怪的行为,因为即使没有用户连接,应用程序启动后连接池也会变满!当我检查正在执行的查询时,它似乎总是相同的:

select value$ from props$ where name = 'global_db_name'

连接的上下文是这样的:

<Context antiResourceLocking="true" crossContext="true" path="/taquillas">
<Resource auth="Container" driverClassName="oracle.jdbc.OracleDriver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
jmxEnabled="true" url="jdbc:oracle:thin:@yyy.yyy.yyy.yyy:zzzz:ANNI"
username="xxxxxxxxx" name="jdbc/andrea" password="xxxxxxx"
type="javax.sql.DataSource" validationInterval="30000"
maxActive="50" minIdle="1" maxWait="10000" defaultAutoCommit="false"
initialSize="1" removeAbandonedTimeout="60"
removeAbandoned="true" validationQuery="SELECT 1 FROM DUAL"/>
</Context>

DataSource 是这样的:

public dbutilsHandler()
throws ClassNotFoundException, SQLException, NamingException {
this.gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd")
.serializeNulls().create();
InitialContext cxt;
cxt = new InitialContext();
this.ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/andrea");
this.query = new QueryRunner(ds);
this.con = this.query.getDataSource().getConnection();
}

我正在确保没有连接处于打开状态,但我仍然不明白为什么会这样。帮助!

最佳答案

prop$ 是一个 SYS 表。它包含数据库属性的值,例如 DEFAULT_TEMP_TABLESPACENLS_LANG,是的,还有 GLOBAL_DB_NAMEFind out more .

您提到的查询...

select value$ from props$ where name = 'global_db_name'

... 是recursive SQL,也就是说它是Oracle为了支持应用SQL而生成的内部语句。有趣的是,它似乎与流氓跟踪进程有关,因此值得检查您是否有系统级触发器执行如下操作:

alter system set events ‘10046 trace name context forever,level 12’;

关于java - 这个查询来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43288200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com