DBA面试总结(Oracle篇)

  一、备份恢复

1. RMAN备份是一种用于备份和恢复数据库文件归档日志和控制文件的工具软件,主要执行的是物理备份,可以执行完全或不完全的数据库恢复。既能支持热备,在归档模式下,RMAN可以执行在线备份。在非归档模式下,RMAN备份通常在数据库处于mount状态下进行。RMAN备份具有以下优点:支持增量备份,可以节省备份时间和空间。自动管理备份文件,无需手动指定文件名或位置,自动化备份和恢复,无需手动执行复杂的步骤。不产生重做信息,减少I/O开销,支持映像复制可以直接使用操作系统命令拷贝或恢复文件。

2. 闪回技术:alter database flashback on;

二、Oracle性能优化

1. Oracle优化器:

是一种用于生成执行计划的组件,他可以根据不同的优化目标(如成本规则,选择性)选择最佳的访问路径和连接方法。

2.Oracle统计信息:

是一种用于收集和维护数据库对象(如表,索引,列)的特征信息 例如大小 技术分布等,他可以帮助优化器生成更准确的执行计划。

3.Oracle 自动工作负载存储库(AWR):

是一种用于收集好存储数据库的性能数据的工具,他可以定期生成快照记录数据库的活动和资源消耗情况

4.Oracle 自动数据库诊断监听器 ADDM:

是一种用于分析AWR数据并提供性能优化建议的工具它可以识别数据库中存在的瓶颈和等待事件。

5.Oracle企业管理器(OEM):

是一种用于监控和管理数据库的图形界面工具它可以提供多种寻个能优化功能,例如性能仪表板,sql调优顾问,sql访问顾问等

三、内存结构

内存结构:

SGA(System Global Area):

SGA是一块内存区域,用于存储数据库实例的共享数据和结构。它包括缓冲池、共享池、重做日志缓冲区等。AMM 是一种自动内存管理技术,它允许数据库实例根据需要自动调整和管理内存分配。

  1. 共享池(Shared Pool):这是内存中最关键的部分之一,用于缓存程序数据。共享池包括库高速缓存区(Library Cache),用于存储已经解析过的SQL的信息;数据字典缓存(Data Dictionary Cache),用于存放系统参数;以及结果高速缓存(Result Cache),用于存储和检索高速缓存的结果。
  2. 固定SGA(Fixed SGA):存储了内存中其他区的位置。
  3. 重做缓冲区(Redo Buffer):如果数据需要写到在线重做日志中,则在写至磁盘之前要在Redo Buffer中临时缓存这些数据。

此外,SGA还包括以下组件:

  • 数据缓冲区(Database Buffer Cache):用于缓存数据库中的数据块,是Oracle读取磁盘数据时的重要缓存区域。
  • 大型池(Large Pool):主要用于大型内存分配,如分布式数据库操作和多个实例的共享服务器。
  • Java池(Java Pool):用于存储Java代码和数据,允许Oracle数据库在存储过程和函数中执行Java代码。
  • 流池(Streams Pool):用于Oracle流复制操作,允许在数据库之间复制数据和更改。

通过设置 SGA_TARGET 参数,AMM 可以自动分配和释放共享池、数据库缓冲区和重做日志缓冲区等共享内存组件的大小,以适应实际工作负载的变化。AMM 简化了内存管理的过程,并且对于许多小型到中型数据库是一个方便且有效的选项。

ASMM 是 AMM 的一个特定功能,用于自动管理 SGA 内存中的共享池和数据库缓冲区的大小。ASMM 会根据实际需求动态调整这些内存组件的大小,以提供最佳性能和资源利用率。ASMM 主要关注 SGA 内存的管理,而没有涉及其他内存结构,比如 PGA(Program Global Area)。

总结来说,AMM 是一种更广义的自动内存管理技术,包括对SGA和PGA 的管理,而 ASMM 是 AMM 中专注于自动管理 SGA 内存的一个具体功能。选 择使用哪种技术取决于数据库管理员对内存管理的需求和偏好,以及数据库 的规模和工作负载。

PGA(Program Global Area):

PGA是每个用户进程独立使用的内存区域,用于存储会话特定的数据和变量

PGA主要包含以下几个部分:

  1. 排序区(Sort Area):当Oracle执行排序操作时(例如ORDER BY子句或GROUP BY子句),它会在排序区中分配内存。如果排序的数据量很大,不足以在排序区中容纳,Oracle会执行磁盘排序,这通常比内存排序慢得多。

  2. 哈希区(Hash Area):当执行哈希连接或哈希聚合操作时,Oracle会使用哈希区。与排序区类似,如果哈希操作需要的内存超过哈希区的大小,Oracle会回退到磁盘操作。

  3. 会话信息(Session Information):这部分内存包含了关于当前会话的元数据信息,例如当前打开的游标、变量绑定信息、事务信息等。

  4. 堆栈空间(Stack Space):用于存储进程调用栈的信息,包括函数和过程的局部变量等。

四、后台进程

DBWn(Database Writer):负责将数据库缓冲区中的数据写回磁盘,以保证数据的持久性。

LGWR(Log Writer):负责将日志缓冲区中的日志写入到磁盘上的在线重做日志文件,用于数据库的恢复和事务的持久性

PMON(Process Monitor):负责监控和管理用户进程。当用户进程异常终止或断开连接时,PMON会清理相关资源,并发起必要的恢复操作。

SMON(System Monitor):负责系统级的维护任务,包括实例恢复、空间管理和垃圾回收等。

CKPT(Checkpoint Process):负责定期向数据文件和控制文件写入检查点,以确保数据库在恢复时可以从一致的状态开始。将数据库中的脏数据(已经被修改但尚未写入磁盘)刷新到磁盘,同时将当前的SCN(系统变化编号)更新到数据文件头部,以确保数据库在恢复时能够正确地还原到一致的状态。此外,checkpoint 也有助于控制数据库的恢复时间,并减少数据库在恢复过程中需要重做的工作量

五、OracleRAC中scan ip 和vip

vip一个数据库实例虚拟IP地址,主要用于提供数据库服务的访问入口。当实例故障时,VIP会自动切换到其他节点上的实例,VIP与实例绑定,客户端的tnsname.ora一般会配置指向节点的VIP;

scan ip作为RAC集群的一个虚拟IP地址,其作用是充当应用程序和数据库之间的桥梁。客户端可以通过SCAN IP地址连接到整个集群,客户端可以通过SCAN特性负载均衡地连接到RAC数据库SCAN提供一个域名来访问RAC,域名可以解析1个到3个(注意,最多3个)SCAN IP,我们可以通过DNS或者GNS来解析实现.

连接到 SCAN IP LISTENER,而SCAN IP LISTENER接收到连接请求时,会根据 LBA 算法将该客户端的连接请求,转发给对应的instance上的VIP LISTENER。

六、RAC集群的后台进程

  1. LMSn (Global Cache Service Process):

    • LMSn进程维护Global Resource Directory (GRD)中的数据文件以及每个cached block的状态。
    • 它负责在RAC的实例间进行message以及数据块的传输,实现Global Cache Service (GCS)。
    • LMSn是Cache Fusion的一个重要部分,确保数据在集群中的一致性。
    • LMSn进程在RAC上非常活跃,可能会消耗较多的CPU资源。
    • LMS进程还负责全局死锁的检测任务,并监控锁转换是否超时。
  2. LMD (Global Enqueue Service Daemon):

    • LMD进程主要管理全局队列和资源的访问,确保资源在集群中的正确分配和使用。
    • 它处理来自其他实例的资源请求,并更新队列的状态。
    • LMD还负责处理死锁情况,确保资源不会被长时间锁定而导致其他实例无法访问。
  3. LMON (LOCK Monitor Processes):

    • LMON进程也被称为Global enqueue service monitor,负责监控整个集群的状态。
    • 它维护GCS的内存结构,监控非正常终止的进程和实例。
    • 当实例离开或加入集群时,LMON负责锁和资源的重新配置。
    • 它还管理全局的锁和资源,处理死锁和阻塞情况。
  4. LCK (Lock Process):

    • LCK进程主要处理非cache fusion的资源请求,例如library和row cache请求。
    • 它与其他进程合作,确保资源的正确分配和使用。

七、Oracle GI集群的启动顺序

  1. 启动OHASD组件:GI的启动必须首先启动OHASD组件。在Linux环境中,OHASD作为一个shell脚本存在,路径为/etc/init.d/init.ohasd。这个脚本会随着操作系统的启动而被拉起。在Linux 7及更高版本中,init.ohasd可能会被systemd以服务的形式启动。确保init.ohasd脚本被正确调用,并且OS运行在正确的级别上。如果OHASD没有正确启动,可能会导致GI无法自动启动。
  2. 检查OLR和网卡:在OHASD启动后,OLR(Oracle Local Registry)会被访问。因此,需要确保OLR存在且能够正常访问。此外,还需要确定集群中的网卡支持多播,并且节点间的通信正常。
  3. 启动GI服务:GI的启动可以通过两种方式实现:一种是伴随着操作系统的启动而自动启动GI,另一种则是使用crsctl start crs命令手动启动GI。不论采用哪种方式,都需要确保有init.ohasd进程存在。
  4. 确认GI是否正常启动:输入命令检查状态crsctl check cluster

八、大页的使用

大页(Hugepages)的使用是为了提高性能,减少页交换,特别在物理内存较大的系统中。大页占用的内存量取决于系统配置和可用的物理内存。每个大页的尺寸通常是标准页(通常为4K)的倍数,比如2M或更大。通过配置大页,Oracle可以更高效地管理内存,减少操作系统对页面状态的维护,并提高TLB(转换旁路缓冲区)缓存命中率。

九、磁盘组中的au_size

磁盘组中的au_size,AU(Allocate Unit)是磁盘组分配空间的最小单位。AU的大小可以通过设置AU_SIZE的属性值来指定。从Oracle 11.1版本开始,AU的大小可以是1MB、2MB、4MB、8MB、16MB、32MB或64MB。如果不指定AU的大小,默认值通常是1MB

十、RAC 集群的心跳机制

  1. 网络心跳:这是RAC心跳机制中最为核心的部分。通过LMON进程,每个实例会定期通过数据库的私网(即内存融合使用的网络)与其他所有实例进行通信,以确认彼此的状态。如果某个实例在一段时间内(默认是300秒)不能响应其他节点发送的网络心跳信息,那么数据库集群会进行重新配置。此外,除了LMON进程,本地实例的LMS、LMD和LCK0等进程也会与远程节点对应的进程进行通信,以检测彼此之间的状态。
  2. 磁盘心跳:RAC中的磁盘心跳主要用于检测存储层面的连通性和状态。虽然其基本原理与集群层面的磁盘心跳相似,但由于数据库层面没有VF(虚拟文件系统)存在,实现方式会有所不同。磁盘心跳能够确保节点在存储层面也能够保持连通和状态同步。
  3. 本地心跳:本地心跳是节点自我监控的一种方式。通过本地心跳,节点能够将自己的状态信息发送给CSSDAGENT和CSSDMONITOR等进程,实现自我监控。这样,当节点遇到问题时,能够自我处理,更好地维护节点的一致性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 统一功能处理(二)

本篇主要介绍Spring Boot统一功能处理中的统一数据返回格式。 目录 一、定义统一的返回类 二、配置统一数据格式 三、测试配置效果 四、统一格式返回的优点 五、源码角度解析String问题 一、定义统一的返回类 在我们的接口在处理请求时,返回的结果可以说是参…

判断位数、按位输出、倒序输出(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int number 0;int i 1;int m 0;int z 0;int z1 0, z2 0, z3 0, z4 0;//提示用户&#xff1b;printf("请输…

编程新手必看,Python3中函数知识点及语法学习总结(18)

介绍&#xff1a; Python3中的函数是组织好的、可重复使用的代码段&#xff0c;用于实现单一或相关联的功能。 以下是Python3中函数的一些基本介绍&#xff1a; 函数定义&#xff1a;在Python中&#xff0c;可以通过def关键字来定义一个函数。函数定义后&#xff0c;可以多次调…

ADB的基本语法及常用命令

学习网址 ADB命令的基本语法如下&#xff1a; adb [-d|-e|-s <serialNumber>] <command> 如果有多个设备/模拟器连接&#xff0c;则需要为命令指定目标设备。 参数及含义如下&#xff1a; 常用命令如下&#xff1a; 1. 启动ADB服务 adb start-server 2. 停止…

【ROS2笔记六】ROS2中自定义接口

6.ROS2中自定义接口 文章目录 6.ROS2中自定义接口6.1接口常用的CLI6.2标准的接口形式6.3接口的数据类型6.4自定义接口Reference 在ROS2中接口interface是一种定义消息、服务或动作的规范&#xff0c;用于描述数据结构、字段和数据类型。ROS2中的接口可以分为以下的几种消息类型…

腾讯云优惠券领取及使用教程详解

腾讯云作为国内领先的云服务提供商&#xff0c;以其稳定可靠、性能卓越的服务赢得了广大用户的青睐。为了回馈用户&#xff0c;腾讯云经常推出各种优惠活动&#xff0c;其中优惠券就是非常受欢迎的一种。本文将详细介绍腾讯云优惠券的领取和使用方法&#xff0c;帮助大家更好地…

【c语言】结构体的访问

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

记录 OpenHarmony 使用 request.uploadFile 时踩的坑

​ 开发环境 设备环境&#xff1a;OpenHarmony 4.1.x SDK 版本&#xff1a;API 10 开发模型&#xff1a;Stage 模型 IDLE: Dev Eco 4.1 官方文档 踩坑一&#xff1a;后台服务地址 上传文件依赖后台服务器&#xff0c;如果使用本地搭建的服务&#xff0c;是无法访问的&…

两部电话机怎样能实现对讲?直接连接能互相通话吗?门卫门房传达室岗亭电话怎么搞?

目录 两部电话机能直接连接吗&#xff1f;用三通头分出来一条电话线两部电话机用一根电话线直接连接能互相通话吗&#xff1f; 什么电话机可以直接连接两部IP电话机&#xff08;网络电话机&#xff09;可以直接连接两部普通电话机之间通过一个电话交换机也可以连接跨区域的两部…

Avalonia中嵌入网页程序(CefNet)

Avalonia中嵌入网页程序cefNet 1. 引入CefNetNuget包2. 下载 cef 基础环境3. 将cef基础环境放入程序运行目录下4. 代码中初始化cef5. 添加Webview控件6. 在窗口关闭的时候释放Cef7. 项目结构图CefNet 开源的作者已经停止维护并删除了原始的代码库:GetHub:CefNet,Nuget上还有发…

【简单介绍下单片机】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Python编程之旅:深入探索强大的容器——列表

在Python编程的世界中&#xff0c;容器&#xff08;Containers&#xff09;是一种用于存储多个项目的数据结构。其中&#xff0c;列表&#xff08;List&#xff09;是最常用且功能强大的容器之一。无论是初学者还是资深开发者&#xff0c;掌握列表的使用方法和技巧都是提升Pyth…

引导和服务(2)

服务 1.systemd服务的简要介绍 &#xff08;1&#xff09;对比5 6 可以解决依赖关系并行启动 &#xff08;2&#xff09;按需启动 &#xff08;3&#xff09;自动解决依赖关系 负责在系统启动或运行时&#xff0c;激活系统资源&#xff0c;服务器进程和其它进程 2.System…

Python 处理地理空间异常值:基于 MAD 的简单方法

就像任何其他数据一样,在处理地理空间数据时,识别和纠正异常值是数据准备中的关键步骤,可确保任何后续分析的准确性。异常值可能会严重扭曲空间分析的结果,从而导致错误的结论。虽然还有其他方法可以解决此问题,但处理这些异常值的一种直接有效的方法是使用中值绝对偏差 (…

第十一届土木与城市工程国际会议(ICCUE 2024)即将召开!

第十一届土木与城市工程国际会议&#xff08;ICCUE 2024&#xff09;将于2024年8月20-22日在意大利罗马召开。土木与城市工程&#xff0c;作为人类社会发展的重要基石&#xff0c;承载着推动城市繁荣、提升人民生活质量的重任。ICCUE 2024的召开&#xff0c;旨在搭建一个国际化…

HDLbits 刷题 --Mux2to1

Create a one-bit wide, 2-to-1 multiplexer. When sel0, choose a. When sel1, choose b. 译&#xff1a; 创建一个1位宽的2对1多路复用器。当sel0时&#xff0c;选择a。当sel1时&#xff0c;选择b。 个人解法&#xff1a; module top_module( input a, b, sel,output out …

IO流-IO框架

简介 java的IO流操作提供了最简单的操作&#xff0c;第三方基于日常使用习惯&#xff0c;写了很多IO框架&#xff0c;更加方便操作避免重复造轮子&#xff0c;提高开发效率 Commons-io 简介 Commons-io是apche提供的IO操作的小框架 部分常用的API 引入依赖 <dependency>…

mbti,ESFP型人格的心理问题分析

什么是ESFP型人格&#xff1f; ESFP分别代表的是外向&#xff0c;实感&#xff0c;情感和依赖&#xff0c;ESFP型人格则是一种性格上活泼开朗&#xff0c;富有同情心的一种性格&#xff0c;具有这种人格的人在日常生活当中&#xff0c;社交能力十分突出&#xff0c;活泼开朗&a…

高级IO和5种IO模型

目录 1. 高级IO1.1 IO的基本概念1.2 OS如何得知外设当中有数据可读取1.3 OS如何处理从网卡中读取到的数据包1.4 IO的步骤 2. 五种IO模型2.1 利用钓鱼来理解2.2 阻塞IO2.3 非阻塞IO2.4 信号驱动IO2.5 IO多路转接2.6 异步IO 3. 高级IO的概念3.1 同步通信 VS 异步通信3.2 阻塞 VS …

《剑指 Offer》专项突破版 - 面试题 107 : 矩阵中的距离(C++ 实现)

题目链接&#xff1a;矩阵中的距离 题目&#xff1a; 输入一个由 0、1 组成的矩阵 M&#xff0c;请输出一个大小相同的矩阵 D&#xff0c;矩阵 D 中的每个格子是矩阵 M 中对应格子离最近的 0 的距离。水平或竖直方向相邻的两个格子的距离为 1。假设矩阵 M 中至少有一个 0。 …
最新文章