以上这个复杂的体系结构主要包括Oracle服务器(sever)(而服务器又由Oracle实例
(instance)和Oracle数据库(database)组成),还包括一些其他的关键文件、用户进程
和服务器进程。服务器中的一些结构并不在处理SQL语句时使用,它们是为了改进数据库
系统的效率或数据恢复等而设计的。
◆用户进程与服务器的连接方式
1) 基于主机的方式:通信通过OS内部进程通信(inter porcess communication, ICP)来完成.
2) 客户端-服务器(cilent-server)(两层模型)方式:通信通过网络协议(如TCP/IP)来完成.
3) 客户端-应用服务器-服务器(cilent-application server- server)(三层模型)
4) 多线程连接(MTS)/ 共享服务器连接(shared server)
● 用户进程通过以一一对应的服务器进程与服务器建立连接.
● 服务器进程拥有一个程序全局区(program global area, PGA), 属于服务器进程私有,生命周期与服务器进程相同。
◆Oracle实例(instance)
Oracle实例(instance)是一种数据库访问机制,它是由内存结构和一些后台进程组成的.
◆ Oracle执行SQL查询语句的步骤
● 编译(parse):在进行编译时,服务器进程会将SQL语句的正文放入共享池(shared pool)的库高速缓存(library cache)中并将完成以下处理:
〉首先在共享池中搜索是否有相同的SQL语句(正文),如果没有就进行后续的处理。
〉检查该SQL语句的语法是否正确。
〉通过查看数据字典来检查表和列的定义。
〉对所操作的对象加编译锁(parse locks)以便在编译语句期间这些对象的定义不能被改变。
〉检查所引用对象的用户权限。
〉生产执行该SQL语句所需要的优化的执行计划。
〉将 SQL语句和执行计划装入共享的SQL区。
以上的每一步操作是在处理正确时才进行后续的处理。如果不正确,就返回错误。
● 执行(execute):Oracle服务器进程开始执行SQL语句是因为它已获了执行SQL语句所需的全部资源和信息。
● 提取语句(fetch):Oracle服务器进程选择所需的数据行,并在需要时将其排序,最后将结果返回给用户(进程)。
执行其他SQL语句时返回执行成功或失败的信息。