oracle体系结构详解(实例+数据文件)

news2024/10/7 4:31:18

提示:主要总结oracle数据库:物理结构,逻辑结构,内存结构以及oracle进程

文章目录

  • Oracle服务器由(实例和数据库文件组成)
    • 1、实例
    • 2、数据文件
      • @1.oracle物理体系结构
      • @2.oracle数据库逻辑结构
      • @3oracle数据库内存结构
        • 共享池
        • 数据库高速缓存区(Database buffer cache)
        • 重做日志高速缓存区(Redo Log buffer cache)
        • PGA和UGA
        • 大池
        • java池
        • 流池(Streaming pool)
      • @4.oracle进程
        • 服务器进程
        • 用户进程
        • oracle数据库后台进程
          • 系统监控进程(SMON)
          • 进程监控进程(PMON)
          • 数据库写进程(DBWR)
          • 归档日志进程(ARCH)
          • 校验点进程(Checkpoint process)


Oracle服务器由(实例和数据库文件组成)

在这里插入图片描述

Oracle服务器由数据库实例和数据文件组成,也就是我们常说的数据库管理系统。数据库服务器除了维护实例和数据库文件之外,还在用户建立与服务器的连接时启动服务器进程并分配PGA

Oracle的体系结构是一个高度可扩展和可靠的架构,它将数据存储在持久的数据库中,并通过实例提供对数据的访问和管理。实例负责处理数据库的各种操作和管理数据库的内存结构,而数据库负责存储实际的数据、相关的控制信息和日志

1、实例

由内存区和后台进程组成

①内存区:数据库高速缓存、重做日志缓存、共享池、流池以及其它可选内存区(如Java池),这些池也称为数据库的内存结构

②后台进程:包括系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、日志写进程(LGWR)、检验点进程(CKPT)、其它进程(SMON,如归档进程、RECO进程等)

备注:要访问数据库必须先启动实例,实例启动时先分配内存区,然后再启动后台进程,后台进程执行库数据的输入、输出以及监控其它Oracle进程。在数据库启动过程中有五个进程是必须启动的,它们是系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、日志写进程(LGWR)、检验点进程(CKPT),否则实例无法创建。

2、数据文件

1.数据文件:
数据库中的实际数据
2. 控制文件
维护数据库和验证数据库完整性
3.重做日志文件
数据库发生变化的记录,用于数据恢复
4.重做日志文件
数据库发生变化的记录,用于数据恢复
5.密码文件
密码文件授予用户启动和关闭数据库实例,在刚安装数据库时,Oracle 的默认用户名和密码就存储在密码文件中,Oracle 可以借此判断用户的操作权限
6.归档日志文件
归档日志文件是日志文件的脱机备份,在发生故障后进行数据恢复时可能使用该文件


@1.oracle物理体系结构

在这里插入图片描述

1.数据文件:
数据库中的实际数据
2. 控制文件
维护数据库和验证数据库完整性
3.重做日志文件
数据库发生变化的记录,用于数据恢复
4.重做日志文件
数据库发生变化的记录,用于数据恢复
5.密码文件
密码文件授予用户启动和关闭数据库实例,在刚安装数据库时,Oracle 的默认用户名和密码就存储在密码文件中,Oracle 可以借此判断用户的操作权限
6.归档日志文件
归档日志文件是日志文件的脱机备份,在发生故障后进行数据恢复时可能使用该文件

@2.oracle数据库逻辑结构

在这里插入图片描述
表空间:据库的基本逻辑结构,是一系列数据文件的集合;

段:不同类型数据在数据库中占用的空间,有许多区组合而成;

区:由连续的块组成,目的是为数据一次性预留一个较大的空间,oracle为存储空间进行分配回收都是以区为单位的;

块:最小的存储单位,在创建数据库时指定,不能修改。大小是操作系统块得整数倍

@3oracle数据库内存结构

Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Area,简称 PGA)组成。

在这里插入图片描述

①PGA 称为程序全局区,程序全局区不是实例的一部分,当服务器进程启动时,才分配PGA。②SGA 称为系统全局区,它是数据库实例的一部分,当数据库实例启动时,会首先分配系统全局区。

在系统全局区中包含:数据库高速缓存(Database buffer cache)、重做日志缓存(Redo log buffer cache)、共享池(Shared pool)、大池(Large pool)和Java 池(Java pool)

共享池

@1、共享池的作用
Oracle 引入共享池的目的就是共享SQL 或PL/ SQL 代码,即把解析得到的SQL 代码的结果在这里缓存

@2、共享池组成
共享池由两部分组成,即库高速缓存(Libray cache)和数据字典高速缓存(Data dict cache),①库高速缓存库高速缓存存储了最近使用过的SQL 和PL/ SQL 语句。

②数据字典高速缓存是与数据字典相关的一段缓冲区。在数据字典高速缓冲区中存储了数据文件、表、索引、列、用户、权限信息和其它一些数据库对象的定义

设置共享池的大小
SQL> alter system set shared_ pool_ size = 16M;

3.1.4查看共享池的大小
SQL> show parameter shared_ pool_ size;


数据库高速缓存区(Database buffer cache)

概念
存储了最近从数据文件读入的数据块信息或用户更改后需要写回数据库的数据信息,此时这些没有提交给数据库的更改后的数据称为脏数据

当用户执行查询语句如select* from dept 时,如果用户查询的数据块在数据库高速缓存中,Oracle 就不必从磁盘读取,而是直接从数据库高速缓存中读取(查询—数据库高速缓存区不经过磁盘)

查询数据库块的大小
SQL> show parameter db_ block_ size;

查询数据库高速缓存的大小
SQL> show parameter db_ cache_ size;

因为在Oracle 11g 中,SGA 为数据库服务器自动管理,所以该参数值为0

查询数据库高速缓存的大小
SQL> show sga;

设置数据库高速缓冲区大小
SQL> alter system set db_ cache_ size = 200M;

查看数据库高速缓存顾问状态
SQL> show parameter db_ cache_ advice;

查看与设置数据库高速缓冲区相关的信息
SQL> col id for 99 SQL> SELECT id, name, block_ size, size_ for_ estimate, buffers_ for_ estimate 2 from v$ db_ cache_ advice;


重做日志高速缓存区(Redo Log buffer cache)

概念
当用户执行了如INSERT、UPDATE、DELETE、CREATE、ALTER 或DROP 操作后,数据发生了变化,这些变化了的数据在写入数据库高速缓存之前会先写入重做日志缓冲区同时变化之前的数据也放入重做日志高速缓存,这样在数据恢复时Oracle 就知道哪些需要前滚哪些需要后滚了

查看重做日志缓存区
SQL> show parameter log_ buffer;

重做日志缓存区参数log_ buffer 是静态参数,不能动态修改


PGA和UGA

PGA(进程全局区)

PGA 中存储了服务器进程或单独的后台进程的数据信息和控制信息。它随着服务器进程的创建而被分配内存,随着进程的终止而释放内存。PGA 与SGA 不同,它不是一个共享区域,而是服务器进程专有的区域。在专有服务器(与共享服务器相对的概念)配置中包括如下的组件:排序区、会话信息、游标状态、堆栈区

UGA(用户全局区)

在共享服务器模式下有一个重要的概念即UGA,它是用户的会话状态,这部分内存会话总可以访问,UGA 存储在每个共享服务器都可以访问的SGA 中,这样任何服务器都可以使用用户会话的数据和其它信息。而在专有服务器模式下,用户会话状态不需要共享,用户进程与服务器进程是一一对应的关系,所以UGA 总是在PGA 中进行分配。

PGA内存管理
从Oracle 9i 开始,Oracle 提高了两种办法管理PGA,即手动PGA 管理和自动PGA 管理。采用手动管理时,必须告诉Oracle 一个特定的进程需要的排序区,允许使用多少内存,而在自动PGA 管理中,则要求高速Oracle 在系统范围内可以为PGA 中的特定功能如排序区分配多少内存。

①查询PGA 中排序区的大小

SQL> show parameter sort_ area_ size;


大池

大池是SGA 的一段可选内存区,只在共享服务器环境中配置大池。

在共享服务器环境下,Oracle 在共享池中分配额外的空间用于存储用户进程和服务器进程之间的会话信息,但是用户进程区域UGA(可理解为PGA 在共享服务器中的另一个称呼)的大部分将在大池中分配,这样就减轻了共享池的负担

查看大池大小
SQL> show parameter large_ pool_ size

修改大池大小
SQL> alter system set large_ pool_ size = 48M


java池

Java 池也是可选的一段内存区,但是在安装完Java 或者使用Java 程序时则必须设置Java 池,它用于编译Java 语言编写的指令。

查看java 池的大小
SQL> show parameter java_ pool_ size;

值为0 说明在Oracle 11g 中,Java 池大小由数据库服务器在SGA 中自动分配,当然用户也可以使用alter system 指令修改该参数的值

修改java池大小
SQL> alter system set java_ pool_ size = 48M


流池(Streaming pool)

流池也称为流内存,它是Oracle 流专用的内存池,流(stream)是Oracle 数据库中的一个数据共享,其大小可以通过参数stream_ pool_ size 动态调整。


@4.oracle进程

服务器进程和用户进程,是用户使用数据库连接工具同数据库服务器建立连接时,涉及的两个概念。

服务器进程

服务器进程犹如一个中介,完成用户的各种数据服务请求,而把数据库服务器返回的数据和结果发给用户端。

在专有连接中,一个服务器进程对应一个用户进程,二者是一一对应的关系。

在共享连接中,一个服务器进程对应几个用户进程,此时服务器进程通过OPI(Oracle Program Interface)与数据库服务器通信。

用户进程

当用户使用数据库工具如SQL* Plus

与数据库服务器建立连接时,就启动了一个用户进程,即SQL* Plus 软件进程

使用SCOTT 用户连接数据库:SQL> conn scott/tiger

用户和数据库服务器建立了连接,数据库服务器产生一个服务器进程,负责与数据库服务器的直接交互

oracle数据库后台进程

后台进程是在实例启动时,在数据库服务器端启动的管理程序,它使数据库的内存结构和数据库物理结构之间协调工作。它们是DBWR、LGWR、PMON、SMON 和CKPT

系统监控进程(SMON)

系统监控进程的主要作用就是数据库实例恢复。当数据库发生故障时,如操作系统重启,此时实例SGA 中的所有没有写到磁盘的信息都将丢失。当数据库重新启动后,系统监控进程自动恢复实例。

进程监控进程(PMON)

进程监控负责服务器进程的管理和维护工作,在进程失败或连接异常发生时该进程负责一些清理工作。

数据库写进程(DBWR)

在介绍高速缓冲区时,提到了脏数据的概念,脏数据就是用户更改了的但没有提交的数据库中的数据,因为在数据库的数据文件与数据库高速缓存中的数据不一致,故称为脏数据,这种脏数据必须在特定的条件下写到数据文件中,这就是数据库写进程的作用。

数据库写进程负责把数据库高速缓冲区中的脏数据写到数据文件中。或许读者会问,为什么不立即提交脏数据呢,这样就不需要复杂的数据库写进程来管理。其实,Oracle 这样设计的思路很简单,就是减少I/ O 次数,但脏数据量达到一定程度或者某种其它条件满足时,就提交一次脏数据。因为磁盘的输入、输出会花费系统时间,使得Oracle 系统的效率不高。4.3.4重做日志写进程(LGWR)

重做日志写进程负责将重做日志缓冲区中的数据写到重做日志文件。此时重做日志缓冲区中的内容是恢复事务所需要的信息,比如用户使用UPDATE 语句更新了某行数据,恢复事务所需的信息就是更新前的数据和更新后的数据,这些信息用于该事务的恢复

归档日志进程(ARCH)

归档日志进程是可选进程,该进程并不在实例启动时自动启动。它的作用是把写满的重做日志文件的数据写到一个归档日志中,这个归档日志用作介质故障时的数据库恢复

查看系统的归档模式

SQL> con system/ oracle@ orcl as sysdba;

SQL> archive log list;

设置数据库为归档模式的过程

SQL> shutdown immediate

SQL> conn /as sysdba;

SQL> startup mount;

SQL> alter database archivelog;

SQL> alter database open;

查询当前数据库的归档模式

SQL> archive log list;

查看数据库恢复目录的位置

SQL> show parameter db_ recovery

校验点进程(Checkpoint process)

首先介绍检验点,检验点是一个事件,当数据库写进程把SGA 中所有被修改了的数据库高速缓冲中的数据写到数据文件上时产生,这些被修改的数据包括提交的和未提交的数据。由于引入了校验点,使得所有的校验点的所有变化了的数据都写到数据文件中,在实例恢复时,就不必恢复校验点之前的重做日志中的数据,加快了系统恢复的效率。校验点进程并不是用于建立校验点,只是在校验点发生时,会触发这个进程进行一系列工作

强制执行校验点SQL> alter system checkpoint;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1887118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Log4j日志框架讲解(全面,详细)

Log4j概述 Log4j是Apache下的一款开源的日志框架,通过在项目中使用 Log4J,我们可以控制日志信息输出到控制台、文件、甚至是数据库中。我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以 更灵活的控制日志的输出过程…

【前端vue3】TypeScrip-类型推论和类型别名

类型推论 TypeScript里,在有些没有明确指出类型的地方,类型推论会帮助提供类型。 例如: 变量xiaoc被推断类型为string 如重新给xiaoc赋值数字会报错 let xiaoc "xiaoc"xiaoc 1111111111111如没有给变量指定类型和赋值&#xf…

阿里Nacos下载、安装(保姆篇)

文章目录 Nacos下载版本选择Nacos安装Windows常见问题解决 更多相关内容可查看 Nacos下载 Nacos官方下载地址:https://github.com/alibaba/nacos/releases 码云拉取(如果国外较慢或者拉取超时可以试一下国内地址) //国外 git clone https:…

RabbitMQ进阶篇

文章目录 发送者的可靠性生产者重试机制实现生产者确认 MQ的可靠性数据持久化交换机持久化队列持久化消息持久化 Lazy Queue(可配置~)控制台配置Lazy模式代码配置Lazy模式更新已有队列为lazy模式 消费者的可靠性消费者确认机制失败重试机制失败处理策略 业务幂等性唯一消息ID业…

编译libvlccpp

首先下载vlc sdk https://get.videolan.org/vlc/3.0.9.2/win64/vlc-3.0.9.2-win64.7z Cmake 生成libvlccpp vs2022工程文件 编译libvlccpp 编译出错需修改代码 错误信息: \VLC\sdk\include\vlc/libvlc_media.h(368): error C2065: “libvlc_media_read_cb”: 未…

Linux高并发服务器开发(九)Tcp状态转移和IO多路复用

文章目录 0 包裹函数1 多进程服务器流程代码 2 多线程服务器3 TCP状态转移半关闭心跳包 4 端口复用5 IO多路复用技术高并发服务器 6 select代码总结 7 POLLAPI代码poll相对select的优缺点 8 epoll(重点)API监听管道代码EPOLL 高并发服务器 9 Epoll的两种…

【MySQL备份】Percona XtraBackup加密备份实战篇

目录 1.前言 2.准备工作 2.1.环境信息 2.2.配置/etc/my.cnf文件 2.3.授予root用户BACKUP_ADMIN权限 2.4.生成加密密钥 2.5.配置加密密钥文件 3.加密备份 4.优化加密过程 5.解密加密备份 6.准备加密备份 7.恢复加密备份 7.1.使用rsync进行恢复 7.2.使用xtrabackup命令恢…

go Channel原理 (四)

Channel 设计原理 不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存。 在主流编程语言中,多个线程传递数据的方式一般都是共享内存。 Go 可以使用共享内存加互斥锁进行通信,同时也提供了一种不同的并发模型,即通…

终极指南:RNNS、Transformers 和 Diffusion 模型

一、说明 作为广泛使用这些工具和模型的人,我的目标是解开 RNN、Transformer 和 Diffusion 模型的复杂性和细微差别,为您提供详细的比较,为您的特定需求提供正确的选择。 无论您是在构建语言翻译系统、生成高保真图像,还是处理时间…

【ACM出版,马来西亚-吉隆坡举行】第四届互联网技术与教育信息化国际会议 (ITEI 2024)

作为全球科技创新大趋势的引领者,中国不断营造更加开放的科技创新环境,不断提升学术合作的深度和广度,构建惠及各方的创新共同体。这是对全球化的新贡献,是构建人类命运共同体的新贡献。 第四届互联网技术与教育信息化国际学术会议…

【CSAPP】-binarybomb实验

目录 实验目的与要求 实验原理与内容 实验设备与软件环境 实验过程与结果(可贴图) 操作异常问题与解决方案 实验总结 实验目的与要求 1. 增强学生对于程序的机器级表示、汇编语言、调试器和逆向工程等方面原理与技能的掌握。 2. 掌握使用gdb调试器…

【ONLYOFFICE】| 桌面编辑器从0-1使用初体验

目录 一. 🦁 写在前面二. 🦁 在线使用感受2.1 创建 ONLYOFFICE 账号2.2 编辑pdf文档2.3 pdf直接创建表格 三. 🦁 写在最后 一. 🦁 写在前面 所谓桌面编辑器就是一种用于编辑文本、图像、视频等多种自媒体的软件工具,具…

.NET周刊【6月第5期 2024-06-30】

国内文章 呼吁改正《上海市卫生健康信息技术应用创新白皮书》 C# 被认定为A 组件 的 错误认知 https://www.cnblogs.com/shanyou/p/18264292 近日,《上海市卫生健康“信息技术应用创新”白皮书》发布,提到医疗信创核心应用适配方法及公立医院信息系统…

thinksboard新建table表格

html文件 <div fxFlex fxLayoutAlign"left top" style"display: block"> <!-- <mat-card appearance"raised" style"max-height: 80vh; overflow-y: auto;">--><div><button mat-raised-button (click)&…

linux和mysql基础指令

Linux中nano和vim读可以打开记事文件。 ifdown ens33 ifup ens33 关闭&#xff0c;开启网络 rm -r lesson1 gcc -o code1 code1.c 编译c语言代码 ./code1 执行c语言代码 rm -r dir 删除文件夹 mysql> show databases-> ^C mysql> show databases; -------…

基于STM32的卫星GPS路径记录仪

目录 引言环境准备卫星GPS路径记录仪基础代码实现&#xff1a;实现卫星GPS路径记录仪 4.1 数据采集模块4.2 数据处理与分析4.3 存储系统实现4.4 用户界面与数据可视化应用场景&#xff1a;路径记录与分析问题解决方案与优化收尾与总结 1. 引言 卫星GPS路径记录仪通过使用STM…

第十四届蓝桥杯省赛C++B组A题【日期统计】题解(AC)

题目大意 给定的字符串中&#xff0c;有几个子序列是 2023 2023 2023 年的日期&#xff08;每个日期只能算一次&#xff09;。 法一 枚举所有长度为 8 8 8 的子序列&#xff0c;判断是否是有效日期并去重&#xff0c;时间复杂度 O ( C 100 8 ) O(C^8_{100}) O(C1008​)。…

秋招Java后端开发冲刺——并发篇1(线程与进程、多线程)

一、进程 1. 进程 进程是程序的一次动态执行过程&#xff0c;是操作系统资源分配的基本单位。 2. 进程和线程的区别 特性进程线程定义独立运行的程序实例&#xff0c;资源分配的基本单位进程中的一个执行单元&#xff0c;CPU调度的基本单位资源进程拥有独立的内存空间和资源线…

Java_多线程:线程池

1、线程池优点&#xff1a; 降低资源消耗&#xff1a;通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度&#xff1a;当任务到达时&#xff0c;任务可以不需要等到线程创建就能立即执行。提高线程的可管理性&#xff1a;线程是稀缺资源&#xff0c;如果无限…

c语言的烫烫烫烫烫??

当初学习C语言时&#xff0c;对于一些特殊的打印输出可能会感到困惑&#xff0c;比如会出现一堆乱码烫烫烫的情况。其实这是因为在C语言中&#xff0c;对于字符类型和数字类型之间的隐式转换可能会导致打印输出的结果不符合预期。这并不意味着程序员"烫"&#xff0c;…