数据库

 首页 > 数据库 > Oracle > Oracle共享池简析

Oracle共享池简析

分享到:
【字体:
导读:
         摘要:Oracle共享池Oracle共享池(SharePool)属于SGA,由库高速缓存(librarycache)和数据字典高速缓存(datadictionarycache)组成。库高速缓存www.2cto.comOracle引入库高速缓存的目的是共享SQL和PL/S... Synta...

Oracle共享池简析

Oracle共享池
Oracle共享池(Share Pool)属于SGA,由库高速缓存(library cache)和数据字
典高速缓存(data dictionary cache)组成。
库高速缓存  www.2cto.com  
Oracle引入库高速缓存的目的是共享SQL和PL/SQL代码。
 
服务器进程执行SQL和PL/SQL时,首先会进入库高速缓存查找是否有相同的SQL,
如果有,就不再进行后续的编译处理,直接使用已经编译的SQL和执行计划。
 
Oracle通过比较两条SQL语句的正文来确定两条SQL是否相同,所以如果想共享SQL语句,
必须使用绑定变量的方式。如:
select * from emp where sal > 100和select * from emp where sal > 101是不同的,
而使用绑定变量时,即使v_sal的值不同,Oracle认为select * from emp where sal > &v_sal也是相同的。
 
Oracle使用LRU队列和算法来管理库高速缓存,最近使用过的SQL会放在队首,长时间没有使用的SQL放在队尾,当库高速缓存需要内存空间而又没有空闲的内存空间时,队尾内存中的SQL会被清除,放入最新的SQL,并且队首会指向次段内存。
 
Oracle没有提供直接修改库高速缓存大小的方法,只能通过修改共享池的大小来间接修改库高速缓存的大小。
  www.2cto.com  
数据字典高速缓存
当Oracle执行SQL时,会将相关的数据文件、表、索引、列、用户、其他的数据对象的定义和权限信息存放到数据字典高速缓存中。在此之后,如果需要相同的相关数据,Oracle会从数据字典高速缓存中提取。
 
Oracle没有提供直接修改 数据字典高速缓存大小的方法,只能通过修改共享池的大小来间接修改 数据字典高速缓存的大小。
 
修改共享池的大小
1
alter system set shared_pool_size = XXXM
共享池的大小受限制于SGA_MAX_SIZE参数的大小。
 
 
 
作者 LiJIaming
Oracle共享池简析
分享到:
ORA-01031:权限不足的问题
ORA-01031:权限不足的问题 ORA-01031:权限不足的问题   在建立的新用户调用存储过程时,报错:ORA-01031: 权限不足。   grant connect,resource,dba to nim;   赋权DBA之后,还有这个错误。   执行  www.2cto.com     grant all privileges  TO nim   赋予任何主机访问数据的权限,问题得到了解决。       作...
关于多层级数据汇总的问题
关于多层级数据汇总的问题     解决方案:   create table t_20120512_a ( id varchar2(6) primary key, cost number(3),  www.2cto.com   p2 number(3), p3 number(3) ) / create table t_20120512_b ( id varchar2(6) primary key, name varchar2(50), b varchar2(100) ) / insert into t_20120512_a values (&#039...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……