oracle数据库SQL文本长度过长性能问题

     oracle 11G以前,DBMS_SQL对输入的SQL长度不能超过32K,原因是输入参数只能是VARCHAR2类型,11G后,可以用CLOB作为输入参数,则取消了这个限制。

     PL/SQL中,表达式/SQL本身的长度是可以达到比较长的长度(50K)左右,如果表达式/SQL过长,超过了一个ORACLE包/过程允许的最大程序长度,则在编译时报 pls-123:program too large错误,这是pl/sql编译器本身的限制造成的,即表达式/SQL的长度在PL/SQL中受限于包/过程的最大大小  。

     在实践中ORACLE数据库SQL文本长度过长(sql文本长度)会引发性能问题。

     通常相关指标为SQL文本长度不超过20000字节。

    SQL文本过长时会造成SQL编译耗时长、内存使用增加,严重时,还可能导致数据库无法解析,甚至PGA内存泄漏耗尽操作系统可用内存。

     因此建议SQL文本长度不超过20000字节。

     SQL文本长度不超过20000字节,SQL文本过长时会造成SQL编译耗时长、内存使用增加,严重时,还可能导致数据库无法解析,甚至PGA内存泄漏耗尽操作系统可用内存。因此建议SQL文本长度不超过20000字节。

解决方案:

1、分析SQL语句,改写实现方式,比如采用全局临时表、视图等方式。

2、拆分SQL,分步实现。

更多内容请关注公众号“测试小号等闲之辈”~

你可能感兴趣的:(性能测试,数据库,oracle,sql)