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

提示:主要总结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.mzph.cn/pingmian/39346.shtml

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

相关文章

如何通过指纹浏览器使用代理IP?

1.指纹浏览器定义 指纹浏览器是 一种浏览器技术,它根据用户设备的硬件、软件和配置等特征生成唯一标识符(称为“指纹”)。此指纹用于识别和追踪用户身份,即使用户更改其 IP 地址或清除浏览器数据(如缓存和 Cookie&…

AI生成商品图软件哪个好用

🌟 AI生成商品图软件哪个好用 —— 触站AI🚀 🎨在AI技术的浪潮中,触站AI以其专业和创新,成为广州AI设计服务的领军企业。 专注于企业AI图像领域的技术解决方案,触站AI提供包括AI绘画模型训练、AI绘图模型定…

HBM是什么?因AI而崛起,它有哪些优势?

南韩存储大厂SK海力士宣布,将与台积电公司密切合作,联手生产下一代HBM——即预计在2026年投产的第六代HBM产品HBM4,双方并于近期签署合作备忘录(MOU)。 SK海力士以往的HBM产品,包括HBM3E(第五代…

python本学期所有代码!

第一单元 ----------------------------------------------------------------------- #圆面积的计算 radius 25 area 3.1415 * radius * radius print(area) print("{:.2f}".format(area)) --------------------------------------------------------------------…

昇思25天学习打卡营第1天|yulang

今天主要了解了深度学习框架之昇思MindSpore的初学入门,没想到 ai学习入门如此简单,不愧是华为大手笔,提供的学习环境配置如此之高。这个平台有点类似百度飞桨,大大降低了AI开发门槛,使用户能够快速实现想要的模型&…

Hadoop3:Yarn的Tool接口案例

一、需求 依然以wordcount案例为基础,进行开发 我们知道,用hadoop自带的example.jar执行wordcount 命令如下 hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount -D mapreduce.job.queuename…

如何选择品牌推广公司?哪家好?收费标准及评价!

不管是什么品牌,推广对公司的成败起了很关键的作用。然而,面对市面上琳琅满目的品牌推广公司,如何选择一家既熟悉又靠谱的公司,成为许多企业主面临的难题。 作为一家手工酸奶品牌的创始人,目前全国也复制了100多家门店…

深度探索“目录名称无效“:原因、解决方案与最佳实践

目录名称无效:现象背后的秘密 在日常使用电脑或移动设备时,我们时常会遇到“目录名称无效”的错误提示,这一提示仿佛是一道无形的屏障,阻断了我们与重要数据的联系。从本质上讲,“目录名称无效”意味着系统无法识别或…

Windows下快速安装Open3D-0.18.0(python版本)详细教程

目录 一、Open3D简介 1.1主要用途 1.2应用领域 二、安装Open3D 2.1 激活环境 2.2 安装open3d 2.3测试安装是否成功 三、测试代码 3.1 代码 3.2 显示效果 一、Open3D简介 Open3D 是一个强大的开源库,专门用于处理和可视化3D数据,如点云、网格和…

Android原生与flutter模块交互

Flutter定义了三种不同类型的Channel: BasicMessageChannel:用于传递字符串和半结构化的信息,持续通信,收到消息后可以回复此次消息,如:Native将遍历到的文件信息陆续传递到Dart,在比如&#xf…

无法下载 https://mirrors./ubuntu/dists/bionic/main/binary-arm64/Packages

ubuntu系统执行sudo apt update命令的时候,遇到如下问题: 忽略:82 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/universe arm64 Packages 错误:81 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/main arm64 Packa…

springboot数字化医院产科系统源码

目录 一、系统概述 二、开发环境 三、功能设计 四、功能介绍 一、系统概述 数字化产科是为医院产科量身定制的信息管理系统。它管理了孕妇从怀孕开始到生产结束42天一系列医院保健服务信息。该系统由门诊系统、住院系统、数据统计模块三部分组成,与医院HIS、LI…

VMware Mac/Win 虚拟机软件介绍

VMware作为全球领先的虚拟化技术提供商,其Mac/Win虚拟机软件为用户带来了前所未有的跨平台操作体验。这款软件凭借其强大的功能和稳定的性能,成为了众多开发者、设计师、企业用户以及个人用户的首选工具。 强大的多操作系统支持 VMware Mac/Win 虚拟机…

轻松创建对象——简单工厂模式(Python实现)

1. 引言 大家好,又见面了!今天我们要聊的是设计模式中的“万能钥匙”——简单工厂模式。想象一下,如果每次你都得亲自动手创建各种对象,不仅累得像个陀螺,还可能搞得一团糟。别怕,简单工厂模式来拯救你&am…

2024年创业新商机组合拳“消费增值+二二复制”引流拓客新思路

文丨微三云胡佳东,点击上方“关注”,为你分享市场商业模式电商干货。 - 引言:2024年各行各业面临企业经营瓶颈难的一年,国家也陆续推出了《关于打造消费新场景培育消费新增长点的措施》都是为了培育和壮大消费新增长点&#xff…

怎样恢复数据?电脑数据恢复方法详解!

在日常使用电脑或移动设备时,我们难免会遇到数据丢失的情况,如误删除文件、存储设备故障等。数据恢复成了许多人迫切需要解决的问题。本文将为您介绍几种高效的数据恢复方法,帮助您轻松找回丢失的文件。 一、了解数据丢失的原因 在恢复数据…

数据文件传输连接超时?镭速教你如何解决!

Mysql作为一个广泛使用的开源关系型数据库管理系统,以快速、可靠、易于使用、开源的特色闻名,使用 MySQL 来存储和管理数据,已经广泛应用于各个领域、各类大小型应用中。 图片源于网络 使用 MySQL 来存储和管理数据的应用中,与数…

关于 element-ui el-cascader 数据回显问题的解决方案

前言 这两天在使用 el-cascader 控件时,后端日期的数据如“2023-05-06”前端需要按照“年-月-日”的形式分割成三级联动,因为数据库保存的是完整的日期,前端数据回显时需要对后端返回的数据进行处理。 问题再现 联动下拉框的数据如下&#x…

【操作系统】进程管理——线程管理(个人笔记)

学习日期:2024.7.2 内容摘要:线程的概念、存在的意义、线程的属性,线程的实现方式,线程的状态与组织。 线程的概念 拿QQ来说,QQ既可以打视频电话,也可以在这同时进行文字聊天或传送文件,进程是…

零信任沙箱在数据安全领域的意义

在当今日益复杂的网络安全环境中,零信任沙箱作为一种前沿的安全防护技术,受到了广泛关注。而SDC沙箱作为零信任沙箱领域的佼佼者,凭借其独特的技术优势和卓越的价值,为企业和组织提供了强大的数据安全保障。本文将深入探讨SDC沙箱…