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