oracle中如何将对象固定到共享池

分类:编程技术 时间:2024-02-20 15:34 浏览:0 评论:0
0
本文主要讲解“Oracle如何将对象固定到共享池”。有兴趣的朋友不妨看一下。文章介绍的方法简单、快捷、实用。让小编带你学习“Oracle如何将对象固定到共享池中”!

PL/SQL一般都很大。要将此类对象加载到共享池中,需要找到一个大的尺寸。如果连续加载段的连续内存空间,必然会导致大量热内存被老化出共享池。这必然会影响数据库的性能。

因此将常用的PL/SQL或SQL游标固定到共享池中可以解决上述问题。包括可能的 ORA-04031 错误。

1.将 PL/SQL 修复到共享池

SYS@cdbtest1(MING)> exec sys.dbms_shared_pool.keep('ming.p_hello','P');

p>

PL /SQL过程成功完成。

您可以通过以下sql的keep字段检查它是否固定到共享池中。

选择 * FROM v$db_object_cache whereowner='MING' and TYPE = 'PROCEDURE';

修复解决方案:

SYS@cdbtest1(MING )> exec sys.dbms_shared_pool.unkeep('ming .p_hello','P');

PL/SQL 过程成功完成。

2.将sql游标固定到共享池方法

对于固定SQL游标,需要了解以下内容:

a.固定游标需要获取游标的地址和hash_value

b.对于父游标下面的多个子游标,其地址和hash_value相同

MING@ming(MING)>variable p number;

MING@ming(MING)>exec :p := 10;

PL/SQL 过程成功完成。

MING@ming(MING)> select /*test2*/ count(*) from t1 where a<: p;

COUNT(*)

< p>----------

36

MING@ming(MING )> 设置第 100 行

MING@ming(MING) > select sql_id,sql_text from v$sql where sql_text like '%test2%';

SQL_ID SQL_TEXT

< p>------------- --- -------------------------------- ------------------ ------------------

1anf7skpasz1a select /*test2*/ count(*) from t1 where a<:p

5ybns6qudvgcm select sql_id,sql_text from v$sql where sql_text like '%test2%'

MING @ming(MING)> select sql_id,address,hash_value,version_count from v$sqlarea where sql_id='1anf7skpasz1a';

SQL_ID 地址 HASH_VALUE VERSION_COUNT

------- ------ ---------------- ---------------- -------------------

< p>1anf7skpasz1a 000000007267DA48 2863430698 1

固定光标

exec sys.dbms_shared_pool.keep('000000007267DA48,2863430698','C');

取消固定光标< /p>

exec sys.dbms_shared_pool.unkeep('000000007267DA48,2863430698','C');

至此,相信大家对“如何Oracle将对象固定到共享池》,不妨来实践一下吧!这是网站。更多相关内容,您可以进入相关渠道进行查询。关注我们并继续学习!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > oracle中如何将对象固定到共享池

用户评论