Oracle实例和Oracle数据库详解-入门底子[Oracle防范]
本文“Oracle实例和Oracle数据库详解-入门底子[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、ORACLE实例
1、ORACLE 实例——包含内存构造与后台进程
System Global Area(SGA) 和 Background Process 称为数据库的实例.
2、ORACLE 数据库——物理操作系统文件的调集
一系列物理文件的调集(数据文件,掌握文件,联机日记,参数文件等)
3、系统全局同享区System Global Area(SGA)
System Global Area 是一块宏大的同享内存区域,他被看做是Oracle 数据库的一个大缓冲池,这里的数据可以被ORACLE的各个进程共用.其大小可以通过以下语句查看:
SQL> select * from v$sga;
NAME VALUE
-------------------- ---------
Fixed Size 39816
Variable Size 259812784
Database Buffers 1.049E+09
Redo Buffers 327680
更具体的信息可以参考V$sgastat、V$buffer_pool
主要包含以下几个部份:
a、 同享池(Shared pool)
同享池是SGA中最关键的内存片段,分外是在性能和可伸缩性上.一个太小的同享池会扼杀性能,使系统终止,太大的同享池也会有一样的效果,将会损耗大量的CPU来管理这个同享池.不精确的利用同享池只会带来灾难.同享池主要又可以分为以下两个部份:
SQL语句缓冲(Library Cache)
当一个用户提交一个SQL语句,Oracle会将这句SQL举行解析(parse),这个历程近似于编译,会耗费相对较多的时间.在解析完这个SQL,Oracle会把他的解析后果给保存在Shared pool的Library Cache中,当数据库第二次履行该SQL时,Oracle自动跳过这个解析历程,从而削减了系统运行的时间.这也是为什么第一次运行的SQL 比第二次运行的SQL要慢一点的缘由.
下面举例阐明parse的时间
SQL> select count(*) fromscpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.08
这是在Share_pool 和Data buffer 都没有数据缓冲区的情形下所用的时间
SQL> alter system flush SHARED_POOL;
System altered.
清空Share_pool,保存Data buffer
SQL> select count(*) from scpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.02
SQL> select count(*) from scpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.00
从两句SQL 的时间差上可以看出该SQL 的Parse 时间约为00:00:00.02
关于保存在同享池中的SQL语句,可以从V$Sqltext、v$Sqlarea中查询到,关于编程者来说,要尽大概提高语句的重用率,削减语句的解析时间.一个计划的差的利用程序可以毁掉整个数据库的Share pool,提高SQL语句的重用率必须先养成杰出的变成习惯,尽大概利用Bind变量.
数据字典缓冲区(Data Dictionary Cache)
显而易见,数据字典缓冲区是ORACLE特地为数据字典预备的一块缓冲池,供ORACLE内部利用,没有什么可以说的.
以上是“Oracle实例和Oracle数据库详解-入门底子[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |