Oracle数据库架构简单来说如下图:
1、客户端链接数据库实例有两种模式:一是独占模式及一个回话一个server process;二是共享及有中间代理层,相当于增加了一层代理分发。
2、以独占模式举例,一个客户端发起一条SQL,这个SQL由server process进程接受,server process 也有内存叫PGA,然后到SGA里面去找这条SQL是否有相同的,如果有,就用相同的SQL的执行计划,这个叫软解析。如果没有就需要经过解析、优化得到执行计划,这是比较耗时的,称为硬解析。解析完后需要查询数据,这时就到了database buffer cache里去找是否有数据,如果有就直接返回;如果没有就需要server process进程触发DBWR后台进程从磁盘里读数据块到database buffer cache里。如果SQL是delete、update、insert改变数据块了,这个时候会有日志,这个日志先是写到PGA里,然后再写到redo log cache里,由LGWR将redo log cache里的数据顺序写到redo log文件中(触发条件有commit、每3秒、redo log cache占了1/3以上、日志切换、DBWR刷脏块落盘时)