首先声明一下,我的
学习笔记参考书主要是官方教材,oracle9i database administration fundaments ed2.0
我觉得学习是一个循序渐进的过程,从面到点,从宏观到微观,逐步渗透,各个击破,对于
oracle,怎么样从宏观上来理解呢?
先来看一个图,这个图取自于上面提到的教材,这个图对于从整体上理解ORACLE的
体系结构组件,非常关键.
下面来解释下这个图.
对于一个
数据库系统来说,假设这个系统没有运行,我们所能看到的和这个数据库相关的无非就是几个基于操作系统的物理文件,这是从静态的角度来看,如果从动态的角度来看呢,也就是说这个数据库系统运行起来了,能够对外提供服务了,那就意外着数据库系统启动了自己的一个实例,综合以上2个角度,oracle如何定义上述描述呢?
我们来引入第一个
概念,oracle服务器,所谓oracle服务器是一个数据库管理系统,它包括一个oracle实例(动态)和一个oracle数据库(静态)。oracle实例是一个运行的概念(如操作系统的进程),提供了一种访问oracle数据库的方式,始终打开一个,并且只能打开一个oracle数据库,oracle实例有SGA和一些后台服务进程组成,在后台服务进程当中,DBWn PMON CKPT LGWR SMON是必备的后台进程,而ad queue,rac,shared
server,ad replication则是可选的,之所以可选,要们是因为离开它oracle也能正常运行,要么是一些高级的功能才可以用得到。
oracle数据库是一个被统一处理的的数据的集合,从物理角度来看包括三类文件数据文件,控制文件,重做日志文件。从逻辑角度来看,oracle数据库至少包含一个表空间,表空间至少包含一个段,段由区做成,区有块组成。需要注意的是表空间可以包含若干个数据文件,段可以跨同一个表空间的多个数据文件,区只能在同一个数据文件内。
oracle还设计了其他的关键文件用来为整个系统服务,如配置文件,密码文件,归档日志文件,还有还有用户进程和服务进程,现在可以简单理解下执行
sql语句就要用到这2个进程。
下表是SGA和PGA的总结
下表是后台进程总结
最后,举一个用户提交sql语句的的例子来结束本文,如果用户想提交sql语句,那么首先你必须要连接到oracle实例,连接到oracle实例有三种途径,1如果用户登陆到运行oracle实例的操作系统上,则通过进程间通信进行访问2C/S结构访问3三层结构 发起连接的应用程序或工具通常称为用户进程,连接发起后,oracle服务器就会创建一个进程来接受连接,这个进程就成为服务进程,服务器进程代表用户进程与oracle实例进行通信,在专用服务器连接模式下,用户进程和服务进程是1对1的关系,在共享服务器模式下,多个用户进程可能共享一个服务进程。 当服务器进程开始和oracle实例进行通信时,一个会话就被创建了。 显然处理一个查询要经过语法分析,绑定,执行,提取等阶段。