Oracle RAC如何检查归档模式?跨节点确认归档归属

夜瑶大大_7055

夜瑶大大_7055

2026-04-10

245人浏览

原创

oracle rac中需逐节点检查归档模式、路径配置、归档日志生成及线程归属:用select log_mode from v$database确认全局一致;show parameter log_archive_dest_1与v$archive_dest查本地配置与状态;v$archived_log验证各节点thread#日志连续性;归档归属由thread#决定,备份须覆盖所有线程。

检查单节点是否处于归档模式

oracle rac 中每个实例独立维护自己的归档状态,不能只查一个节点就下结论。最直接的方式是连到任一实例后执行:

archive log list
。但要注意,该命令输出中的 database log mode 行只反映当前实例所在数据库的归档模式(archive modeno archive mode),而 automatic archivalarchive destination 是实例级配置,可能与其他节点不一致。

更可靠的做法是查动态性能视图:

SELECT log_mode FROM v$database;
。这个值在所有节点上必须一致——RAC 所有实例共享同一份控制文件,所以 v$database.log_mode 在所有节点查询结果应完全相同。若出现差异,说明控制文件异常或某节点未正常加载。

确认各节点归档路径与实际写入位置

RAC 中归档日志默认由本地实例生成并写入本地 LOG_ARCHIVE_DEST_1(或其它显式配置的归档目标),不是自动跨节点分发。这意味着:节点1的归档日志不会自动出现在节点2的归档目录里,除非你手动配置了远程归档(如 LOG_ARCHIVE_DEST_2 指向另一节点的 ASM 磁盘组或 NFS 路径)。

查每个节点的实际归档配置:

SHOW PARAMETER log_archive_dest_1
。重点关注三类值:
  • LOCATION 后的路径(如 +FRA/u01/arch
  • 是否含 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 等限定
  • 是否启用 REOPEN 或设了 DELAY
再结合 v$archive_dest 查实时状态:
SELECT dest_id, status, target, destination, error FROM v$archive_dest WHERE status != 'INACTIVE';
。特别注意 status = 'ERROR' 的条目——常见于权限不足、磁盘满、ASM 别名不存在等,这类错误往往只在出问题的节点上可见。

验证归档日志是否真实生成且连续

仅看参数和状态还不够,得确认归档日志确实被创建出来,并且序列号不跳变。在每个节点分别运行:

SELECT thread#, sequence#, first_time, next_time, applied FROM v$archived_log ORDER BY sequence# DESC FETCH FIRST 5 ROWS ONLY;
。关键点:
  • thread# 应与该节点实例号一致(通常节点1对应 thread#=1,节点2对应 thread#=2
  • 各节点的 sequence# 序列应各自连续增长,不要求跨节点对齐
  • applied = 'YES' 仅对物理备库有意义;RAC 主库本体没有这个概念,此处恒为 NO 或空
如果某节点 v$archived_log 查询为空,或最近几条 next_time 停滞超过 10 分钟,大概率归档进程(ARCn)卡住或被禁用。

跨节点归档归属的实质是线程隔离

RAC 归档日志的“归属”本质由 thread# 决定,而非物理节点名。每个实例启动时绑定唯一 thread,重做日志按线程分组,归档也按线程生成。因此:

  • 节点1生成的归档日志,thread#=1,哪怕写入共享 ASM 目录,逻辑上仍属于线程1
  • 恢复时需同时应用线程1和线程2的归档,缺一不可
  • 备份脚本若只扫某个节点的本地路径,会漏掉其他线程的日志——必须统一从共享存储(如 +FRA)扫描所有 thread# 的归档
最容易被忽略的是:DBA 习惯性用 host_name 区分节点,但在归档路径中真正起作用的是 thread#sequence#。一旦误以为“节点2的归档在节点2目录下”,就可能漏备份或误删。
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

2023.08.16

821

5

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

2023.09.15

2253

5

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

2023.09.18

2290

5

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

2023.09.19

1329

3

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

2023.09.19

1913

7

oracle imp
oracle imp

imp是Oracle数据库中的一个命令行工具,用于将导出的数据和对象从一个数据库实例导入到另一个数据库实例。imp命令的一般语法为“imp username/password@connect_string file=file_name [options]”。

2023.09.19

2469

4

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4029

19

oracle通配符有哪些
oracle通配符有哪些

oracle通配符有“%”、“_”、“[]”和“[^]"。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.08

237

5

oracle四舍五入怎么操作
oracle四舍五入怎么操作

oracle四舍五入操作可以使用ROUND函数来实现,其语法为“ROUND(number, decimal_places)”,其中,number是要进行四舍五入的数值,decimal_places是指定的小数位数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.14

626

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.1万人学习