Welcome 微信登录

首页 / 数据库 / MySQL / 使用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_POOL上给TEST以EXECUTE权限,然后需要在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
  • 下一页
Oracle 用户对表空间配额quota说明ORA-00054 故障处理一例相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数