zoukankan      html  css  js  c++  java
  • Oracle dbms_shared_pool keep固定执行计划到缓存

    dbms_shared_pool keep对象到share pool中


    对于一些大值对象装载进共享池时容易引发两种类型的问题:
            ORA-04031 errors 由于没有足够的内存引发该类似的错误
            为大值对像寻找可用的空间而引发系统性能下降
        将大值对象在实例启动时装载进共享池可以避免上述问题。
       

        对于已经固定在内存中的包,在关闭数据库之前,该对象会被一直保留,不会清除或失效。
            需要访问DBMS_SHARED_POOL这个包的任何用户都必须由SYS授予执行权限。

            如果在SYS模式中创建的包并在不同的模式中运行示例代码,则首先必须给运行示例(即TEST)的用户授予EXECUTE_CATALOG_ROLE
        角色且在DBMS_SHARED_POOL上给TEST以EXECUTE权限,然后需要在SYS.DBMS_SHARED_POOL.KEEP中完全地限定这个包,因为dbmspool.sql
        脚本并不为这个包创建公有同义词。   

      
    一、安装(DBMS_SHARED_POOL缺省并没有随系统安装)

            要使用这个过程,首先必须运行DBMSPOOL.SQL脚本。在启动DBMSPOOL.SQL脚本后,PRVTPOOL.PLB脚本将自动执行。这些脚本不能
            使用CATPROC.SQL来运行。

          
        2.以sys帐户安装DBMS_SHARED_POOL包

            SQL> show user;
            USER is "SYS"
            SQL> @?/rdbms/admin/dbmspool.sql
            Package created.
            Grant succeeded.
            View created.
            Package body created.

        3.查看包包含的存储过程

            SQL> desc dbms_shared_pool

            PROCEDURE ABORTED_REQUEST_THRESHOLD
             Argument Name                  Type                    In/Out Default?
             ------------------------------ ----------------------- ------ --------
             THRESHOLD_SIZE                 NUMBER                  IN

            PROCEDURE KEEP

             Argument Name                  Type                    In/Out Default?
             ------------------------------ ----------------------- ------ --------
             NAME                           VARCHAR2                IN
             FLAG                           CHAR                    IN     DEFAULT

            PROCEDURE PURGE

             Argument Name                  Type                    In/Out Default?
             ------------------------------ ----------------------- ------ --------
             NAME                           VARCHAR2                IN
             FLAG                           CHAR                    IN     DEFAULT
             HEAPS                          NUMBER                  IN     DEFAULT

            PROCEDURE SIZES

             Argument Name                  Type                    In/Out Default?
             ------------------------------ ----------------------- ------ --------
             MINSIZE                        NUMBER                  IN

            PROCEDURE UNKEEP

             Argument Name                  Type                    In/Out Default?

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

             NAME                           VARCHAR2                IN
             FLAG                           CHAR                    IN     DEFAULT
    ————————————————


    将SQL语句常驻内存

            对于单独的SQL语句,且被经常使用,同样可以将其常驻内存。

            此时,需要得到SQL语句的hash值,我们可以通过$sqlarea里的address和hash_value列获得

            SQL> select count(*) from all_objects;

            COUNT(1)
            --------
               40793     

            SQL> select address,hash_value,sql_text from v$sqlarea where sql_text='select count(*) from all_objects';

            ADDRESS       HASH_VALUE SQL_TEXT
            -------- --------------- ----------------------------------------
            2D33FF58      789896629 select count(*) from all_objects 

            SQL> exec sys.dbms_shared_pool.keep('2D33FF58,789896629','C');  

            PL/SQL procedure successfully completed.

            如果我们要取消固定到内存的话,则调用DBMS_SHARED_POOL.UNKEEP即可,该过程的参数与KEEP相同。

        4.清空share pool的命令(如果在使用包keep对象没有可用空间时,可以flush shared_pool)

            ALTER SYSTEM FLUSH SHARED_POOL    --此操作不会清除常驻内存的对象

        5.查看当前已经常驻内存的对象

            select * from v$db_object_cache where kept='YES'       

        6.寻找较大匿名的PL/SQL 块将其分割为小的PL/SQL块,以提高共享池的利用率

            SELECT sql_text

            FROM v$sqlarea

            WHERE command_type=47

            AND LENGTH(sql_text)>500;
    —————————————

  • 相关阅读:
    【学习笔记】Python 3.6模拟输入并爬取百度前10页密切相关链接
    socket编程
    2.4.2电子书fb.c文件
    3.1 电子书框架
    文件浏览器及数码相框 -2.3.2-freetype_arm-2
    文件浏览器及数码相框 -2.3.2-freetype_arm-1
    文件浏览器及数码相框 -2.3.1freetype_pc
    文件浏览器及数码相框 -2.2-字符点阵及汉字库
    文件浏览器及数码相框 -2.1-字符编码
    文件浏览器及数码相框-1
  • 原文地址:https://www.cnblogs.com/shujuyr/p/14683798.html
Copyright © 2011-2022 走看看