DBA的自我修养(基础篇)

1.Oracle体系结构

说到Oracle,Oracle是什么呢?接触过Mysql,SQL Server的人可能下意思就认为不就一个关系型数据库么?其实不然,太笼统的概念不能让我们清醒的看懂Oracle的结构,从严格意义上来讲Oracle由两部分组成:
这里写图片描述

实例是数据库启动时初始化的一组进程和内存结构,数据库则是指用户存储数据的一些文件。实例是伴随着数据库的启动而存在的,它的存在是为了高效访问和处理数据库中的文件,以及保证故障时数据零丢失。正是如此,才会有启动和关闭实例、加载卸载数据库这些术语。
如果上面那些让你对Oracle有了一点浅显的认知,那么请看下图:
这里写图片描述
如你所见,以中间空白的为线,上面粉嫩嫩的部分便是Oracle实例部分,下面的便是数据库部分,那接下来我们便逐个进行剖析。

2.Oracle物理存储结构

顾名思义,物理存储结构就是一些能看得见,实际存在的东西,大白话就是一群文件组成了Oracle的物理存储结构。如图
这里写图片描述
黄黄的部分代表着Oracle的核心组成,分别是数据文件、控制文件以及重做日志文件。除此之外,物理存储结构还包括着一些其他文件,例如参数文件、密码文件以及归档日志文件等等。下面将主要介绍这些文件。

  • 数据文件(Data files)
    数据文件是指存储数据库中数据的文件,这些“xxxx.dbf”存储着系统数据、数据字典数据、索引数据以及用户存储的数据,所以这部分也是数据库最核心的部分。数据文件大小是灵活的,可以通过设置让它自动扩展,避免了数据量过大但是数据文件空间有限这种状况;数据文件是专属于一个数据库的,也专属于一个表空间的,但是一个表空间却可以拥有多个数据文件。如果用户读取的数据不在缓冲区内,便会从数据文件中将相对应的数据放到缓冲区中,再进行读取。这部分内容会在之后详细分析。
  • 控制文件(Control files)
    控制文件是一个很小的二进制文件,这些“xxx.CTL”中存放的数据库的”物理结构信息”,这些物理结构信息包括:数据库的名字、数据文件和联机日志文件的名字及位置.、创建数据库时的时间戳。数据库在启动的时候需要访问控制文件,从中读取数据文件、日志文件的信息;随着Oracle的运行,数据库将不断更新控制文件;相对应的一旦控制文件损坏,数据库便会发生运行故障。所以为了更好的保护数据库,我们可以镜像控制文件,特别是在数据库结构发生变化时,要对其进行备份,保持控制文件的一致性。
  • 重做日志文件(Redo Log files)
    重做日志文件用于记录数据库所有修改信息 的文件,小名叫做日志文件,这些“.log”文件既可以保证数据库的安全,又可以实现数据库的备份和恢复。为了防止数据出现意外丢失,oracle也允许镜像日志文件,一个日志与其镜像出来的文件构成一个日志文件组,但是镜像文件数量不能超过5个。正所谓所有的鸡蛋不要放在一个篮子里,同一组的文件最好保存在不同的磁盘中,防止物理损坏造成不必要的麻烦。
  • 参数文件(Parameter file)
    参数文件记录了Oracle数据库的基本参数信息,主要包括数据库名、控制文件所在路径等。参数文件包括文本参数文件(PFILE)和服务器参数文件(SPFILE),前者为init.ora,后者为spfile.ora或spfile.ora的二进制文件。在数据库启动的时候就会读取参数文件,然后根据参数文件中的参数来分配SGA并启动一系列的后台进程。
  • 归档日志文件(Archived Log files)
    归档日志文件用来对写满的日志文件进行保存复制。其目的是为了长期保存日志以便于恢复。

3.Oracle逻辑存储结构

在oracle数据库中,对数据库操作会涉及逻辑存储结构,它是从逻辑角度分析数据库的构成,描述的是数据库内部数据的组织与管理方式,与操作系统没有关系。
这里写图片描述
如图,可以明显的看出数据库逻辑结构主要包括表空间、段、区和数据块,所有的结构都是一对多的关系,一个数据库可以拥有多个表空间,一个表空间拥有多个段等等。

  • 表空间

    表空间是Oracle最大的逻辑存储结构,与物理上的数据文件相对应,但是一个表空间可以拥有多个数据文件,这里就不一一赘述了。


  • 段是一组盘区,它是一个独立的逻辑存储结构,用于存储具有独立存储结构对象的全部数据。段一般是数据库终端用户处理最小的存储单位,当段的数据区已满,Oracle为其分配另一个数据区,段的数据区在磁盘上可能是不连续的。根据段所存储的特征,可将其分为5种类型:
    • 数据段:用来存储表中所有数据;在Oracle中,每当用户创建一个表时,系统将自动在默认表空间里分配一个与表名称相同的数据段,方便存储该表的所有数据。
    • 索引段:用来存储表中索引的所有数据;在Oracle中,每当用户创建索引时,系统将自动在默认表空间创建一个与索引名称相同的索引段,方便存储该索引的所有数据。
    • 临时段: 用于存储表排序或汇总时产生的临时数据;每当用户:
    • 临时表空间进行Order by 进行排列或汇总时,系统在该用户的临时表空间自动创建一个临时段,在操作结束时自动消除。
    • LOB段:LOB用来存储表中大型数据对象,例如CLOB与BLOB
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值