热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

RACArchivelog写入错误的节点

由于多个客户几次问到,RAC环境中,node2的归档日志,写入到node1的archive路径中。这个问题导致一些客户在使用OGG的情况下,有时无法正确读取日志的问题。那是什么原因导致的这个问题呢?对此,进行查找和测试。发现了下面的情况会导致archivelog没有记

由于多个客户几次问到,RAC环境中,node2的归档日志,写入到node1的archive路径中。 这个问题导致一些客户在使用OGG的情况下,有时无法正确读取日志的问题。 那是什么原因导致的这个问题呢? 对此,进行查找和测试。发现了下面的情况会导致archive log没有记

由于多个客户几次问到,RAC环境中,node2的归档日志,写入到node1的archive路径中。

这个问题导致一些客户在使用OGG的情况下,有时无法正确读取日志的问题。

那是什么原因导致的这个问题呢?

对此,进行查找和测试。发现了下面的情况会导致archive log没有记录到正确的节点位置。

测试环境

Linux + 11.2.0.4 RAC
node1
  ALTER SYSTEM SET log_archive_dest_1='location=/home/oracle/archive_log/ valid_for=(all_logfiles,all_roles)' sid='orcl1' scope=spfile; 
 node2
   ALTER SYSTEM SET log_archive_dest_1='location=/home/oracle/archive_log/ valid_for=(all_logfiles,all_roles)' sid='orcl2' scope=spfile;


情况1


在node2 instance关闭的情况下,node1上执行alter system archive log current;

会将node2的archive log写入到node1的路径

-----------10.2.0.5版本测试--------------

注:nascds14是节点1,nascds15是节点2

[oracle@nascds14 ~]$ ls -l /u01/app/database/dbs/ 
-rw-r----- 1 oracle oinstall 9897472 Dec  1 09:47 arch1_66_827745338.dbf
-rw-r----- 1 oracle oinstall    2048 Dec  1 09:47 arch1_67_827745338.dbf
-rw-r----- 1 oracle oinstall    1024 Dec  1 09:50 arch1_68_827745338.dbf
[oracle@nascds14 ~]$ sqlplus / as sysdba
SQL>  alter system archive log current;
System altered.
[oracle@nascds14 ~]$ ls -l /u01/app/database/dbs/ 
-rw-r----- 1 oracle oinstall 9897472 Dec  1 09:47 arch1_66_827745338.dbf
-rw-r----- 1 oracle oinstall    2048 Dec  1 09:47 arch1_67_827745338.dbf
-rw-r----- 1 oracle oinstall    1024 Dec  1 09:50 arch1_68_827745338.dbf
-rw-r----- 1 oracle oinstall   11776 Dec  1 09:55 arch1_69_827745338.dbf
-rw-r----- 1 oracle oinstall  128512 Dec  1 09:55 arch2_101_827745338.dbf    <<<<<<<<<<<<< shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@nascds15 ~]$ ls -l /u01/app/database/dbs/ 
-rw-r----- 1 oracle oinstall     6144 Dec  1 09:50 arch2_100_827745338.dbf
-rw-r----- 1 oracle oinstall 17412608 Dec  1 09:46 arch2_98_827745338.dbf
-rw-r----- 1 oracle oinstall     1536 Dec  1 09:47 arch2_99_827745338.dbf 
[oracle@nascds15 ~]$ ls -l /u01/app/database/dbs/ 
-rw-r----- 1 oracle oinstall     6144 Dec  1 09:50 arch2_100_827745338.dbf
-rw-r----- 1 oracle oinstall 17412608 Dec  1 09:46 arch2_98_827745338.dbf
-rw-r----- 1 oracle oinstall     1536 Dec  1 09:47 arch2_99_827745338.dbf


-----------11.2.0.4版本测试--------------

node2 instance关闭,日志产生结果

在node2 instance关闭的情况下,node1上执行alter system archive log current;

同样会将node2的archive log写入到node1的路径

---node2---

SQL> create table test1 as select * from dba_users;
create table test1 as select * from dba_users;
SQL> shutdown abort 
shutdown abort
ORACLE instance shut down.

---node1---

SQL> alter system archive log current;

---node1---

[oracle@node111g archive_log]$ ls -al 2*
 
-rw------- 1 oracle asmadmin 148992 12月 19 11:22 2_176_864642458.dbf
-rw------- 1 oracle asmadmin 1024 12月 19 11:22 2_177_864642458.dbf <<<<<<<<<<<<<

下面是测试结果截图,同时开启4个窗口

spacer.gifwKiom1STq-bQ0-pjAA3qlGN7Y9w173.jpg


情景2

如果node2正常运行情况下,是不是也会出现日志写入到node1的情况呢?

经过多次测试,alter system archive log current;

node1和node2都是正常的将各自的archive log写入到各自正确的位置。

这时考虑,如果给node2点运行压力呢?

在node2上运行下面脚本,让node2处于高CPU运行状态

DECLARE
n NUMBER;
BEGIN
WHILE (TRUE)
LOOP
n:= dbms_random.random();
END LOOP;
END;

在CPU使用率超过90%的情况下,在node1上多次执行alter system archive log current;

就会出现node2的归档,写入node1的路径的情况

node1查看archive log生成结果

[oracle@node111g archive_log]$ pwd
/home/oracle/archive_log 
[oracle@node111g archive_log]$ ls -al 2*
-rw------- 1 oracle asmadmin 1024 12月 19 10:32 2_103_864642458.dbf
-rw------- 1 oracle asmadmin 1024 12月 19 10:37 2_131_864642458.dbf

node2查看archive log生成结果

[oracle@node211g archive_log]$ ls -ctrl
 
-rw------- 1 oracle asmadmin 1024 12月 19 10:32 2_101_864642458.dbf
-rw------- 1 oracle asmadmin 1024 12月 19 10:32 2_102_864642458.dbf
-rw------- 1 oracle asmadmin 1024 12月 19 10:32 2_104_864642458.dbf <<<<<<<<<<<<<

同时开启4个窗口,开始测试

spacer.gif

wKioL1STrK2Qdn3fAA3qlGN7Y9w211.jpg


总结,首先要先了解 alter system switch logfile;和alter system archive log current;的区别。

主要的区别在于:
ALTER SYSTEM SWITCH LOGFILE对单实例数据库或RAC中的当前实例执行日志切换;
而ALTER SYSTEM ARCHIVE LOG CURRENT会对数据库中的所有实例执行日志切换。


所以在使用ALTER SYSTEM SWITCH LOGFILE的情况下,就不会遇到archive写错节点的问题。

RAC中archive log写错节点的问题,在使用日志挖掘的应用的时候,可能会遇到问题,如OGG。

这里,我们可以理解为,这是一个oracle expected behaviour。

那么,我们需要考虑下面几种情况来规避这个问题

1. 和应用的开发人员讨论,是不是一定要使用ALTER SYSTEM ARCHIVE LOG CURRENT。

2. 让两个节点的log_archive_dest_*是可以互相访问的,这样在日志挖掘的情况下,control file会告诉你去哪里找到需要的日志,并且可以读取,就不会报错。

3. 将RAC中的多个节点的归档路径设置为相同的共享路径下,也就没有这些问题了。






推荐阅读
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文详细探讨了不同SQL数据库管理系统(DBMS)在限制输出结果、拼接字段和日期时间处理方面的函数差异。通过具体示例,帮助读者理解并掌握如何在不同DBMS中实现相同功能。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • Linux 基础命令详解
    本文介绍了在 Linux 系统中常见的命令及其用法。当用户登录系统后,默认提示符会显示为 [root@localhost ~]# 或 [user@localhost ~]$,其中 # 表示当前用户为 root,$ 表示普通用户。我们将深入探讨一些常用的 Linux 命令,帮助初学者更好地理解和使用这些工具。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
author-avatar
手机用户2502861713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有