DBA面试题

2023-12-15 23:25:35

在这里插入图片描述在这里插入图片描述

Oracle体系结构
(1)、Oracle实例内存中包含哪些部分?
答: sga与pga
sga:是一组共享的内存区域,包含数据字典缓存、库缓存、重做日志缓冲区
Pga:为每个服务器进程分配的非共享内存,存储会话状态和私有SOL工作区


在Oracle数据库中,实例内存主要包含以下几个关键部分:

1. **SGA(System Global Area) - 系统全局区域:**

   - **Buffer Cache(缓冲区高速缓存):** 用于存储数据块的内存区域,提高对数据库块的访问速度。
   - **Shared Pool(共享池):** 包含共享SQL和PL/SQL的解析结果、游标、共享的PL/SQL过程等。
   - **Redo Log Buffer(重做日志缓冲区):** 用于暂存事务的重做信息,以便在发生故障时进行恢复。
   - **Java Pool:** 用于存储Java对象和代码的内存区域。

2. **PGA(Program Global Area) - 程序全局区域:**

   - **Sort Area:** 用于执行排序操作的内存区域。
   - **Session Memory:** 包含每个会话的私有内存,如私有SQL区域、运行时连接信息等。

   

这些区域共同构成了Oracle数据库实例的内存结构,其中SGA是由所有用户共享的,
而PGA是针对每个用户会话的私有内存。这种架构有助于提高数据库的性能和并发处理能力。

(2) Oracle redolog 是做什么的?
答:用于保证事务持久性和数据库一致性的重要机制。当用户对数据库进行修改时,重做日志会记录下这些修改操作的详细信息。如果在事务提交之前发生系统崩溃或电源故障,重做日志可以用来恢复未完成的事务,确保数据的一致性。

Oracle的Redo Log是一种关键的组件,
它记录数据库中发生的所有修改。Redo Log的主要目的是确保数据库的持久性和恢复性。以下是Redo Log的主要功能:

1. **恢复:** Redo Log记录了数据库发生的所有变更,包括插入、更新和删除操作。在数据库发生故障时,可以使用Redo Log来还原数据库到故障发生前的状态,确保不会丢失已提交的事务数据。

2. **事务持久性:** 在事务提交时,相应的Redo Log记录被生成。这确保了即使在事务提交后,如果系统崩溃,数据库也可以通过Redo Log进行恢复,保持数据的一致性。

3. **并发控制:** Redo Log也用于支持数据库的并发控制。通过记录数据的修改,可以在需要的时候重演这些修改,以确保在多用户环境中事务的隔离性和一致性。

4. **物理数据库备份:** Redo Log还用于支持物理数据库备份。备份工具可以使用Redo Log文件来获取数据库的变更,从而创建数据库的一致备份。

Redo Log包括两部分:在线Redo Log和归档Redo Log。

- **在线Redo Log:** 这是处于活动状态的Redo Log,它记录当前正在进行的事务的变更。在线Redo Log文件是一组物理文件,它们轮流用于记录Redo信息。这些文件的大小和数量可以进行配置。

- **归档Redo Log:** 当在线Redo Log文件被写满时,或者在归档模式下,系统可以将Redo Log文件归档到归档Redo Log中。这些归档文件允许进行数据库恢复以及创建物理备份。

总的来说,Oracle Redo Log是数据库的关键组件之一,确保了数据的持久性、一致性和可恢复性。

(3) Oracle启动的几种模式,各个阶段用到哪些文件?
答:nomount 用到参数文件
mount 用到控制文件
OPEN数据文件。

在Oracle数据库的启动过程中,通常会经历以下几个阶段,并涉及到一些特定的文件:

1. **Nomount 阶段:**
   - **参数文件(init.ora 或 spfile.ora):** 包含了数据库的配置信息,如SGA大小、PGA大小、监听器信息等。
   - **控制文件(Control Files):** 包含数据库的结构信息,如数据文件和日志文件的位置,表空间和数据文件的关系等。

2. **Mount 阶段:**
   - **控制文件:** 在这个阶段,Oracle数据库会读取控制文件,但不会打开数据库。这个阶段的目的是将数据库标记为已挂载状态,使得数据库文件能够被识别。

3. **Open 阶段:**
   - **数据文件(Data Files):** 包含了实际存储数据的文件。在数据库打开时,这些文件会被访问。
   - **Redo Log Files:** 包含了数据库中所有事务的重做信息。这些文件在数据库打开时被读取,以确保事务的持久性和一致性。
   - **Undo Tablespaces 和 Undo Logs:** 用于存储回滚段信息,以支持事务的回滚操作。

4. **恢复阶段:**
   - **Archived Redo Log Files:** 如果数据库配置为启用归档模式,数据库启动时可能需要应用归档的重做日志,以确保数据库处于最新的状态。

在实际的启动过程中,可以使用不同的方式来启动Oracle数据库,比如使用SQL*Plus命令行工具、Enterprise Manager图形界面、或者使用操作系统的服务管理工具。无论采用何种方式,上述的文件都是在启动过程中被读取和使用的。

2.rac相关问题
(1) oracle rac有哪些IP?
答: Public ip
Private ip
Virtual ip (VIP)
Scan ip

Oracle Real Application Clusters(RAC)是一种Oracle数据库的配置,它允许在多个服务器上运行数据库实例,实现高可用性和负载均衡。在Oracle RAC中,可以涉及多个IP地址,其中一些主要的IP地址包括:

1. **Public IP:** 这是集群中的公共IP地址,用于提供数据库服务给客户端应用程序。客户端通过此IP地址连接到Oracle数据库。每个节点通常都有一个公共IP地址。

2. **Private IP:** 这是集群中的专用IP地址,用于节点之间的内部通信。私有IP地址用于实现高速、低延迟的节点之间通信,以确保集群的协同工作。每个节点通常都有一个私有IP地址。

3. **Virtual IP(VIP):** RAC集群中的每个节点都有一个虚拟IP地址,这个地址是在节点发生故障时自动切换到另一个节点的。VIP地址用于确保客户端总是能够连接到运行的数据库实例,即使其中一个节点发生故障。VIP通常用于提供透明的故障切换。

4. **SCAN IP:** SCAN(Single Client Access Name)是Oracle RAC引入的一项功能,它提供了一个虚拟的单一名称,客户端可以通过该名称连接到整个RAC集群,而不需要关心具体的节点信息。SCAN IP地址是由SCAN名称解析到的IP地址。

这些IP地址的具体配置和使用方式可能会根据具体的Oracle版本和集群配置而有所不同。在配置Oracle RAC时,建议参考相关的Oracle文档和最新的官方指南以获取准确的信息。

(2)挑其中一个问一下是干嘛的?
1、PublicIP称为公网IP,它是网卡上的真实IP。每个节点在安装Oracle软件之前都需要事先配置Public IP。Oracl通过PublicIP对外提供网络服务。如果RAC中Public IP所在的网卡设备故障,那么该节点将无法继续对外提供服务
2、Private ip对于Oracle集群来说,私网通信是非常重要的,因为节点和节点之间的通信绝大部分都是要通过私网来实现的。与PublicIP一样,Private IP称为私网IP可心跳IP,它也是网卡上的真实IP,每个节点在安装Oracle集群软件之前都需要事先配置PrivateIP
3、VIP是在PublicIP所在的网卡上由Oracle集群软件虚拟出来的一个IP,需要和Public IP设置在同一个子网网段中。Oracle集群软件安装之前只需定义好 (/etc/hosts文件)即可,而无需事先配置。在正常情况下,VIP和PublicIP的功能是一模一样的。后台进程PMON对每个节点的VIP所在的监听器注册实例信息,本地监听器中一个是VIP。当会看到两个地址host,一个是Public IP,节点故障时,Oracle集群软件会把VIP自动飘逸到其它节点上,但是本地监听器却没有飘逸到其它节点上。客户端nsnames.ora文件中host选项不再需要配置PublicIP而选择配置VIP,这样做的好处是在双节点RAC架构中当第一个节点故障时,第二个节点会有两个VIP,客户端连接第一个VIP失败后会立即连接第二个VIP对应的实例,整个切换过程是非常短暂的,用户完全感受不到RAC架构中有节点故障
4 、Scan ip相当于在客户端和数据库之间增加一层虚拟的网络服务层,即是SCANIP和SCAPIPLISTENER。在客户端的tnsnames.ora配置文件中,只需要配置SCANIP然后用户即可访问数据库,并且实现了负载均衡的功能。客户端通过SCANIP、SCANIPLISTENER来负载均衡地连接到RAC数据库

当配置 Oracle Real Application Clusters(RAC)时,不同的 IP 地址承担不同的角色,以支持集群的高可用性、负载均衡和透明的故障切换。下面是对上述四种 IP 地址的详细解释:

1. **Public IP(公共 IP):**
   - **作用:** 用于提供数据库服务给客户端应用程序。客户端通过这个 IP 地址连接到 Oracle 数据库。
   - **特点:** 每个节点通常都有一个公共 IP 地址,它是客户端连接的目标地址。

2. **Private IP(私有 IP):**
   - **作用:** 用于节点之间的内部通信,实现高速、低延迟的节点间通信,确保集群协同工作。
   - **特点:** 私有 IP 地址是为了集群内部通信而设计的,它不对外提供服务。节点之间使用私有 IP 地址进行数据同步、协调和其他内部通信。

3. **Virtual IP(VIP,虚拟 IP):**
   - **作用:** 提供透明的故障切换,确保客户端总是能够连接到运行的数据库实例,即使某个节点发生故障。
   - **特点:** 每个节点都有一个 VIP 地址,该地址是由 Oracle Clusterware 在节点间进行故障切换时动态分配的。客户端连接到 VIP 地址,而不是直接连接到特定节点,从而实现透明的故障切换。

4. **SCAN IP(单一客户端访问名称):**
   - **作用:** 提供了一个虚拟的单一名称,客户端可以通过该名称连接到整个 RAC 集群,而不需要关心具体的节点信息。
   - **特点:** SCAN IP 地址是由 SCAN 名称解析到的 IP 地址,通过 SCAN,客户端可以轻松连接到整个 RAC 集群,而不必担心具体节点的变化。SCAN 简化了客户端连接配置,尤其在集群配置发生变化时更为便捷。

这些 IP 地址协同工作,共同确保 Oracle RAC 在分布式环境中提供高可用性、负载均衡和透明的故障切换。

(3)如何登录asm实例?
答: asmcmd

ASM(Autonomous Database Shared)
是Oracle Cloud Infrastructure (OCI) 上的一种托管数据库服务。
要登录到 ASM 实例,
您可以使用 SQL*Plus 工具或 SQLcl 工具。以下是使用 SQL*Plus 登录 ASM 实例的一般步骤:

1. **打开终端或命令提示符:** 在本地计算机上打开终端或命令提示符。

2. **使用 SQL*Plus 登录到 ASM:** 使用以下命令连接到 ASM 实例:

  
    sqlplus / as sysasm
  

    如果需要用户名和密码,您可以提供有效的 ASM 管理员认证。如果未提供用户名和密码,`/ as sysasm` 将使用 ASM 实例的操作系统身份验证。

   
    sqlplus sys/<your_sys_password>@<connect_identifier> as sysasm
   

    其中 `<your_sys_password>` 是 SYS 用户的密码,`<connect_identifier>` 是 ASM 实例的连接标识符。

3. **输入密码:** 如果您没有使用操作系统身份验证登录,系统将提示您输入密码。

4. **成功登录:** 成功提供正确的凭据后,您将看到 SQL*Plus 提示符,表示您已成功登录到 ASM 实例。

请注意,ASM 实例的登录步骤可能会有所不同,具体取决于您的环境和安全设置。确保您有足够的权限来执行所需的操作,并且仅使用安全的连接方式。如果使用 SQLcl 或其他工具,请查阅相应的文档以获取详细信息。

(4) oracle sqlplus 是什么?
答: 客户端


Oracle SQLPlus 是 Oracle 数据库的命令行界面工具,
它允许用户与 Oracle 数据库进行交互并执行 SQL 和 PL/SQL 语句。
SQLPlus 提供了一个文本界面,通过这个界面,用户可以连接到数据库实例、执行 SQL 查询、运行存储过程、查看表结构等。

(5) Oracle 端口号是多少?

答: 1521

(6) Oracle19C怎么查看有几个pdb?
答:方法1: show pdb 方法 2: 查看进程

### 方法 1: 使用 SQL 查询

连接到数据库,然后执行以下 SQL 查询语句:


SELECT pdb_name FROM cdb_pdbs;


或者


SELECT name FROM v$pdbs;


这两个查询将返回当前数据库实例中所有 PDB 的名称。

### 方法 2: 使用 SQL*Plus 或 SQLcl 工具查看进程

您可以使用 SQL*Plus 或 SQLcl 连接到数据库,然后运行以下查询:


SELECT COUNT(*) FROM v$pdbs;


或者在 SQLcl 中执行:

SHOW PDBS


这会显示当前数据库实例中的 PDB 数量。

请注意,具体的查询语句可能会因您的具体情况而有所不同。在连接到数据库后,您可以根据需要选择适当的查询语句。

(7)oracle出现问题查看什么日志?
答: alert 日志

Alert Log:

位置: alert_<SID>.log 文件,通常在 diag 目录下的 trace 子目录中。
用途: 记录数据库实例启动和关闭的信息,以及重要的错误和警告消息。

(8) Oracle 归档日志保存着什么?
答:数据更改错误和警告系统事件

Oracle 归档日志(Archived Logs)包含数据库的归档重做日志文件,
这些文件记录了数据库的所有变更。当数据库启用归档模式时,归档日志对于恢复和数据库备份非常重要。

以下是归档日志保存的主要信息:

1. **重做日志记录:** 归档日志包含了数据库中发生的所有事务的重做日志记录。这些记录包括了对数据库进行的插入、更新、删除等操作的详细信息。重做日志的目的是为了在需要时能够还原或重做这些事务。

2. **事务的逻辑操作:** 归档日志不仅包含了对表中数据的物理更改,还包含了对数据的逻辑更改。这意味着它包含了对数据的修改、事务的开始和提交等信息。

3. **数据库变更的时间戳:** 归档日志中包含有关每个事务的时间戳信息,以及事务何时提交的信息。这对于在某个特定时间点还原数据库状态非常有用。

4. **支持恢复和备份:** 归档日志的主要目的是支持数据库的恢复和备份。通过保留归档日志,您可以在数据库故障或数据损坏时还原数据库到先前的状态。

5. **与逻辑日志挂钩:** 归档日志与 Oracle 的逻辑日志(Redo Log)密切相关。逻辑日志记录了数据库的实时变更,而归档日志则保存了这些变更的归档版本,以便后续还原。

在启用归档模式的情况下,Oracle 数据库会自动将逻辑日志中的信息归档到指定的归档目录中。这些归档日志文件以一种有序的方式生成,并且它们的命名通常基于时间戳和序列号。

(9) Oracle dg同步的几种机制?
答:实时应用,高延迟应用,异步应用,同步应用。

让我更详细地解释一下:

1. **实时应用(Real-Time Apply):**
   - **特点:** 实时应用是一种同步模式,它确保主库提交的事务立即在备库上应用。
   - **适用场景:** 适用于对数据实时性要求非常高的业务场景。主库提交的事务在备库上立即可用。

2. **高延迟应用(Max Availability):**
   - **特点:** 这是一种同步模式,但允许在备库上设置最大延迟以提高可用性。主库提交事务后,可以设置一定的延迟时间,之后再将重做日志应用到备库。
   - **适用场景:** 适用于需要实现高可用性,但对实时性要求稍低的场景。

3. **异步应用(Max Performance):**
   - **特点:** 异步应用是一种非同步模式,主库提交事务后,不等待备库应用,而是异步地传输重做日志。
   - **适用场景:** 适用于需要降低主库的响应时间,而对实时性要求相对较低的场景。

4. **同步应用(Max Protection):**
   - **特点:** 同步应用是一种同步模式,要求主库提交的事务必须在备库上同步应用后才能认为提交成功。
   - **适用场景:** 适用于对数据一致性和实时性要求非常高的关键业务场景,确保主备库之间的数据完全同步。

这些同步机制的选择通常基于业务需求、性能要求和可用性要求。实时应用和高延迟应用提供了一种平衡,可以根据具体情况进行配置,而异步应用和同步应用则更侧重于不同的可用性和数据一致性要求。

文章来源:https://blog.csdn.net/weixin_47139678/article/details/135023675
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。