暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 不要将CURSOR_SHARING = FORCE用作永久修复程序

原创 Asher.HU 2021-02-04
1057


最佳实践是编写可共享的SQL并使用CURSOR_SHARING 的默认值 EXACT

但是,对于具有许多类似语句的应用程序,设置CURSOR_SHARINGFORCE有时可以显着改善游标共享。用系统生成的绑定值替换文字可以导致减少的内存使用,更快的解析和减少的锁存器争用。但是,FORCE这并不意味着它是永久的开发解决方案。

作为一般准则,“真实世界表现”小组建议不要在极少数情况下,并且仅在满足以下所有条件时设置CURSOR_SHARINGFORCE例外:

  • 共享池中的语句仅在文字值上有所不同。
  • 由于大量的库高速缓存未命中,因此响应时间不是最理想的。
  • 您现有的代码存在严重的安全性和可伸缩性错误-缺少绑定变量-您需要临时的创可贴,直到可以修复源代码为止。
  • 您可以在会话级别而不是实例级别设置此初始化参数。

设置CURSOR_SHARINGFORCE有以下缺点:

  • 它指示该应用程序不使用用户定义的绑定变量,这意味着它可以进行SQL注入。设置CURSOR_SHARINGFORCE 修复SQL注入漏洞或使任何代码更安全。仅在注入了任何恶意SQL文本之后,数据库才会绑定值。

    视频:

  • 在软解析期间,数据库必须执行额外的工作才能在共享池中找到类似的语句。
  • 数据库删除所有文字,这意味着它可以删除有用的信息。例如,数据库在SUBSTRTO_DATE函数中剥离文字值使用系统生成的绑定变量(字面量更佳)会对执行计划产生负面影响。
  • DESCRIBESELECT语句中包含文字的任何选定表达式的最大长度(由返回)增加但是,返回的数据的实际长度不会改变。
  • 不支持星形转换。

也可以看看:

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录