【赵渝强老师】Oracle的体系架构

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: Oracle数据库的核心在于其体系架构,主要包括数据库与实例、存储结构、进程结构和内存结构。数据库由物理文件组成,实例则是内存和进程的组合。存储结构分为逻辑和物理两部分,进程结构涉及多个后台进程如SMON、PMON、DBWn等,内存结构则包含SGA和PGA。掌握这些知识有助于更好地管理和优化Oracle数据库。

b022.png

Oracle数据库中最重要的部分就是它的体系架构,只有掌握Oracle的体系架构才能很好地使用它。Oracle数据库的体系架构是进行数据库管理、数据库备份恢复以及数据库性能诊断和优化的基础。同时由于关系型数据库的相通性,掌握了Oracle数据库的体系架构对于进一步学习其他类型数据库将会有非常大的帮助。


视频讲解如下:


Oracle数据库中有数据库和数据库实例这两个基本的概念,并且从体系架构的组成上看,Oracle数据库又分为了存储结构、进程结构和内存结构。因此,要掌握Oracle的体系架构就需要从数据库与数据库实例入手,并进一步深入到其内部核心的结构中。


一、数据库与数据库实例

   

Oracle数据库,英文名称叫做Oracle Database。这里所说的数据库是一个物理上的概念,即指物理操作系统的文件或者磁盘的集合。换句话来说,Oracle数据库是由物理硬盘上许多的文件组成。这些文件包含了数据文件、控制文件、重做日志文件等等。数据库的配置信息、日志信息以及表中的数据最终都是存储在这些文件当中。

   

Oracle数据库的实例,英文名称叫做Oracle Database Instance,它是一个逻辑上的概念,由操作系统的内存和操作系统中的进程组成。这些内存由同一个宿主机上运行的进程所共享。即使没有磁盘存储的数据库文件,数据库实例也能存在,但是这样的数据库实例没有实际的意义。对于一个正常运行的Oracle数据库实例来讲,可以把它看成是Oracle数据库文件在内存中的镜像。客户端需要通过操作系统中的进程来访问内存中的这些镜像,最终读写Oracle数据库的数据。


在不考虑Oracle数据库集群的情况下,一般情况下一个Oracle数据库服务只包括一个Oracle数据库和一个Oracle数据库的实例。一个实例对应一个数据库。它们之间的对应关系如下图所示。



二、存储结构

   

Oracle数据库由硬盘上的文件组成,而要读写数据需要通过Oracle实例来完成。那么,Oracle数据库是如何存储数据的呢?要搞清楚这个问题,就需要理解什么是Oracle数据库的存储结构。Oracle数据库的存储结构是由逻辑存储结构和物理存储结构组成。一般来说数据库无论是关系型数据库,还是NoSQL数据库在存储结构上,都是通过逻辑存储结构来管理物理存储结构。下图展示了Oraclke的逻辑存储结构。


   

Oracle的物理存储结构就是指的Oracle数据库在硬盘上存储的各种文件,包括:数据文件、联机日志文件、控制文件、归档日志文件、参数文件、告警日志文件、跟踪文件和备份文件等。


三、进程结构

   

通过执行Linux命令ps -ef | grep ora_可以查看Oracle数据库所有的后台进程。下面列举了这些进程的信息。

oracle    69415      1  0 13:07 ?        00:00:01 ora_pmon_orcl
oracle    69420      1  0 13:07 ?        00:00:00 ora_clmn_orcl
oracle    69424      1  0 13:07 ?        00:00:05 ora_psp0_orcl
oracle    69428      1  1 13:07 ?        00:05:43 ora_vktm_orcl
oracle    69434      1  0 13:07 ?        00:00:02 ora_gen0_orcl
oracle    69438      1  0 13:07 ?        00:00:01 ora_mman_orcl
oracle    69444      1  0 13:07 ?        00:00:06 ora_gen1_orcl
oracle    69446      1  0 13:07 ?        00:00:00 ora_gen2_orcl
oracle    69449      1  0 13:07 ?        00:00:00 ora_vosd_orcl
oracle    69453      1  0 13:07 ?        00:00:00 ora_diag_orcl
oracle    69457      1  0 13:07 ?        00:00:00 ora_ofsd_orcl
oracle    69459      1  0 13:07 ?        00:00:13 ora_dbrm_orcl
oracle    69462      1  0 13:07 ?        00:00:00 ora_vkrm_orcl
oracle    69466      1  0 13:07 ?        00:00:01 ora_svcb_orcl
oracle    69468      1  0 13:07 ?        00:00:04 ora_pman_orcl
oracle    69470      1  0 13:07 ?        00:00:18 ora_dia0_orcl
oracle    69474      1  0 13:07 ?        00:00:02 ora_dbw0_orcl
oracle    69476      1  0 13:07 ?        00:00:05 ora_lgwr_orcl
oracle    69480      1  0 13:07 ?        00:00:08 ora_ckpt_orcl
oracle    69484      1  0 13:07 ?        00:00:00 ora_smon_orcl
oracle    69490      1  0 13:07 ?        00:00:02 ora_smco_orcl
oracle    69494      1  0 13:07 ?        00:00:00 ora_reco_orcl
oracle    69496      1  0 13:07 ?        00:00:01 ora_lreg_orcl
oracle    69498      1  0 13:07 ?        00:00:00 ora_pxmn_orcl
oracle    69504      1  0 13:07 ?        00:00:12 ora_mmon_orcl
......

   

下面介绍几个比较重要的Oracle数据库的后台进程。


  • 系统监视器进程(SMON进程):即ora_smon_orcl进程。它负责Oracle数据库的启动,并在实例启动时执行恢复;同时该进程还可以清除不使用的临时段。
  • 进程监视器进程(PMON进程):即ora_pmon_orcl进程。该进程负责在用户进程失败时执行进程的恢复。同时还负责清除数据库缓冲区中的脏数据和释放该用户进程占用的资源。
  • 数据库写进程(DBWn进程):全称是Database Writer进程,即ora_dbw0_orcl进程,它负责将数据库缓冲区的数据写入磁盘。
  • 日志写进程(LGWR):全称是Log Writer进程,即ora_lgwr_orcl进程,它负责管理重做日志缓冲区,即将重做日志缓冲区条目写入磁盘上的重做日志文件中。
  • 检查点进程(CKPT):它是Oracle数据库 检查点进程,即ora_ckpt_orcl进程,它负责唤醒DBWn进程将缓冲区中的脏数据写入数据文件中。


四、内存结构

   

Oracle数据库的内存结构可以看成是数据库文件的镜像,而每个Oracle数据库实例有两个关联的内存结构:系统全局区(SGA)和程序全局区(PGA)。下图展示了Oracle数据库实例的内存结构。



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
19天前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
|
19天前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
【赵渝强老师】Oracle的控制文件与归档日志文件
|
19天前
|
SQL 存储 数据库
【赵渝强老师】基于Flink的流批一体架构
本文介绍了Flink如何实现流批一体的系统架构,包括数据集成、数仓架构和数据湖的流批一体方案。Flink通过统一的开发规范和SQL支持,解决了传统架构中的多套技术栈、数据链路冗余和数据口径不一致等问题,提高了开发效率和数据一致性。
|
19天前
|
SQL 分布式计算 Java
【赵渝强老师】Hive的体系架构
Hive是基于Hadoop的数据仓库平台,提供SQL-like的HQL语言进行数据分析,无需编写复杂的Java代码。Hive支持丰富的数据模型,可将SQL语句转换为MapReduce任务在Yarn上运行,底层依赖HDFS存储数据。Hive可通过CLI、JDBC和Web界面执行SQL查询。
|
19天前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
19天前
|
存储 缓存 NoSQL
【赵渝强老师】Memcached集群的架构
Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存中维护一个巨大的 Hash 表来存储各种格式的数据,如图像、视频、文件及数据库检索结果等。它主要用于减轻数据库压力,提高网站系统的性能。Memcached 不支持数据持久化,因此仅作为缓存技术使用。其数据分布式存储由客户端应用程序实现,而非服务端。
【赵渝强老师】Memcached集群的架构
|
19天前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
19天前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
19天前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的物理存储结构
Oracle的物理存储结构包括数据文件、联机重做日志文件、控制文件、归档日志文件、参数文件、告警日志文件、跟踪文件和备份文件。这些文件在硬盘上存储数据库的各种数据和日志信息,确保数据库的正常运行和故障恢复。视频讲解和详细说明见原文。
|
19天前
|
调度 Docker 容器
【赵渝强老师】Docker Swarm集群的体系架构
Docker Swarm自1.12.0版本起集成至Docker引擎,无需单独安装。它内置服务发现功能,支持跨多服务器或宿主机创建容器,形成集群提供服务。相比之下,Docker Compose仅限于单个宿主机。Docker Swarm采用主从架构,Swarm Manager负责管理和调度集群中的容器资源,用户通过其接口发送指令,Swarm Node根据指令创建容器运行应用。

推荐镜像

更多