Oracle管理DBAI 第一章 ORACLE体系结构一.docx
《Oracle管理DBAI 第一章 ORACLE体系结构一.docx》由会员分享,可在线阅读,更多相关《Oracle管理DBAI 第一章 ORACLE体系结构一.docx(15页珍藏版)》请在冰豆网上搜索。
Oracle管理DBAI第一章ORACLE体系结构一
第一章Oracle的体系架构
这章理论比较多,可能有点枯燥。
大家要打起精神。
从本章开始我们正式进入DBAI,DBA是一个岗位的缩写(databaseadminstrator),也就是数据库管理员。
要做一个称职的DBA,需要全面和深入的了解ORACLE的内部机制,包括ORACLE的实例(内存结构和后台进程)、ORACLE物理结构、ORACLE逻辑结构、ORACLE的安装,ORACLE维护、ORACLE网络配置、ORACLE备份与恢复、ORACLE高可用性(DG,RAC,流,高级复制)、ORACLE性能优化。
另外还需要了解操作系统的维护和管理知识,存储知识,HA的知识等。
所以需要非常多的知识进行串联才能做一个合格的DBA。
这些理论基础上都是环环相扣,另外每个知识点还需要大量了实践,来提升DBA的解决问题的思维和能力。
接下来我们的课先从ORACLE的核心组件学习。
========
本章的主要内容
========
⊙描述Oracle服务器的体系结构及其主要组件
⊙列出将用户连接到Oracle例程所涉及的结构
⊙列出下列语句处理过程的各个阶段:
⊕查询
⊕DML语句
⊕COMMIT
ORACLE主要组件
========
我们先来学习ORACLE的主要组件,来看一下ORACLE组件架构图。
这是一张全景ORACLE核心组件框架图。
每个核心组件会有很多小的组件构成,我们的DBAI就是来全面介绍每个核心组件的细节。
了解每个组件里面的细节确实不容易,这也是我们走向DBA的重中之重。
ORACLE主要体系结构包括
⊙左上部分是用户进程,服务器进程
⊙右上部分是实例
⊙下面是数据库库文件
我们先脑子里有这么个概念,接下来会用一些生活化的故事来了解ORACLE机制,了解ORACLE为什么设计出这样一张图。
我们先来看什么是ORACLE服务
ORACLE服务
======
我们现在各行各业抓的都是服务,有了好的服务,顾客才会选择它的产品。
我们现在IT界非常流行一个SOA(面向服务的体系结构)的概念,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
上图是一个SOA的实用例子。
ORACLE也同样提供了一个服务,我们叫ORACLESERVER,我们来看下面这张图
图例2
⊙一个ORACLE服务提供了开放的完整性的信息管理系统。
⊙ORACLE服务由一个实例和一个数据库组成。
我们用一个生活中的例子来便于理解。
大家都去过图书馆,它存放的数据就是书,这书可以被学生借来看,或者被学生买来看,也可能是被采购员从外地采购来。
图书馆就是提供一个图书买卖和借阅的数据库系统。
但是我们知道大型图书馆一个城市就一个,学生们要想买书借书必须跑老远到图书馆去,那精明的商家都会在各自的街道开有分店。
比如我们所有的书籍都能在上海图书馆能买到,但是我们不用老远跑到上海图书馆去买,我可以在自己行政区的图书馆去买,比如静安区静安书城店。
我们可以在静安区开一家店叫静安书城店,那如果静安区的学生要买的书在静安书城店如果有了,那就会马上买到,因为学生离静安书城店可比在黄浦区的上海图书馆近。
如果该书在静安书城店已经售完,或在静安书城店从来没有进过这本书,那就需要去上海图书馆去进货。
书的买卖和借阅就好比DELETE,INSERT,SELECT。
那静安书城店会有各个岗位的人负责进货、销售、库存管理等工作,如何快速的进货也需要这个采购员采用不同的规则。
这个规则就好比我们的执行计划。
所以我们看到上海图书馆和静安书城店都是为学生服务的,这个就是SERVER(服务)。
我们这里看到上海图书馆就是我们的DATABASE库文件,静安书城店是我们的INSTANCE,它来有效的管理维持书籍的采购借阅和其它管理工作。
那我们的ORACLESERVER的概念是,一个ORACLESERVER就是一个DATABASE库文件加上一个INSTANCE,也就是上海图书馆的静安书城店提供的就是一个ORACLESERVER。
我们知道了什么是ORACLE服务,那我们了解下什么是ORALCE实例。
Oracle实例
======
图例3
我们现在就明白ORACLEINSTANCE是一个数据库库文件进行实例化提供的服务,而它也是我们体系结构的核心。
那实例它由什么组成呢?
实例的组成
=====
⊙一个实例只能访问一个数据库,但是你可以改变实例的初始化参数(如控制文件)来指向另一个数据库。
我们前面理解了静安书城店实例化一个上海图书馆,那也意味着我可以再开一个分店,如黄浦区黄浦书城店,录属于上海图书馆,那就是第二个ORACLE服务。
两个书城店关联同一个图书馆对外提供服务,这就是RAC的概念,多个实例关联一个数据库。
这时黄浦区的学生可以选择黄浦书城店,也可以选择静安书城店提供的服务,但是往往会选择离自己近的,而且顾客不拥挤的书店,否则买书交费都要排个长队。
ORACLE也会选择负载相对比较低的实例或者LISTENER,这叫负载均衡。
如果一个店拆了,还可以到另一个店买东西,这在ORACLE中称为FAILOVER。
⊙实例由内存和后台进程组成
那我们拿静安书城店来举例,店要开张,我们需要租房子,每间房子有它特定的功能,比如营业厅、仓库、总经理办公室,这些房子在ORACLE中称为内存。
有些房间也许是我们存放书籍的仓库,也许是记录采购员采购的历史信息的采购室。
那要筹备这个店所需要盘下或者购买的店面需要写在筹备方案中,这个筹备方案在ORACLE中称为初始化参数。
现在有了店,那店里是不是需要有不同岗位的管理人员来维持店的正常运转?
这些勤劳的管理人员在ORACLE中就称为后台进程。
包括干轻活的ckpt
干重活的dbwr
而采购员/售货员在ORACLE中就称为服务器进程,来服务于学生。
而学生在ORACLE中就称为客户端进程。
我们理解了上面的例子,现在来总结下。
我们知道ORACLESERVER是提供了数据库服务:
⊕ORACLESERVER=1个DB+1个INSTANCE
⊕INSTANCE=MEMORY+PROCESS
⊕RAC=N个ORACLESERVER=1个DB+N个INSTANCE
有了这些概念,我们就好理解什么是共享服务器进程,什么是SGA,什么是PGA,什么是UGA,什么是CGA,什么是CURSOR了。
用户连接请求
======
我们知道学生要想买书,就会去书店找营业员,或者打电话订购,需要沟通书店的客服中心。
当学生和营业员或者客服中心建立了连接,学生就可以提出自己想要做的事情,比如买某某书。
ORACLE实例给用户提供的服务也类似,用户进程发出请求,关联LISTENER再与服务器进程建立了连接,或者用户直接连接到服务器进程。
图例4
上图我们看到,用户会发出请求到指定的服务,这个用户我们叫userprocess,也叫clientprocess,是在客户端的。
用户请求指定了服务(instance),指定了监听地址,监听地址的端口上检查这个请求是否合法,是否属于我服务的INSTANCE范围内,如果合法,就在INSTANACE机器上建立服务器进程。
这就在userprocess和serverprocess间建立了连接会话,会话是服务器进程和客户进程间的。
这好比,小丽要去静安店买书,会有一个前台验证你是否可以到这个店买书,是否有小丽要找的静安书城店存在。
如果可以,而且书店确实存在,她会指派一个售货员来服务小丽。
这时候小丽和售货员就建立了会话。
这里详细的过程我们将在DBAII网络部分介绍。
接下来售货员会帮小丽去静安店拿货(内存),如果货没有,就去上海图书馆进货。
小丽和售货员分别就是用户进程和服务器进程。
而那个前台在ORACLE中称为监听程序。
OracleDB的组成
========
我们接下来该了解最关心的业务数据存放的地方,那就是DB库文件
图例5
我们看到DB是一组不同类型的文件集合
它由三类文件组成
⊙第一类是文本离线文件,如上图左边的参数文件、口令文件(spfile是服务端的)
⊙第二类也是离线文件,上图右边归档文件
⊙第三类是我们最关心的文件,DB在线文件,它按功能分如下几种
⊕DATAFILE
⊕CONTROLFILE
⊕REDOFILE
这三种文件组成了DB在线文件
这里涉及到DB的物理结构和逻辑结构,我们在后面的课中会学习。
Oracle物理结构
=======
接下来学习ORACLE的物理结构,这里只是学习一些框架的知识,详细知识将在后面章节介绍。
图例6
ORACLE的物理结构指的是OS里直接能查看到的文件,可以是文件系统,可以是裸设备。
但文件里的内部逻辑数据,只有ORACLE的命令才能查阅和修改。
文件里的内部逻辑数据,只有ORACLE的命令才能查阅和修改。
这句话我们应该怎么理解?
比如一个txt文件,是不是一个OS级别的文件?
我们可以用notpad(windows系统)命令或者vi(Linux系统)命令查询编辑内容。
Pfile是不是一样?
但是Spfile,tablespace(XXX.dbf)的数据文件呢?
Spfile大家是不能通过OS直接编辑的,spfile里的东东都是二进制的。
同样,tablespace的数据文件我们通过OS命令也是看不出任何内容的,你用OS命令打开全是二进制乱码,没法看懂。
那tablespace里的数据怎么看?
你只有登陆oracle后用select命令查看或用insert插入。
表就是种逻辑结构。
文件里的内部逻辑数据,只有ORACLE的命令才能查阅和修改。
就是这个意思。
大家理解了吧?
我们看到3组文件类型,他们的文件头都有一些描述信息、状态信息、一致性信息和控制信息。
这对备份和恢复及一致性事务操作至关重要。
大家知道SCN吗?
SCN就是上面信息里的一部分,属于一致性信息。
这些文件可以存储在本机磁盘(非RAC),也可以存储在磁盘柜,甚至是共享存储系统支持(RAC),称为concurrent设备。
好,我们小结下。
ORACLE的物理结构讲的是什么概念?
就是从OS角度看到的数据库组成文件。
Oracle内存结构
=======
那ORACLE服务中的另一块核心就是实例,而谈到实例就先要谈到内存。
也就是你要为静安区学生提供图书服务而要开一家静安书店,你必须选好地址,把店的门面租下来,这店的门面就是内存。
我们这章先不涉及怎么租这个门面,而是要了解要开这家店至少要租下几个门面来完成各自的只能,而每个门面各自又有什么功能呢?
好,我们看一下内存结构
图例7
内存的组成
=====
内存由SGA和PGA组成,分别代表系统全局区和进程全局区。
S可以理解成SYSTEM,也可以理解成SHARE。
P可以理解成PROCESS,PRIVATE。
所以S是共享的,P是私有的
每个实例只有一个SGA,生命周期是实例,实例停止,SGA消亡。
什么是实例?
才讲了的。
实例=ORACLE主内存结构(SGA)+后台进程
而整个实例有很多PGA,对应的是进程,一个进程一个PGA,生命周期是进程。
进程结束,则PGA消亡。
我们的一个SQLPLUS会话是不是一个进程?
是的
你连了100个SQLPLUS,就出现了100个PGA,但是SGA就一个。
可以在参数文件里设置process=XXX来限制PGA的数量,其实就是进程的数量。
默认是150个进程。
⊙SGA:
系统全局区,用于存储数据库信息的内存区,该信息为数据库所有进程所共享。
它包含oracle服务器的数据和控制信息。
⊙PGA:
程序全局区,包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正好相反,PGA只被一个进程使用,在进程创建时分配,进程终止时回收。
也就是说小丽提出请求,要买2009-3-1号后出版的经济类书。
监听审核合法后,分配了一个售货员来她它办理此事。
这个售货员就是一个服务器进程,而小丽和售货员建立的就是SESSION。
基于利益的目的,那其它售货员是不允许知道服务于小丽的这个售货员的信息及小丽这次买书的信息,比如小丽的名字、提出了什么任务、什么时候提出的。
怕他们撬客户。
所以服务器进程是私有的,而小丽这次活动的信息我们称会话信息,在ORACLE中称为UGA。
UGA=UserGlobalArea
第一章 体系结构
(一)完