多选题 在以下的Oracle内存结构中,哪一个存储了最近执行过的SQL语句,以及最近访问过的数据定义?
A.PGA
B.共享池(shared pool)
C.重做日志缓冲区(redo log buffer)
D.数据库高速缓冲区(database buffer cache)

【正确答案】 B
【答案解析】[解析] 这一题是测试对共享池的理解程度。根据有关共享池的介绍,可知“服务器进程将SQL(也可能是PL/SQL)语句的正文和编译后的代码(parsed code)以及执行计划都放在共享池的库高速缓存中,而将数据文件、表、索引、列、用户和其他的数据对象的定义及权限的信息放入共享池的数据字典高速缓存”,所以只有选项B是正确的。
根据有关服务器进程的介绍,可知“PGA是一个私有的内存区,不能共享,且只属于一个进程。它随着进程的创建而被分配,随着进程的终止而被回收”,据此可以断定选项A肯定是错误的。
根据有关重做日志缓冲区的介绍,可知“Oracle在使用任何DML或DDL操作改变数据之前都将恢复所需的信息,在写数据库高速缓冲区之前,先写入重做日志缓冲区”,据此可以断定选项C肯定是错误的。
根据有关数据库高速缓冲区(database buffer cache)的介绍,可知“服务器进程将首先在数据库高速缓冲区中搜寻所需的数据,如果找到了就直接使用而不进行磁盘操作;如果没找到就将进行磁盘操作把数据文件中的数据读入到数据库高速缓冲区中”,据此可以断定选项D肯定也是错误的。