DBA必学:Oracle库缓存
2008-01-16 12:41:06 来源:WEB开发网如果想要成为更出色的数据库管理员并为终端客户群提供更好的服务,那么了解Oracle数据库内部的结构非常重要。Oracle数据库的库缓存就是数据库管理员需要深入了解的一个内部结构,通过深入学习,能够帮助您消除由应用软件用户引发的一些非常烦人的拒绝服务请求事件。
Oracle的库缓存不过是内存的一个区域,是共享池里的三个组分之一。库缓存由共享SQL工作区、PL/SQL包和过程、不同的锁和句柄组成。每当有应用程序要执行SQL或PL/SQL语句(统称代码)时,这些代码必须先暂存在Oracle的库缓存中。当应用程序运行和参考代码时,Oracle会先搜索库缓存看该代码是否已经存在内存中。如果代码已经写入内存里,Oracle就可以重新使用该已存代码(也称为软解析)。如果内存里找不到该代码,Oracle就必须将代码载入到内存中(也称为硬解析或库缓存不命中)。用来检查正在请求的代码是否确实和库缓存中已有的代码相匹配的标准很多,不过这些内容超出了本文的涵盖范围,有兴趣的读者可以自行查阅相关信息。只是要记住一点,系统给一个已配置的库缓存工作区分配了一定的内存量,也就是说在该区只能容纳与相同大小的代码量,当内存耗尽时,会自动从内存中删除掉一些不常用的旧代码,以便腾出一定空间来装载应用程序所需要的代码。这并不一定是件坏事,但我们必须要了解自己的库缓存容量大小,以及出现了多少次缓存不命中事件。如果硬解析出现的次数太多,我们可能需要增加分配给库缓存的内存容量。
为了检测和获悉自您最近一次启动Oracle数据库之后库缓存目前的性能情况,您可以使用下面的SQL语句进行查询。如果你正好遇上了性能问题,你应该会想看看该查询返回的相关结果信息。不管怎样,返回结果的每一行都代表了在库缓存中存放着的某种特定类型的代码(名字空间),以及这些代码的执行状况。
更多精彩
赞助商链接