使用DBMS_SHARED_POOL包将对象固定到共享池


   DBMS_SHARED_POOL包提供存储过来将PL/SQL象或SQL固定到Oracle 共享池。一旦象固定之后,不再参与aged out,

是常驻内存,即便是使用alter system flush shared_pool也不会将对除出共享池。

   

    于一些大值对象装载进共享池容易引发两种类型的问题

        ORA-04031 errors 由于有足存引发该类似的错误

        值对找可用的空而引性能下降

    值对象在启动时载进共享池可以避免上述问题

   

    于已固定在存中的包,在关闭数之前,该对被一直保留,不会清除或失效。

        需要访问DBMS_SHARED_POOL这个包的任何用都必SYS授予限。

        

        如果在SYS模式中建的包在不同的模式中行示例代首先必须给运行示例(TEST)的用授予EXECUTE_CATALOG_ROLE

    角色且在DBMS_SHARED_POOLTESTEXECUTE限,然后需要在SYS.DBMS_SHARED_POOL.KEEP中完全地限定这个包,因dbmspool.sql

    脚本为这个建公有同义词   

   

一、安装(DBMS_SHARED_POOL缺省并没安装)

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

        使用CATPROC.SQL来运行。

       

    1.看版本信息

        SQL> select * from v$version;

       

        BANNER

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

        Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod

        PL/SQL Release 10.2.0.4.0 - Production

        CORE    10.2.0.4.0      Production

        TNS for Linux: Version 10.2.0.4.0 - Production

        NLSRTL Version 10.2.0.4.0 - Production

 

    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

 

二、DBMS_SHARED_POOL包的使用

    1.DBMS_SHARED_POOL.KEEP 储过

        该过程用于将对象固定到共享池

       

        PROCEDURE DBMS_SHARED_POOL.KEEP (name IN VARCHAR2 ,flag IN CHAR DEFAULT 'P');

       

            Flag                      Description

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

            C                              cursor                              

            JC                             java class                          

            JD                             java shared data                    

            JR                             java resource                       

            JS                             java source                         

            P                              Package, procedure, or function name

            Q                              sequence                            

            R                              trigger                             

            T                              type                                 

            Any other character             Cursor specified by address and hash value        

        e.g.

            exec sys.dbms_shared_pool.keep('SYS.STANDARD');

            exec sys.dbms_shared_pool.keep('scott.tri_test','T')   

                    

           

    2.DBMS_SHARED_POOL.UNKEEP 储过

        从过程的描述即可以知道,该过程用于将对从清出保留池

        e.g.

            exec sys.dbms_shared_pool.unkeep('SYS.STANDARD','P')

           

    3.DBMS_SHARED_POOL.SIZES 储过

        该过示在共享池中超指定大小的象,包括游以及匿名的PL/SQL(指定的大小的kbytes)

       

        PROCEDURE DBMS_SHARED_POOL.SIZES (minsize IN NUMBER);

        e.g.

            execute sys.dbms_shared_pool.sizes(70);

           

    4.ABORTED_REQUEST_THRESHOLD储过

            该过程可以定一个阙值尺寸,当该阙值定后,一大于该设象被装到共享池,在共享池有足的空

        置了Oracle动态清空未固定在存的象,可以避免该类事件的生。但是收到一个错误ORA-4031,而不会清空共享池

        该对出空

       

            该值5000 - 2147483647

       

            该阙值定可以避免由于共享池空间压力而致的系性能下降,但同时导致了ORA-4031错误的机率。DBA也可以根据ORA-4031

        错误来将特定的大值对象固定了保留池。

               

        PROCEDURE DBMS_SHARED_POOL.ABORTED_REQUEST_THRESHOLD (threshold_size IN NUMBER); 

       

            execute SYS.DBMS_SHARED_POOL.ABORTED_REQUEST_THRESHOLD(50000);

  • 1
  • 2
  • 3
  • 下一页

相关内容