Oracle 数据库基础(基本概念)

1.基本概念

  • 实例: 也称服务器(server),是存取和控制数据库的软件机制,它由系统全局区(SGA) 和 后台进程组成。
  • 表空间(TableSpace): 是数据库的逻辑划分,每个数据库至少有一个表空间(system 表空间)
  • 数据文件(DataFile): 每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据库文件。建立新表空间需要建立新的数据库文件。

实例名可以由环境变量ORACLE_SID 来定义。实例的init.ora 文件通常包含该实例的名字,格式为 initSID.ora 。 如一个实例的名字(SID)为ora817,则init.ora 文件名通常为 initora817.ora。

2. Oracle 系统结构

  • 物理结构:数据文件,日志文件,控制文件,参数文件
  • 系统全局区(SGA):共享池,数据缓冲区,日志缓冲区,字典缓冲区
  • 进程: 用户进程,服务器进程,后台进程

2.1 物理结构

一个Oracle 数据库 有一个物理结构和一个逻辑结构。物理结构是由构成数据库的操作系统文件锁决定的。
每一个Oracle 数据库由四种不同类型的文件组成:

  • 数据文件
  • 日志文件
  • 控制文件
  • 参数文件

2.1.1 数据文件

  • 数据文件是物理存储ORACLE数据库数据的文件,每一个ORACLE数据库有一个或多个物理的数据文件(data file)。
  • 逻辑数据库结构,如表、索引等的数据,物理的存储在数据库的数据文件中。
  • 一个表空间可以包含一个或多个数据文件

1.2.2 日志文件

  • 日志文件组(redo log file): 每一个数据库有两个或多个日志文件组
  • 日志文件组 用于收集数据库日志。
  • 日志文件:用于保护数据库以防止故障
  • Oracle 允许镜像日志(mirrored redo log),可以在多个磁盘上维护两个或多个日志副本。

1.2.3 控制文件

每一个数据库有一个控制文件,它记录了数据库的物理结构。包含下列信息类型:

  • 数据库名
  • 数据库数据文件和日志文件的名字和位置
  • 数据库建立日期

Oracle 数据库允许控制文件被镜像。
每一个ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们被打开。当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。数据恢复时,也要使用控制文件

1.2.4 参数文件

是一个文本文件,可直接使用文本编辑器对其内容进行修改,该文件只在建立数据库和启动实例时被访问,修改该文件后必须重启实例才生效。
系统初始参数文件:init .ora
生成的参数文件为:initSID.ora

参数文件作用如下:

  • 设置SGA的大小。
  • 设置数据库的全部缺省值。
  • 设置数据库的范围。
  • 在数据库建立时定义数据库的物理属性。
  • 指定控制文件名和路径。
  • 通过调整内存结构,优化数据库性能。

2.2 系统全局区(SGA)

SGA(System Global Area)是ORACLE系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。

SAG 的尺寸应小于物理内存的一半,所有用户与Oracle 数据库系统的数据交换都要经过SGA区。

SAG 设置大小总原则:
SGA的计算方法如下:
SGA=DB_BLOCK_BUFFERS×DB_BLOCK_SIZE+SHARE_POOL_SIZE+SORT_AREA_SIZE+1M+3×DB_BLOCK_SIZE×(CPUs+2)×PARALELL_MAX_SREVERS

  • SORT_AREA_SIZE:排序区,并发用户数较多,需要排序时该值宜大
  • PARALELL_MAX_SREVERS:2×CPU个数×4×并发用户数。对单CPU不能修改此值。
  • DB_BLOCK_BUFFERS 数据块大小

在这里插入图片描述
SAG 的组成部分:

  • 共享池
  • 数据块缓冲区
  • 日志缓冲区
  • 字典缓冲区

2.2.1 共享池

共享池包括:

  • 共享SQL区
  • 数据字典区

参数 shared_pool_size 确定共享池大小,
shared_pool_size=物理内存×(15~20)%

共享SQL区:

  • SQL 或 PL/SQL 语句的文本
  • SQL 或 PL/SQL 语句的语法分析形式
  • SQL 或 PL/SQL 语句的执行方案

2.2.2 数据块缓冲区

用于存储从数据文件中读出的数据,其大小由以下两个参数决定:

  • DB_BLOCK_SIZE确定数据块的大小,一般为2K或4K。
  • DB_BLOCK_BUFFERS确定数据块的数目

DB_BUFFERS=DB_BLOCK_BUFFERS×DB_BLOCK_SIZE=物理内存×(15~25)%, 对于OPS取上限。该值应尽量大

2.2.3 日志缓冲区

以记录项的形式备份数据库缓冲区中被修改的缓冲块,这些记录项将被写到日志文件中。日志缓冲区大小由参数LOG_BUFFER确定

2.2.4 字典缓冲区

用于存放数据字典信息行

2.3 进程

ORACLE实例有两种类型:单进程实例多进程实例。通常用的是多进程实例。
单进程ORACLE(又称单用户ORACLE): 是一种数据库系统,一个进程执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代码和用户的数据库应用是单个进程执行。在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行ORACLE 。

多进程ORACLE实例(又称多用户ORACLE) :使用多个进程来执行ORACLE的不同部分,对于每一个连接的用户都有一个进程。在多进程系统中,进程分为两类:用户进程和ORACLE进程。

  • 用户进程 :当用户运行一个应用程序时会创建一个用户进程(如Oracle连接工具)
  • Oracle 进程:
    • 服务器进程
    • 后台进程

2.3.1 服务器进程

用于处理用户请求的进程。处理过程如下:

  • 分析SQL命令并生成执行方案
  • 从数据缓冲区或磁盘中读取数据
  • 将执行结果返回给用户。

2.3.2 后台进程

为所有数据库用户异步完成各种任务,主要包括如下进程(ora817表示实例名):

进程名说明
ora_reco_ora817恢复进程:该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布式事务中的故障。一个结点RECO后台进程自动地连接到包含有悬而未决的分布式事务的其它数据库中,RECO自动地解决所有的悬而不决的事务。任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果远程服务器是不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连接。RECO后台进程仅当在允许分布式事务的系统中出现,而且DISTRIBUTED – TRANSACTIONS参数是大于0。
ora_dbw0_ora817数据库写进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,此进程的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。
ora_pmon_ora817进程监控进程:该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
ora_lgwr_ora817日志写进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个ORACLE后台进程。
ora_ckpt_ora817检查点写进程:该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。
ora_smon_ora817系统监控进程:该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值