从今天起准备系统的开始学习Oracle,除了为了应对工作上的迫切需要,也是希望能好好的了解Oracle数据库这个博大精深的东东.
现在想来,以前我对Oracle的应用也就不过是写写SQL语句,或者在Java中利用JDBC或者其他封装的数据库访问库调用别人写好的存储过程,实在是肤浅的要紧.
Ok,进入正题吧.
今天我从Oracle的体系结构入手看看Oracle的整个组成,这是目前在网上能找到的关于对Oracle数据库体系结构描述的比较好的一幅图了,它出自于<<Oracle9i Database Administration Fundamentals I>>:
从这幅图中,我们可以大致看出Oracle数据库各个组件之间的交互关系,下面我们就该体系结构中最主要的组件和一些概念进行一些讲解。
什么是Oracle Server?
Oracle Server 是一个比较大的概念,是就指用来进行信息管理的数据库管理系统。<<Fundamentals I>>中的给了他一个很正式的定义:a database management system that provides an open,comprehensive, integrated
approach to information management.而一个Oracle Server又由两部分组成:Oracle Instance and Oracle Database.
什么是Oracle Database?
Oracle Database从物理上讲,其实就是一堆数据文件集合,它包含了三种文件类型:
(1)Data Files 包含了数据库中实际的数据.
(2)Online Redo Log Files:在线重做日志记录了数据库数据的改变,能够用来恢复数据.
(3)Control Files:控制文件包含了维持和验证数据库完整性的信息.
其他的重要的文件(但他们并不作为Oracle Database一部分)还有:
(1)Parameter File:记录了数据库的一些参数信息,如启动参数,SGA大小
(2)Password File
(3)Archived Redo Log Files:在线重做日志大小毕竟是有限的,当都写满了的时候,就面临着2个选择,第一个就是把以前在线重做日志从头擦除开始继续写,第二种就是把以前的在线重做日志先进行备份,然后对被备份的日志擦除开始写新的在线Redo File。这种备份的在线重做日志就是归档日志(Archived Redo Log Files).
如图:
什么是Oracle Instance?
Oracle Instance是访问Oracle Database的一种方式。Instance 和Database的关系是多对一的,一个Instance只能访问一个Database,而一个Database可以为多个Instance访问如Oracle RAC.
Instance是由SGA内存和后台进程(Backgroud Process)构成,如下图:
从图"Overiew of Primary Components"中和Instance结构图中,我们可以看到有三种进程User Process,Server Process和Background Process,这三种进程到底有什么区别呢,我在下一篇文章中再好好研究.