Oracle数据库体系结构(二)_物理结构

2023-09-14 12:41:59

目录

1  概述

2  物理结构

2.1  数据文件

2.2  控制文件

2.4  归档日志文件

2.5  参数文件

2.6  警报文件

2.7  跟踪文件

2.8备份文件

3  总结


1  概述

        存储结构是Oracle数据库的体系结构之一,是Oracle管理的基础。Oracle存储结构可分为物理结构和逻辑结构。  一个数据库的物理结构可包括数据文件、联机日志文件和控制文件及其他的一些文件,如归档日志文件、参数文件等。逻辑结构可由数据块、区、段和表空间组成。

物理结构与逻辑结构关系图如下

通过本文的学习可把握Oracle数据库存储结构中关于物理结构的来龙去脉。

2  物理结构

       Oracle物理结构:主要用于描述在 oracle  数据库外部数据的存储,即在操作系统层面中如何组织和管理数据,与具体的操作系统有关

 一个数据库的物理结构可包括数据文件(Datafiles)、联机日志文件(Online Redo Logs)和控制文件(Control Files)组成,如图一,这是严格意义上的物理结构组成。除此之外,组成Oracle的还有一些其他额外的数据文件,如归档日志文件(Archive Log Files)、参数文件(Paramter Files)、警报文件(Alert Files)、跟踪文件(Trace Files)等 

2.1  数据文件

        一个数据库有多个数据文件,每个数据文件都是操作系统的一个文件。数据文件正在存储的是数据库的数据。常用的数据库的表数据、索引数据在物理上都是存放在数据文件中的

        数据文件具有以下特征:

  1. 一个数据文件只能属于一个数据库
  2. 数据文件可以被设置成自动扩展
  3. 一个或多个数据文件形成一个表空间
  4. 一个数据文件只能属于一个表空间

2.2  控制文件

       在一个数据库中至少应该有一个控制文件,一个控制文件只属于一个数据库。用于存放数据库的物理结构信息,它是一个很小的二进制数据文件,在创建数据库时创建。当数据库的物理结构发生改变时,Oracle会自动更新控制文件,用户不可修改该文件。

       在数据库启动时,Oracle会从初始化参数文件中获取控制文件的名称和存放位置,打开控制文件,然后从控制文件中读取数据文件和联机日志文件信息,最后打开数据库;在运行时,Oracle会修改控制文件,所以数据库的启动和运行都离不开控制文件,一旦控制文件损坏,数据库也将无法正常运行

       控制文件主要记录以下数据库相关的信息

  1. 数据库名称
  2. 创建数据库的时间戳
  3. 数据文件、联机日志文件的名称和位置
  4. 表空间信息
  5. 日志历史文件
  6. 归档日志信息
  7. 备份信息
  8. 当前的日志序列号
  9. 校验点信息

       控制文件的参数及Oracle11G官方文档额限定值

序号参数用途最小值  最大值
1MAXLOGFILES用于指定oracle数据库的最大日志组个数16225
2MAXLOGMEMBERS用于指定每个日志组的最大日志成员个数25
3MAXLOGHISTORY用于指定控制文件可记载日志历史的最大个数10065534
4MAXDATAFILES用于指定oracle数据库的最大数据文件个数3065534
5MAXINSTANCES用于指定可以同时访问数据库的最大例程个数163

2.3  联机日志文件

        联机日志文件是数据库的物理结构之一,用于记录用户对数据库的改变,防止数据丢失,主要用于对数据的恢复。如数据库由于发生意外,导致内存中的数据未及时写入到数据文件中,当下一次数据库启动时,Oracle数据库会从联机日志文件中获取丢失的数据,然后将获得的数据写入到数据文件中的。

       一个数据库实例中有一组或多组联机日志组(Redo Log Group),每个联机日志组中有一个或多个联机日志文件。每一个数据库实例至少需要两个联机日志组,同一组中每个联机日志文件的内容完全相同

        由日志书写进程LGWR负责将日志条目(Redo Records/Redo Entry)写入到联机日志文件中。一个日志条目有一系列的改变因子组成,一个改变因子用于描述一次对某个数据块的改变

        日志条目用于重构对数据库的改变,在进行数据库实例恢复时,Oracle读取日志条目中的改变因子,然后把这些改变因子应用到对应的块。

联机日志文件写入方式

    后台 进程LGWR负责将日志缓冲区中的日志条目写入到联机日志文件中。当用户commit一个事务,LGWR就将这个事务的回滚条目写入联机日志文件,并赋予一个改变标识(System Change Number 即SCN)用于标识这个事务的日志条目。只有当这个事务的日志条目被成功写到磁盘上的联机日志文件中,这个事务的提交才算完成。

当满足以下条件时,LGWR进程会自动将日志缓冲区中的日志条目写入到联机日志文件中

  1. 每隔3秒钟
  2. 一个用户提交一个事务
  3. 日志缓冲区被填满1/3
  4. 日志缓冲区的日志大小接近1MB的日志数据
  5. 发生校验点

2.4  归档日志文件

        归档:即Oracle将填满的联机日志文件复制到一个或多个路径进行存储的过程称为归档,这样生成的文件也叫做归档日志文件。存放归档文件的路径叫归档路径,只有数据库是运行在归档模式的场景下才能进行归档,归档的过程通常情况下由归档进程自动完成。一个数据库可以有一个或多个归档进程,归档进程的数量有初始化参数LOG_ARCHIVE_MAX_PROCESSES进行控制

       归档日志文件的作用:用于数据库顶顶顶恢复

       数据库运行模式:非归档模式和归档模式

非归档模式

        若数据库运行在非归档模式下,则表示联机日志文件不需要归档

        非归档模式只保护数据库实例失败,不保护介质失败,当发生介质损坏时,则需要还原数据库的全备份,然后再执行恢复。在非归档模式下,一旦发生介质损坏,将会发生数据得到丢失。在此模式下数据库管理员不能执行数据库的热备份,但可以关闭数据库,执行数据库的冷备份

归档模式

         若数据库运行在归档模式下,数据库的控制文件将指示,如果联机日志文件没有归档,日志书写进程则不能覆盖联机日志文件。数据库管理员可以启动归档进程,让归档进程自动完成联机日志文件的归档,也可以进行手动归档

归档路径

       归档路径参数设置

       LOG_ARCHIVE_DEST= filepath :设置一个归档路径 

       LOG_ARCHIVE_DEST_n = path :设置多个归档路径,n的取值范围1-10,n参数选项LOCATION、SERVICE

       LOCATION:指定将联机日志文件归档到本地的文件系统,如:LOG_ARCHIVE_DEST_1='LOCATION=desk/xxx'

       SERVICE:指定将联机日志文件归档到远程服务器,如:LOG_ARCHIVE_DEST_1='SERVICE=desk_xxx'

        归档路径状态

        VALID:用户已初始化归档路径,归档路径有效,可用于文件归档

        INACTIVE:无效的归档路径

        ERROR:创建路径或往路径中写文件时发生错误

        FULL:路径已被填满,没有额外的磁盘存储空间

        DEFERRED:用户临时禁用该归档路径

        BAD PARAM:参数发生错误

        归档日志文件格式

2.5  参数文件

        参数文件也叫初始化参数文件,用于存放数据库和数据库实例的参数。这些参数用于指定控制文件的位置、联机日志文件的位置及控制内存分配。

         参数文件分为普通初始化参数文件(Initialization Parameter File 即PFILE)和服务器参数文件(Server Parameter File 即SPFILE),在数据库启动时,Oracle将加载这两个文件中的信息。

初始化参数文件(PFILE)

      初始化参数文件(PFILE)是本地文本参数文件,可以进行手工修改其中的内容,文件名通常为init<SID>.ora,oracle只在实例启动时读取该文件,因此所做的修改要在实例下次启动时才能起作用。

主要内容

  1. 实例名和该实例相关的数据库名
  2. 控制文件名和位置
  3. 系统全局区的配置
  4. 还原段(回滚段)的配置
  5. 该实例所能同时启动的进程数
  6. 标准数据块的大小
  7. 是否允许DBA远程登录

动态服务器参数文件(SPFILE)

        从Oracle 9i开始,提供的动态服务器初始化参数文件,是一个二进制参数文件,不可对其进行修改,在数据库实例运行时,Oracle可动态修改。文件名通常为spfile<SID>.ora,总是保存在服务器上,默认存储在$ORACLE_HOME\dbs下。

2.6  警报文件

        用于记录数据库的重大活动和发生得到错误,警报文件按照时间先后记录发生的事件。它除了记录数据库中发生的错误外,还记录记录数据库中发生的重大事件。

        警报文件的内容

  1. 每次数据库启动和关闭的详细信息
  2. 数据库管理员的某些管理操作,如Alter System、Alter DataBase、CREATE、DROP语句等
  3. 某些数据库错误,如Oracle的内部错误、空间错误等
  4. 共享服务器相关的信息和错误
  5. 值是非默认值的初始化参数信息
  6. 物化视图自动刷新产生的错误

        警报文件的名称格式通常为 alert_SID.log,不可修改,其中SID表示数据库的实例名,文件从存储位置有初始化参数BACKGROUND_DUMP_DEST指定。通常存储在%ORACLE_HOME%/diag/rdbms/chenmu/chenmu/trace目录下

可用以下命令获取该文件的具体位置

SQL> show parameter background_dump_dest

     NAME                   TYPE           VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest         string      f:\app\diag\rdbms\lsxddb\lsxddb\trace


SQL> select * from v$diag_info;

   INST_ID NAME                     VALUE
---------- ------------------------------------------------------------
         1 Diag Enabled             TRUE
         1 ADR Base                 f:\app
         1 ADR Home                 f:\app\diag\rdbms\xddb\xddb
         1 Diag Trace               f:\app\diag\rdbms\xddb\xddb\trace
         1 Diag Alert               f:\app\diag\rdbms\xddb\xddb\alert
         1 Diag Incident            f:\app\diag\rdbms\xddb\xddb\incident
         1 Diag Cdump               f:\app\diag\rdbms\xddb\xddb\cdump
         1 Health Monitor           f:\app\diag\rdbms\xddb\xddb\hm
         1 Default Trace File       f:\app\diag\rdbms\xddb\xddb\trace\xddb_ora_1552.trc
         1 Active Problem Count                                             0
         1 Active Incident Count                                            0

11 rows selected

2.7  跟踪文件

        跟踪日志文件又叫做跟踪文件,每个服务器进程和后台进程都会写跟踪文件,当后台进程检测到错误时,Oracle会将错误信息写到跟踪文件中。Oracle跟踪文件中包含了大量而详细的诊断和调试信息,因此通过对跟踪文件的解读和分析,我们可以定位问题、分析问题和解决问题,可分析后台进程是否发生错误。

        跟踪文件又可以分为两类:一类是数据库的操作人员有意生成的;另一类则是由于出现了异常错误,由数据库自动生成的。对于后一类,只对Oracle内部的技术支持人员是有用的,但对于我们,则多半看不懂。前一类,则是我们经常用到的,帮助我们分析、调整和优化应用性能,处理并解决问题

        跟踪文件信息被写到两个数据目录中,与后台进程(Background Processes)相关的信息写到初始化参数BACKGROUND_DUMP_DEST指定的目录;与服务器进行(Server Processes)相关的信息写到初始化参数USER_DUMP_DEST指定的目录。

跟踪文件的命名规则

一个跟踪文件的名字一般由以下几部分组成:

  • 数据库实例名SID
  • 固定字符
  • 服务器的进程ID号
  • 文件后缀名 .trc
  • 各部分之间以下划线连接。 

     例如:xddb_cjq0_3852.trc,其中:“xddb" 是本环境下数据库的SID,"12210"为产生该跟踪文件会话所使用的服务器进程ID号

2.8备份文件

        所谓备份文件就是数据库备份生成的文件,当数据库发生介质损坏时,需要从这些文件中还原数据库,然后执行数据库恢复

3  总结

         通过本文了解了Oracle数据库的物理结构和逻辑结构的关系,详细总结了物理结构的组成,详细阐述了个组成部分的定义及作用。

更多推荐

Java手写决策树和决策树应用拓展案例

Java手写决策树和决策树应用拓展案例1.算法思维导图以下是用mermaid代码表示的决策树算法实现原理的思维导图:#mermaid-svg-DWczpr7jTBRHS9bA{font-family:"trebuchetms",verdana,arial,sans-serif;font-size:16px;fill:#

JMeter:接口测试基础介绍

一、什么是接口接口是非常抽象的概念,先来看下中国最大的综合性辞典《辞海》是怎样定义接口的:两个不同系统或系统中两个不同特性部分的交接部分。一般分硬件接口和软件接口两种。前者是为连接计算机各部分之间、计算机与计算机之间、计算机与外部系统之间而专门设计的连接线及有关逻辑控制电路;后者是为连接两个程序层或块而专门设计的程序或

怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?

文章目录序幕概述1.安装PHP2.安装MySQL数据库3.安装Wordpress4.设置您的WordPress数据库设置MySQL/MariaDB创建WordPress数据库5.WordPressconfiguration6.将WordPress站点发布到公网安装相对URL插件修改config.php配置7.支持好友链

基于Java咖啡商品管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

WebLOAD: 一站式性能测试工具

WebLOAD是一款一站式前端性能测试工具,对测试人员来说使用非常方便。它可以帮助前端工程师和测试快速对网页进行性能测试和优化,提高网页加载速度,减少页面卡顿和闪烁。WebLOAD的特点、使用指南以及企业实际使用中的案列。WebLOAD的特点功能丰富:WebLOAD集成了众多前端性能测试工具,如前端性能分析、首屏时间预

算法刷题 week1 找出数组中重复的数字&不修改数组找出重复的数字

目录week11.找出数组中重复的数字题目数据范围样例题解(数组遍历)O(n)2.不修改数组找出重复的数字题目数据范围样例题解(分治,抽屉原理)O(nlogn)week11.找出数组中重复的数字题目给定一个长度为n的整数数组nums,数组中所有的数字都在0∼n−1的范围内。数组中某些数字是重复的,但不知道有几个数字重复

MySQL

当谈到数据库管理系统时,MySQL通常是许多开发者和数据专业人士的首选。MySQL是一种开源的关系型数据库管理系统,广泛用于Web应用程序、企业应用程序和各种数据驱动的应用。在这篇博客中,我们将深入探讨MySQL的重要性、用途、基本概念以及如何开始使用它。什么是MySQL?MySQL是一个关系型数据库管理系统(RDBM

3.3 DLL注入:突破会话0强力注入

Session是Windows系统的一个安全特性,该特性引入了针对用户体验提高的安全机制,即拆分Session0和用户会话,这种拆分Session0和Session1的机制对于提高安全性非常有用,这是因为将桌面服务进程,驱动程序以及其他系统级服务取消了与用户会话的关联,从而限制了攻击者可用的攻击面。由于DLL注入在Se

警惕!多本SCI/SSCI被剔除,9月SCI/SSCI期刊目录已更新~(附下载)

【SciencePub学术】2023年9月20日,科睿唯安更新了WebofScience核心期刊目录。继上次SCI期刊目录和SSCI期刊目录更新之后,本次9月更新共有9本期刊发生变动:•SCIE:有3本期刊不再被SCIE期刊目录收录(EditorialDe-listing/ProductionDe-listing),1

避雷!这9本期刊已被剔除!9月SCI/SSCI目录已更新(附2023年WOS历次更新全目录)

2023年9月20日,科睿唯安更新了WebofScience核心期刊目录。此次更新后SCIE期刊目录共包含9490本期刊,SSCI期刊目录共包含3552本期刊。此次SCIE&SSCI期刊目录更新,与上次更新(2023年8月)相比,共有9本期刊发生变动。其中有3本SCIE期刊因不满足收录的质量标准或未从出版社接收到相关内

基于Java+SpringBoot+Vue+echarts校园资料分享平台设计和实现

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

热文推荐