多选题 如果一个服务器进程(server process)试图将一个缓冲区移到脏队列中而这个队列已经满了,将会发生什么?
A.产生一个错误
B.创建一个新的脏队列
C.Oracle将通知DBWn写盘
D.Oracle将通知LGWR移去脏队列的内容

【正确答案】 C
【答案解析】[解析] 这一题是测试对后台进程的理解程度。根据所列出的造成数据库写进程写盘的事件——当脏缓冲区的数量超过了所设定的限额,可以断定选项C是正确的。
因为根本就没有任何错误发生,所以选项A肯定是错误的。根据有关重做日志写进程及快速提交的介绍,可知重做日志写进程负责将重做日志缓冲区的记录顺序地写到重做日志文件中,因此LGWR不可能操作用来管理和维护DB Buffers的脏队列,所以选项D肯定也是错误的。
其实,只要认真考虑一下就可以看出选项B肯定是站不住脚的。因为每个连接到数据库服务器上的用户进程都在服务器上有一个对应的服务器进程,如果由服务器进程来创建脏队列的话,Oracle系统不知要复杂(甚至于混乱)到什么程度,所以Oracle这样稳定的系统根本不可能使用这样的策略来管理和维护脏队列的。