Java 奇怪的SQL浪费了我的资源
我的11.2.0.3数据库面临一个问题,一个奇怪的查询占数据库总活动的47.42% 该应用程序是用Flex开发的,前端是ApacheTomcat6.0.35,Java版本为1.6.027 我在几个网站上搜索过,发现其他人也有同样的问题,即使是在这个网站()上,但到目前为止还没有找到解决方案:-( 查询是:Java 奇怪的SQL浪费了我的资源,java,oracle,tomcat,odbc,Java,Oracle,Tomcat,Odbc,我的11.2.0.3数据库面临一个问题,一个奇怪的查询占数据库总活动的47.42% 该应用程序是用Flex开发的,前端是ApacheTomcat6.0.35,Java版本为1.6.027 我在几个网站上搜索过,发现其他人也有同样的问题,即使是在这个网站()上,但到目前为止还没有找到解决方案:-( 查询是: SELECT package_name AS procedure_cat, owner AS procedure_schem, obj
SELECT package_name AS procedure_cat,
owner AS procedure_schem,
object_name AS procedure_name,
argument_name AS column_name,
DECODE(position,
0, 5,
DECODE(in_out,
'IN', 1,
'OUT', 4,
'IN/OUT', 2,
0)) AS column_type,
DECODE (data_type,
'CHAR', 1,
'VARCHAR2', 12,
'NUMBER', 3,
'LONG', -1,
'DATE', 91,
'RAW', -3,
'LONG RAW', -4,
'TIMESTAMP', 93,
'TIMESTAMP WITH TIME ZONE', -101,
'TIMESTAMP WITH LOCAL TIME ZONE', -102,
'INTERVAL YEAR TO MONTH', -103,
'INTERVAL DAY TO SECOND', -104,
'BINARY_FLOAT', 100,
'BINARY_DOUBLE', 101,
1111) AS data_type,
DECODE(data_type,
'OBJECT', type_owner || '.' || type_name,
data_type) AS type_name,
DECODE (data_precision,
NULL, data_length,
data_precision) AS precision,
data_length AS length,
data_scale AS scale,
10 AS radix,
1 AS nullable,
NULL AS remarks,
sequence,
overload,
default_value
FROM all_arguments
WHERE owner LIKE :1 ESCAPE '/'
AND object_name LIKE :2 ESCAPE '/'
AND package_name IS NULL
AND (argument_name LIKE :5 ESCAPE '/'
OR (argument_name IS NULL
AND data_type IS NOT NULL))
ORDER BY procedure_schem, procedure_name, overload, sequence
我想知道是否有人找到了解决方案?您的代码可能使用Spring的SimpleJDBCall类吗?此类尝试获取有关存储过程的信息并缓存结果。因此,请确保实例化SimpleJDBCall类一次,并在每次调用存储过程时重用它
或者,在构造SimpleJDBCall对象时,可以调用withoutProcedureRecolumnMetadataAccess()。DBA是否对系统表运行统计信息?如果没有,这可能是导致此查询性能缓慢的原因。运行此查询的是谁/什么?(已知用户,SYS?)从哪个程序?首先从DBA获取会话信息谢谢你的回答!统计数据已经准备好了。查询正在为几个用户执行,但它不在我们的应用程序中,这是java本身的东西。我在OracleDatabaseMetaData.java组件中找到了这个查询。我需要找到的是为什么以及如何避免执行,或者至少减少执行次数。我发现每小时执行多达100 mil次:-(似乎每次应用程序调用SPM时都会执行该查询。顺便说一句,我是DBA。我在每个addm报告中都找到了该查询。我在oracle支持站点中搜索了一下,但什么也没有找到。我在几个论坛中发现了类似的问题,甚至在本论坛和oracle论坛中也发现了类似的问题,但没有找到解决方案或明确的答案:-(检查使用oracle.jdbc.OracleDatabaseMetaData的应用程序代码是否有可能调用getprocedureclumns(或getProcedures)()