与 Oracle DB 交互
以下的演示样例从最主要的层面描写叙述 Oracle DB 操作。该演示样例说明了一种 Oracle DB 配置,在该配置中,用户和关联server进程执行于通过网络连接的不同计算机上。
1. 在安装了 Oracle DB 的节点(通常称为“主机”或“数据库server”)上启动了一个实例。
2. 用户启动一个应用程序,该应用程序衍生了一个用户进程。该应用程序尝试建立一个与server的连接(此连接可能是本地连接、客户机/server连接或来自中间层的三层连接)。
3. server执行具有对应 Oracle Net Services 处理程序的监听程序。监听程序检測到应用程序发出的连接请求,并创建一个代表用户进程的专用server进程。
4. 用户执行一条 DML 类型的 SQL 语句并提交事务处理。比如,用户更改表中的客户地址并提交更改。
5. server进程接收该语句,并检查共享池(一个 SGA 组件)中是否有包括同样 SQL 语句的共享 SQL 区域。假设找到共享 SQL 区域,server进程将检查用户对于所请求数据的訪问权限,而且使用现有的共享 SQL 区域处理该语句。假设未找到共享 SQL 区域,则为该语句分配一个新的共享 SQL 区域,以便对该语句进行语法分析和处理。
6. server进程从实际数据文件(表)或数据库缓冲区快速缓存中存储的值中检索不论什么必需的数据值。
7. server进程改动 SGA 中的数据。由于提交了事务处理,所以日志写进程 (LGWR) 会马上将该事务处理记录到重做日志文件里。数据库写进程 (DBWn) 会待运行效率高时将改动后的块永久写入磁盘。
8. 假设事务处理成功,server进程将通过网络向应用程序发送一条消息。假设事务处理不成功,则传送一条错误消息。
9. 在整个过程中,其他后台进程同一时候在执行,用于监视是否有须要干预的情况。此外,数据库server管理其他用户的事务处理,并防止在请求同样数据的事务处理之间发生争用。