2012年1月10日 星期二(oracle读书笔记,体系架构和存储结构)

本文详细介绍了Oracle数据库的工作原理,包括数据库处理过程、体系结构及存储结构。解释了Oracle数据库的逻辑与物理存储结构,如表空间、段、区、块等概念,并探讨了控制文件、数据文件和重做日志文件的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.       Oracle数据库工作原理:包括数据库系统处理过程和体系结构两个方面

2.       数据库系统处理过程的步骤为:

1)       用户在其计算机上运行oracle应用程序,也就是启动用户进程

2)       在客户机和服务器之间建立连接

3)       服务器上为客户建立会话(session),并为该会话创建一个pga区,以存储与该会话相关的信息。

4)       启动服务进程,由该服务进程负责执行该会话的各项任务

5)       用户进程发送sql语句

6)       服务器进程解析、编译、执行sql语句,然后将结果写入数据库并返回给用户进程

7)       用户进程接收返回的SQL执行结果,继而在应用程序中显示SQL执行结果。

3.       Oracle总体结构分为三大部分,如图:

4.       Oracle数据库存储结构,以及这两种存储结构之间的关系,如图:

5.       Oracle数据库逻辑存储结构数据库、表空间、方案对象之间的关系。

6.       Oracle表空间分为系统表空间和非系统表空间,系统表空间包括:system表空间和sysaux表空间,其余的都是非系统表空间。

1)       System表空间存放信息如下:表空间名称、控制文件、数据字典、数据文件等管理信息。方案对象(如表、索引、同义词、序列)的定义信息。所有PL/SQL程序的源代码和解析代码,包括存储过程、函数、包;还包括system撤销段。

2)       Sysaux表空间用来存储与oracle供给特性有关的方案对象,比如空间数据选项、XMLDB或intermedia,还被用于减少系统表空间的负荷,提高系统的作业效率。

7.       段用于存储表空间中某一种特定的具有独立存储结构的对象的所有数据,它由一个或多个区组成。段按照存储数据的类型和特征不同,可以分为以下几列:

8.       数据段存储表中的所有数据。当某个用户创建表时,就会在该用户的默认表空间中为该表分配一个与表名相同的数据段,以便将来存储该表的所有数据。如果创建的是分区表,则为每个分区分配一个数据段。数据段随着数据的增加而逐渐变大,段的增大过程是同过增加区的个数而实现的。每次增加一个区,每个区的个数是块的整数倍。

查询当前用户使用的数据段存储在哪个表空间、有多大、有几个区,可用如下语句:

Select segment_name,tablespace_name,bytes,blocks from user_extents;

9.       索引段用于存储索引的所有数据。当用户用create index语句创建索引,或在定义约束而自动创建索引时,就会在该用户默认表空间中为该索引分配一个与索引名相同的索引段,以便将来存储该索引的所有数据。如果创建的是分区索引,则会在每个分区创建一个索引段。查询当前使用的索引信息:

Select  index_name,table_owner,table_name,tablespace_name from user_indexes;

10.   临时段存储排序操作所产生的临时数据。当用户使用order by语句进行排序或汇总时,在该用户的临时表空间中自动创建一个临时段,排序结束,临时段自动消除。在oracle中,临时表空间一般通用,所有用户的默认临时表空间都是temp表空间。当然,可以在创建用户时,或创建用户后,指定临时表空间。

注意:由于在创建临时段时存在空间的分配、回收、再分配的特点,容易造成不连续的磁盘碎片。为了优化系统性能,oracle建议使用专用的临时表空间作为用户的临时表空间。

11.   回退段存储数据修改之前的位置和值。利用这些信息,可以回退未提交的事务,维护数据库的读一致性,并能从例程的崩溃中进行恢复。但是回退段是一项十分复杂的技术,面临淘汰,oracle提供了自动撤销管理功能代替了回退段功能。检查是否使用了自动撤销管理功能,使用下面的语句:

Select value from v$prameter where name = ‘undo_management’;

12.   区是由物理上连续存放的块构成的。区是oracle存储分配的最小单位,由一个块或多个块组成区,由一个区或多个区组成段。

当在数据库中创建带有实际存储结构的方案对象(如表、索引、簇),oracle将为该方案对象分配若干个区,以便组成一个对应的段来为该方案对象提供初始的存储空间。当段中分配的区都写满之后,oracle就为该段分配一个新的区,以便容纳更多的数据。

可以通过在create table语句下storage子句中的设置的3个参数来指定这个表的数据段的存储区的大小,以及第一个后续区大小和后续区增加的比例

Storage(initial 128k

Next 40k

Pctincrease 50)含义是初始区大小为128k,用满之后,第二个区是40k,再用满之后,第三个区是(128+40*50%)=148k。计算公式和图例表示:

13.   块是最小的数据管理单位(注意,区是最小的数据存储分配单位)。相对应的,操作系统执行输入输出操作的最小单位是操作系统块。Oracle块的大小是操作系统块大小的整数倍。以Windows 2000为例,操作系统块的大小是4KB,所以oracle块的大小可以是4kb,8kb,16kb等。

如果块的大小是4KB,emp表每行数据占100个字节,如果某个查询语句就返回一行数据,那么在将数据读入到数据高速缓存时,读取的数据量是4kb而不是100个字节。

14.   Oracle数据库物理存储结构包括:控制文件、数据文件、重做日志文件。跟oracle数据库有关,但不属于oracle数据库的附件文件包括有密码文件(pwd.ora)、参数文件(spfile.ora)和归档重做日志文件。

15.   控制文件是一个很小的(通常是数据库中最小的)文件,大小一般在1MB到5MB之间,是一个二进制文件。作为数据库是否能够成功启动和正常运行的关键文件,控制文件存储了在其他地方都无法获得的关键信息:

数据库名称;

数据文件和重做日志文件的名称、位置和大小;

发生磁盘故障和用户错误时,用于恢复数据库信息;

注意:每个数据库必须有,而且只需要有一个控制文件。

16.   在装载(mount)数据库的时候,oracle会读取控制文件的信息,以便判断数据库的状态,获得数据库的屋里结构的信息以及物理文件的使用权,因此只有控制文件是正常的,才能装载、打开数据库。

在数据库运行过程中,每当出现数据库检查点(checkpoint)或修改数据库结构之后,oracle本身就修改控制文件文件内容。

疑问:为了保证数据库安全可以创建多个数据库控制文件,并放置到不同磁盘上,互为镜像复用,以便某个控制文件损坏之后,还可以利用其他控制文件进行工作。

在oracle 10g 安装完成之后会自动创建3个控制文件:

17.   数据文件是实际存储插入到数据库表中的实际数据的操作系统文件。数据文件的大小与他们所存储的数据量的大小直接相关,会自动增大。(但是即便执行删除命令,删除数据后,数据文件也不会变小)。

一个表空间对应若干个数据文件,一个数据文件只能对应一个表空间。

在创建表空间的时候,oracle会同时为该表空间创建第一个数据文件。如果这个数据文件很大,这个创建过程会用较长的时间。新创建的数据文件不包含任何数据,只是一个准备存储数据的空容器。

除system表空间之外,任何表空间都可以由联机状态切换为脱机状态。当表空间进入脱机状态之后,组成该表空间的数据文件也就进入脱机状态了。也可以将表空间中某一个数据文件单独设置为脱机状态,以便进行数据库的备份和恢复。

在oracle 10g安装完毕之后,自动创建的6个表空间都有其相对应的数据文件,如下所示:

18.   重做日志文件,当用户对数据库进行修改时,oracle实际上现在内存中进行修改,过一段时间后,在集中将内存中修改结果成批的写入到数据库的数据文件中。如果在将内存中的修改结果写入数据文件之前发生故障,导致计算机数据库崩溃,那么这些修改结果就丢失。

为了防止这种失误出现,oracle会在将结果写入数据库文件之前,分几次将修改结果写入重做日志文件,这样即使发生故障导致数据库崩溃,oracle也可以利用重做日志文件信息来恢复丢失的数据,只要某项操作的重做信息没有丢失,就可以利用重做信息来重现该操作。

每个数据库至少需要两个重做日志文件,因为oracle是以循环方式来利用重做日志文件的,当第一个重做日志文件被写满之后,后台进程LGWR(日志写进程)开始写入第2个重做日志文件,当第2个重做日志文件被写满之后,又开始写入第一个重做日志文件。在安装完成oracle 10g数据库之后,自动创建3个重做日志文件,如下图:

19.   除了上述的控制文件、数据文件、重做日志文件之外,oracle还包括其他一些文件:参数文件、口令文件、归档日志文件、后台进程跟踪文件等等。

1)  疑问:(有点看不懂)参数文件(parameter file)

参数文件也被称为初始化参数文件,用于存储SGA、可选的oracle特性和后台进程的配置参数;参数文件分为文本参数文件(pfile)和服务器参数文件(spfile),可以使用其中之一来配置例程和数据选项。文本参数文件可以使用文本编辑器来编辑。服务器文件是二进制文件,不能直接用文本编辑器来编辑。

参数文件类似Microsoft dos系统的autoexce.bat和config.sys文件。当数据库启动,并在创建例程或读取控制文件之前,会先读取参数文件,并按其中的参数进行例程的配置。

参数文件的名称中都带有相应的oracle实例的sid,如图:

2)  口令文件是一个二进制文件,用于验证特权用户。特权用户是指具有sysoper或sysdba权限的特殊数据库用户。这些用户可以启动例程、关闭例程、创建数据库、执行备份恢复等操作。创建oracle数据库,默认的特权用户是sys。

口令文件的名称中都带有相应的oracle实例的sid:

3)  归档日志文件

非活动的重做日志文件的备份。通过使用归档日志文件,可以保留所有重做历史记录。

4)  后台进程跟踪文件:记录后台进程的警告或错误信息。每个后台进程都有相应的跟踪文件。

5)  服务进程跟踪文件:记录服务进程的相关信息,用于跟踪SQL语句、诊断SQL语句的性能,并实施相应的性能调整。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值