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

简介: 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数据库实例的内存结构。



相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
5月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
472 93
|
4月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
274 0
|
11月前
|
XML 存储 分布式计算
【赵渝强老师】史上最详细:Hadoop HDFS的体系架构
HDFS(Hadoop分布式文件系统)由三个核心组件构成:NameNode、DataNode和SecondaryNameNode。NameNode负责管理文件系统的命名空间和客户端请求,维护元数据文件fsimage和edits;DataNode存储实际的数据块,默认大小为128MB;SecondaryNameNode定期合并edits日志到fsimage中,但不作为NameNode的热备份。通过这些组件的协同工作,HDFS实现了高效、可靠的大规模数据存储与管理。
1296 70
|
9月前
|
存储 SQL 数据库
【赵渝强老师】OceanBase的部署架构
OceanBase数据库支持两种部署架构:无共享(Shared-Nothing,SN)模式和共享存储(Shared-Storage,SS)模式。SN模式下,各节点对等,具备高扩展性、可用性和性能,运行于普通PC服务器集群;SS模式采用存算分离架构,租户数据存储在共享对象存储上,本地缓存热点数据。两种模式均支持高可用与多副本一致性,适用于不同业务场景。
522 1
|
4月前
|
存储 NoSQL 前端开发
【赵渝强老师】MongoDB的分布式存储架构
MongoDB分片通过将数据分布到多台服务器,实现海量数据的高效存储与读写。其架构包含路由、配置服务器和分片服务器,支持水平扩展,结合复制集保障高可用性,适用于大规模生产环境。
386 1
|
6月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle客户端与服务器端连接建立的过程
Oracle数据库采用客户端-服务器架构,客户端通过其网络环境与服务器通信,实现数据库访问。监听程序负责建立连接,通过命令lsnrctl可启动、停止及查看监听状态。本文介绍了监听器的作用及相关基础管理操作。
291 0
|
9月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】在PostgreSQL中访问Oracle
本文介绍了如何在PostgreSQL中使用oracle_fdw扩展访问Oracle数据库数据。首先需从Oracle官网下载三个Instance Client安装包并解压,设置Oracle环境变量。接着从GitHub下载oracle_fdw扩展,配置pg_config环境变量后编译安装。之后启动PostgreSQL服务器,在数据库中创建oracle_fdw扩展及外部数据库服务,建立用户映射。最后通过创建外部表实现对Oracle数据的访问。文末附有具体操作步骤与示例代码。
518 6
【赵渝强老师】在PostgreSQL中访问Oracle
|
9月前
|
存储 缓存 分布式数据库
【赵渝强老师】HBase的体系架构
HBase是一种基于BigTable思想的列式存储NoSQL数据库,适合数据分析与处理。其主从架构包含HBase HMaster、Region Server和ZooKeeper。HMaster负责Region分配及表管理;Region Server执行数据读写操作,并包含WAL预写日志、Block Cache读缓存和MemStore写缓存;ZooKeeper维护集群状态并协调分布式系统工作。通过视频讲解与架构图示,详细解析各组件功能与协作机制。
608 11
|
7月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
196 0
|
10月前
|
存储 关系型数据库 MySQL
【赵渝强老师】TiDB的体系架构
TiDB是由PingCAP公司自主研发的开源分布式关系型数据库,支持HTAP(混合事务分析处理),具备弹性扩缩容、金融级高可用、实时分析等特性,兼容MySQL协议。其架构分为存储集群(行存TiKV与列存TiFlash)、调度集群(PD实例)和计算集群(TiDB实例)。相比传统单机数据库,TiDB优势显著:纯分布式设计、高扩展性、自动故障恢复、ACID事务支持及丰富的工具生态,适用于高可用与强一致要求的场景。
369 10

热门文章

最新文章

推荐镜像

更多