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);
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)