预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

概要在本章里你可以了解以下内容1、ORACLE实例——包括内存结构与后台进程2、ORACLE数据库——物理操作系统文件的集合3、了解内存结构的组成4、了解后台进程的作用5、了解数据库的物理文件6、解释各种逻辑结构一、ORACLE事例1、ORACLE实例SystemGlobalArea(SGA)和BackgroundProcess被成为数据库的实例。2、ORACLE数据库一系列物理文件的集合(数据文件控制文件联机日志参数文件等)3、系统全局共享区SystemGlobalArea(SGA)SystemGlobalArea是一块巨大的共享内存区域他被看做是Oracle数据库的一个大缓冲池这里的数据可以被ORACLE的各个进程共用。其大小可以通过如下语句查看:SQL>select*fromv$sga;NAMEVALUE-----------------------------FixedSize39816VariableSize259812784DatabaseBuffers1.049E+09RedoBuffers327680更详细的信息可以参考V$sgastat、V$buffer_pool主要包括以下几个部分:a、共享池(Sharedpool)共享池是SGA中最关键的内存片段特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能使系统停止太大的共享池也会有同样的效果将会消耗大量的CPU来管理这个共享池。不正确的使用共享池只会带来灾难。共享池主要又可以分为以下两个部分:·SQL语句缓冲(LibraryCache)当一个用户提交一个SQL语句Oracle会将这句SQL进行分析(parse)这个过程类似于编译会耗费相对较多的时间。在分析完这个SQLOracle会把他的分析结果给保存在Sharedpool的LibraryCache中当数据库第二次执行该SQL时Oracle自动跳过这个分析过程从而减少了系统运行的时间。这也是为什么第一次运行的SQL比第二次运行的SQL要慢一点的原因。下面举例说明parse的时间SQL>selectcount(*)fromscpass;COUNT(*)----------243Elapsed:00:00:00.08这是在Share_pool和Databuffer都没有数据缓冲区的情况下所用的时间SQL>altersystemflushSHARED_POOL;Systemaltered.清空Share_pool保留DatabufferSQL>selectcount(*)fromscpass;COUNT(*)----------243Elapsed:00:00:00.02SQL>selectcount(*)fromscpass;COUNT(*)----------243Elapsed:00:00:00.00从两句SQL的时间差上可以看出该SQL的Parse时间约为00:00:00.02对于保存在共享池中的SQL语句可以从V$Sqltext、v$Sqlarea中查询到对于编程者来说要尽量提高语句的重用率减少语句的分析时间。一个设计的差的应用程序可以毁掉整个数据库的Sharepool提高SQL语句的重用率必须先养成良好的变成习惯尽量使用Bind变量。·数据字典缓冲区(DataDictionaryCache)显而易见数据字典缓冲区是ORACLE特地为数据字典准备的一块缓冲池供ORACLE内部使用没有什么可以说的。b、块缓冲区高速缓存(DatabaseBufferCache)这些缓冲是对应所有数据文件中的一些被使用到的数据块。让他们能够在内存中进行操作。在这个级别里没有系统文件户数据文件临时数据文件回滚段文件之分。也就是任何文件的数据块都有可能被缓冲。数据库的任何修改都在该缓冲里完成并由DBWR进程将修改后的数据写入磁盘。这个缓冲区的块基本上在两个不同的列表中管理。一个是块的“脏”表(DirtyList)需要用数据库块的书写器(DBWR)来写入另外一个是不脏的块的列表(FreeList)一般的情况下是使用最近最少使用(LeastRecentlyUsedLRU)算法来管理。块缓冲区高速缓存又可以细分为以下三个部分(DefaultpoolKeeppoolRecyclepool)。如果不是人为设置初始化参数(Init.ora)ORACLE将默认为Defaultpool。由于操作系统寻址能力的限制不通过特殊设置在32位的系统上块缓冲区高速缓存最大可以