DBA面试题

Oracle体系结构

(1)、Oracle实例内存中包含哪些部分?

答: sga与pga

sga:是一组共享的内存区域,包含数据字典缓存、库缓存、重做日志缓冲区

Pga:为每个服务器进程分配的非共享内存,存储会话状态和私有SOL工作区

bash 复制代码
在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 是做什么的?

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

bash 复制代码
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数据文件。

bash 复制代码
在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

bash 复制代码
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数据库

bash 复制代码
当配置 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

bash 复制代码
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 是什么?

答: 客户端

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

(5) Oracle 端口号是多少?

commonlisp 复制代码
答: 1521

(6) Oracle19C怎么查看有几个pdb?

答:方法1: show pdb 方法 2: 查看进程

html 复制代码
### 方法 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 日志

bash 复制代码
Alert Log:

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

(8) Oracle 归档日志保存着什么?

答:数据更改错误和警告系统事件

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

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

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

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

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

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

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

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

(9) Oracle dg同步的几种机制?

答:实时应用,高延迟应用,异步应用,同步应用。

bash 复制代码
让我更详细地解释一下:

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

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

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

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

这些同步机制的选择通常基于业务需求、性能要求和可用性要求。实时应用和高延迟应用提供了一种平衡,可以根据具体情况进行配置,而异步应用和同步应用则更侧重于不同的可用性和数据一致性要求。
相关推荐
movie__movie8 分钟前
Spring AI MCP 客户端实战:轻松连接高德地图等工具
数据库·人工智能·spring
清风198110 分钟前
kafka消息可靠性传输语义
数据库·分布式·kafka
数据智能老司机2 小时前
CockroachDB权威指南——SQL调优
数据库·分布式·架构
数据智能老司机2 小时前
CockroachDB权威指南——应用设计与实现
数据库·分布式·架构
数据智能老司机3 小时前
CockroachDB权威指南——CockroachDB 模式设计
数据库·分布式·架构
数据智能老司机21 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机1 天前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿1 天前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
无名之逆1 天前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s9123601011 天前
rust 同时处理多个异步任务
java·数据库·rust