Oracle数据库发展到今天,其网络结构的发展经历了三个过程: 24. 单层结构
单层结构是指一个数据库服务器连接多个终端设备。比如,飞机的订票系统。单层结构的特点是多个终端直接串行的连接到Oracle数据库,所有的数据处理都发生在大型机上。其结构如图1.6所示:
数据库服务器 终端1 终端2 图1.6单层结构
终端3 25. 客户机/服务器结构
客户机/服务器(Client/Server,简写为C/S)结构是双层结构,其结构如图1.7所示。基于C/S模式的网络数据库,需要在客户机上安装具体的应用程序,以通过后台数据库服务来操作数据库中的数据。该模式的优点是速度快缺点是维护升级不方便,主要应用于行业数据库系统,如证券管理、库存管理等。
数据库服务器 客户机1 图1.7 C/S结构
客户机2 客户机3 26. 浏览器/服务器结构
浏览器/服务器(Browser/Server,简写为B/S)结构是3层结构,3层结构是在双层结构之后发展起来的一种结构。它在客户机和数据库服务器之间引进了中间件,如Web服务器。3层结构能适应大规模的网络。客户机通过浏览器去访问数据库服务器,不需要安装具体的应用程序。其结构如图1.8所示。
第 13 页 共 22 页
数据库服务器 Web服务器 客户机1 客户机2 图1.8 B/S结构
客户机3 该模式的特点是客户机不需要升级,也不需要进行用户培训,主要应用于电子商务等领域。
1.4.2 存储结构
27. 物理存储结构
物理存储结构是现实的数据存储单元,对应于操作系统文件。Oracle数据库管理系统主要由以下文件组成:数据文件、控制文件和日志文件、初始化参数文件等。
(1)数据文件(Data File)
数据文件用于存储数据库数据,包括用户数据(表、索引等),系统数据(数据字典)、Undo数据等。Oracle在安装过程中自动建立多个必要的数据文件。
此外在创建表空间时,Oracle会同时为该表空间创建第一个数据文件。一个表空间在物理上对应若干个数据文件,而一个数据文件只能属于一个表空间。
(2)控制文件(Control File)
控制文件是一个很小的二进制文件,用于记录和维护数据库的物理结构。
控制文件是数据库中关键性文件,它对数据库的启动和正常运行都是至关重要的,因为它存储了在其它地方无法获得的关键信息,这些信息包括:数据库名称;数据文件和重做日志文件的名称、位置和大小;发生磁盘故障或用户错误时,用于恢复数据库的信息。
Oracle 10g默认包含3个控制文件,每个控制文件记录有相同的信息,在数据库运行中如果某个控制文件出错时,Oracle会自动使用另外一个控制文件,当所有的控制文件都损坏时系统将不能工作。
(3)重做日志文件(Redo Log File)
重做日志文件用于记录数据库变化,如果用户对数据的操作出现了故障,而修改的数据没有保存到数据文件中,可以利用日志文件找回丢失的数据信息。
当用户对数据库进行修改时,Oracle实际上是先在内存中进行修改,过一段时间后,再集中将内存中的修改结果成批的写入数据文件中。但是在写入过程中如果发生故障,可能导致数据库的崩溃,那么如何解决这个问题呢?可以先把修改的结果保存起来,发生故障后可以重现当时的操作。Oracle就是用重做日志文件保存这些结果的。
除了上述三种文件以外,Oracle还有另外一些重要的文件:
第 14 页 共 22 页
参数文件:用于存储SGA、可选的Oracle特性和后台进程的配置参数,是一个可以编辑的文本文件。它是在数据库实例启动时被访问,从而得到数据文件、控制文件和日志文件等的路径。
口令文件:是一个二进制文件,用于验收特权用户。
归档日志文件:非活动的重做日志文件的备份,用来保留所有的重做历史记录。 28. 逻辑存储结构
逻辑存储结构是从逻辑的角度分析数据库的构成,即创建数据库后形成的逻辑概念之间的关系。Oracle在逻辑上将保存的数据划分为一个个小单元进行存储和管理。逻辑存储结构包括表空间、段、区、数据块。他们之间的关系是:多个数据块组成区,多个区组成段,多个段组成表空间,多个表空间组成逻辑数据库。
(1)数据块
块是Oracle用来管理存储空间的最基本单元,也是最小的逻辑存储单元,数据块的大小由初始化参数DB_BLOCK_SIZE确定。数据库进行读写操作时都是以块为单位进行的,在数据块中可以存储各种类型的数据,如表数据、索引数据和簇数据等。
(2)区间
区间是由一系列物理上连续的数据块组成的存储结构。在创建表时,Oracle将为表创建一个数据段,并为数据段分配一个初始区间。当向表中添加数据时,初始区中的块将逐渐被写满,写满后,Oracle将为数据段再分配一个新的区间。
(3)段
段是表空间中指定类型的逻辑结构,由一个或多个区间组成。一个单独的表可以是一个段。按照段中存储数据的特征,可以将段分为5种类型:数据段、索引段、回退段、LOB段和临时段。
(4)表空间
表空间是在Oracle中用户可以使用的最大的逻辑存储结构,数据库中的所有内容都被存储在表空间中。表空间在物理上与数据文件对应,每一个表空间由一个或多个数据文件组成。数据库管理员可以创建多个表空间,也可以为表空间添加或删除数据文件。Oracle 10g默认创建以下主要表空间:系统表空间、Sysaux表空间、Undo表空间、Users表空间等。
1.4.3 软件结构
29. 内存结构
内存是用来保存指令代码和缓存数据的。例如要运行一个软件程序,需要先再缓存中划分出一个区域,然后将程序放入内存,才能执行。
Oracle内存结构包括两类,系统全局区(System Global Area)和程序全局区(Program Global Area)。
SGA是用于存储数据库信息的内存区,该信息为数据库进程所共享,同时包含Oracle服务器的数据和控制信息。在SGA中含有以下组件。
(1)数据高速缓冲区
在数据高速缓冲区中存放着Oracle系统最近使用过的数据块(Oracle数据库中的最小存储和处理单位)。当被访问的数据在磁盘的数据文件中存放时,Oracle系统将先读取文件,
第 15 页 共 22 页
将其放入数据高速缓冲区中,再对数据进行处理;如果数据已经在高速缓冲区中,Oracle系统可以直接使用。由于内存的速度比硬盘快得多,所以这种机制可以提高数据库的整体效率。
数据高速缓冲区包括三个类型。脏缓存块,空闲缓存块和命中缓存块。 (2)重做日志缓冲区(Rado Log Buffer)
当执行一些语句对表进行修改时或创建方案时,Oracle系统都会为这些操作生成重做记录。重做日志缓冲区就是用于存放这些记录的。
(3)共享池(Shared Pool)
共享池是SGA保留的区,用于存储如SQL、 PL/SQL存储过程及包、数据字典、锁、 字符集信息和安全属性等。共享池包含有库缓存(Libaray Cache)和数据字典缓存(Dictionary Cache)。
(4)大池(Larege Pool)
大池用于为需要占用大内存的操作(数据库的备份和恢复,具有大量排序操作的SQl语句)提供相对独立的内存空间,以便提高这些操作的性能。大池时可选的内存结构,DBA可以根据需要决定是否在SGA中创建大池。
PGA区是在用户进程连接到数据,并创建一个对应的会话时,由Oracle为服务进程分配的,专门用于当前用户会话的内存区。按照存放信息的类型不同,PGA可以分为排序区、会话区、游标区和堆栈区。
30. 进程
进程是操作系统中的一个概念,是一个可以独立调度的活动,用于完成指定的任务。Oracle中有两类进程,分别是用户进程和Oracle进程。其中Oracle进程有分为服务器进程(Server Processes)和后台进程(Background Processes)。
(1)用户进程
当用户执行一个基于Oracle数据库的应用程序时,就会创建一个客户端的Oracle用户进程,以便执行相应的任务,如用户和数据库之间的连接和会话。
(2)服务进程
Oracle服务器进程是处理用户与实例连接的事务。用户必须通过服务进程才能访问数据库。它的主要任务如下。
● 解析和执行用户所提交的SQL语句。
● 从数据文件读必要的数据到SGA区的共享数据区。 ● 将查询或执行后形成的数据返回给用户。 (3)后台进程
服务进程是由后台进程提供支持的。在同一时刻Oracle可以处理上百个并发的请求。Oracle数据库将这个复杂的任务进行了划分,分别由几个相互独立的的后台进程来完成。
● 数据库写进程(DBWR):
数据库写进程(Darabase Writer)的主要任务是将修改后的数据块写回数据库文件中。 ● 检查点进程(CKPT):
在系统运行中当出现查找数据请求时,系统从数据库中找出这些数据并存入内存区,这
第 16 页 共 22 页
相关推荐: