概述

最近有个客户在咨询adg跨版本相关问题,大伙都知道不能跨数据库版本,那11.2.0.1到11.2.0.4呢?12.2.0到19c呢?和几个同事讨论后,发现大家都思考过这个问题,但是又不能确定正确答案,引发我的好奇心,确切的说触发知识盲区了hhhh;希望读者看本篇blog能有底气的回答下面的问题。

Oracle ADG跨数据库版本可以搭建吗?

Oracle ADG跨平台版本可以搭建吗?

跨版本搭建ADG后会出现什么问题?

跨版本搭建ADG后是否可以真正实现数据迁移?

目录

一、跨数据库版本搭建ADG

环境:

主库:12.2.0.1.0 os:redhat 7.6

备库:19.5.0.0.0 os:redhat 7.6

技能比较熟练的读者就可以跳过1.1章节

使用两种搭建方法来测试是否能完成跨数据库版本搭建

1.1 前期准备

这里的前期准备工作有参数配置、日志组调整、tns配置等,不管是哪个种方式搭建都需要做的;

1.1.1 归档模式和附加日志

shutdown immediate

startup mount

alter database archivelog;

alter database open;

alter database force logging;

检查:

SQL> select log_mode,force_logging from v$database;

LOG_MODE FORCE_LOGGING

------------ ---------------------------------------

ARCHIVELOG YES

1.1.2 添加1621静态监听

--集群添加

srvctl add listener -l LSNR_DG -p 1621

--- listener.ora 添加以下内容

SID_LIST_LSNR_DG =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = hygge) --根据实际更改

(ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1) --根据实际更改

(SID_NAME = hygge1) --根据实际更改

)

)

--打开监听

srvctl start listener -l lsnr_dg

--检查监听状态

lsnrctl status

1.1.3 配置tnsname.ora

hyggeold =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.218.51)(PORT = 1621))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = hygge)

)

)

hyggenew =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.218.21)(PORT = 1621))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.218.23)(PORT = 1621))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = hygge)

)

)

--检查

tnsping hyggeold

tnsping hyggenew

1.1.4 修改主库参数

这里对每个参数是什么意思,怎么设置就不赘述了。

alter system set standby_file_management=AUTO scope=both sid='*';

alter system set log_archive_config='DG_CONFIG=(hygge, standby)' scope=both sid='*';

alter system set log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=hygge' scope=both sid='*';

alter system set log_archive_dest_2='SERVICE=hyggenew LGWR SYNC VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' scope=both sid='*'

alter system set fal_server=hyggenew scope=both sid='*';

alter system set fal_client=hyggeold scope=both sid='*';

alter system set db_file_name_convert='+DATA','+DATA' scope=spfile sid='*'; --位置都是+data下其实也可以不用设置这个参数

alter system set log_file_name_convert='+DATA/HYGGE/ONLINELOG/','+DATA/STANDBY/ONLINELOG/' scope=spfile sid='*';

1.1.5 添加standby 日志

在主库添加就可以了

alter database add standby logfile thread 1 group 11 size 200M;

alter database add standby logfile thread 1 group 12 size 200M;

alter database add standby logfile thread 1 group 13 size 200M;

alter database add standby logfile thread 1 group 14 size 200M;

1.1.6 备库上操作

---备库加库

srvctl add database -db standby -oraclehome /u01/app/oracle/product/19.3.0/dbhome_1 -diskgroup DATA,FRA -dbname hygge

--- 添加实例

srvctl add instance -db standby -instance standby1 -n hygge1

1.1.7 拷贝密码文件

均在asm中操作

pwcopy pwdyngedb.256.1037464551 /home/grid/pwdhygge --主服务器复制出来

scp pwdhygge 192.168.218.21:/home/grid/pwdstandby --scp传输密码文件

pwcopy /home/grid/pwdstandby +DATA --dbuniquename standby --备服务器复制进去

--将密码文件注册到数据库资源中

srvctl modify database -db standby -pwfile '+DATA/STANDBY/PASSWORD/pwdstandby.322.1044481127'

1.1.8 生产备库参数文件

将主库参数文件中参数修改后,传到备库

--编辑参数文件,并对参数文件进行修改(主库操作)

create pfile='/home/oracle/1.ora' from spfile;

scp /home/oracle/1.ora hygge:/home/oracle/1.ora

根据修改后的参数文件启动到nomount(备库)

startup nomount pfile='/home/oracle/1.ora';

1.2 duplicate方式

[oracle@hygge1 ~]$ rman target sys/123456@hyggeold auxiliary sys/123456@hyggenew nocatalog

Recovery Manager: Release 19.0.0.0.0 - Production on Tue Jun 30 21:41:28 2020

Version 19.5.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-00554: initialization of internal recovery manager package failed

RMAN-06429: TARGET database is not compatible with this version of RMAN

RMAN-06618: RMAN client and database version mismatch; indicated database version is 12.2.0.1

由于oracle的版本不同,就不能使用rman duplicate搭建。

1.3 异机恢复的方式

异机恢复就是使用rman的全库备份恢复来搭建adg

1.3.1 主库上全库备份

--全部备份,如果库很大可以压缩

backup database format '/home/oracle/backup/%U.bak';

--待全库备份完成后,对控制文件进行备份

backup current controlfile for standby format'/home/oracle/backup/std_control01.ctl';

将备份集通过scp传到备库服务器

scp /home/oracle/backup/* 192.168.218.21:/home/oracle/backup/

1.3.2 在19c的软件上恢复全库

先恢复控制文件(注意,恢复后将参数文件中的控制文件名字改成asm实际的名字)

restore standby controlfile from '/home/oracle/backup/std_control01.ctl';

--然后将库启到mount状态

alter database mount;

然后恢复数据文件

run {

SET NEWNAME FOR DATABASE TO '+DATA';

restore database;

switch datafile all;

recover database;

}

1.3.3 应用日志检查是否同步

成功应用上日志

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

日志传输和应用均无延迟

NAME VALUE UNIT TIME_COMPUTED

------------------------- -------------------- ------------------------------ ------------------------------

transport lag +00 00:00:00 day(2) to second(0) interval 06/30/2020 22:16:10

apply lag +00 00:00:00 day(2) to second(0) interval 06/30/2020 22:16:10

进程状态也是正常的

SQL> select process,client_process,THREAD#, sequence#,status from v$managed_standby;

PROCESS CLIENT_P THREAD# SEQUENCE# STATUS

--------- -------- ---------- ---------- ------------

DGRD N/A 0 0 ALLOCATED

ARCH ARCH 0 0 CONNECTED

DGRD N/A 0 0 ALLOCATED

ARCH ARCH 1 24 CLOSING

ARCH ARCH 0 0 CONNECTED

ARCH ARCH 1 23 CLOSING

RFS Archival 1 0 IDLE

RFS LGWR 1 25 IDLE

RFS UNKNOWN 0 0 IDLE

MRP0 N/A 1 25 APPLYING_LOG

10 rows selected.

主库日志应用序列号,也是与备库正常相差小于等于1

DB Role THREAD# MAX(SEQUENCE#)

--------- ---------- --------------

Primary : 1 26

Standby : 1 25

主库主动切换日志,观察备库alert日志也有变化

2020-06-30T22:18:17.734556+08:00

rfs (PID:51571): Selected LNO:12 for T-1.S-27 dbid 4195110742 branch 1044439066

2020-06-30T22:18:17.738354+08:00

MRP0 (PID:54199): Media Recovery Waiting for T-1.S-27 (in transit)

2020-06-30T22:18:17.770535+08:00

ARC0 (PID:51517): Archived Log entry 24 added for T-1.S-26 ID 0xfa0ba753 LAD:1

2020-06-30T22:18:17.775983+08:00

Recovery of Online Redo Log: Thread 1 Group 12 Seq 27 Reading mem 0

Mem# 0: +DATA/STANDBY/ONLINELOG/group_12.379.1044482047

Mem# 1: +DATA/STANDBY/ONLINELOG/group_12.341.1044482047

1.3.4 异机恢复搭建跨平台adg存在的问题

无法正常将备库open(read only)

SQL> alter database open read only

2 ;

alter database open read only

*

ERROR at line 1:

ORA-00603: ORACLE server session terminated by fatal error

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-00704: bootstrap process failure

ORA-39700: database must be opened with UPGRADE option

Process ID: 51532

Session ID: 3186 Serial number: 36053

正因为无法open,也无法查询和验证备库数据

二、跨平台搭建ADG

这个跨平台异构搭建adg,官方已经有所支持,所支持列表如下:

在物理 Data Guard 中对异构主备系统的支持 (Doc ID 1602437.1)

三、跨版本搭建adg无法open处理

由于从主库12.2恢复到19.5的软件上,需要进行数据库升级处理;但是由于是备库,所以必须得强制切换成主库后再做升级。

3.1 强制failover备库

--停止应用恢复模式

alter database recover managed standby database finish;

--转换为primary db

alter database commit to switchover to primary;

3.2 升级备库版本

--升级必须将这个参数成false

ALTER SYSTEM SET CLUSTER_DATABASE=FALSE scope=spfile ;

-- 将备库已升级模式启动

alter database open upgrade;

--跑升级脚本

@?/rdbms/admin/catupgrd.sql;

cd $ORACLE_HOME/rdbms/admin

$ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql

这个升级脚本跑了2个多小时!

总结

跨版本搭建oracle adg可以通过异机恢复实现(adg备库无法open,adg部分功能无法实现)

跨平台搭建oracle adg在官方支持范围内也是可以实现

测试中oracle adg跨版本的主备数据是能同步的

oracle adg跨版本搭建后无法open,只能通过切换主库后upgrade拉起,可以作为数据迁移+版本升级的参考方案,但是慎用,毕竟oracle人家没官方说能这么玩。

oracle 跨平台adg,oracle ADG 跨版本跨平台搭建实测相关推荐

  1. oracle跨平台跨版本迁移工具xtts-V4版本

    V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup(Doc ID 2471245.1 ...

  2. 使用TTS实现Oracle跨版本迁移

    TTS实现数据库迁移,具有速度快.支持跨平台和跨版本等优点.本文记录了用TTS从10g single迁移到11g RAC的过程. Source数据库版本和字符集设置: SQL> select * ...

  3. adg oracle 架构_云化双活的架构演进,宁夏银行新核心搭载Oracle 19c投产上线

    云和恩墨顺利完成宁夏银行新数据中心数据库平台的建设,包括新数据中心RAC搭建.DG搭建.旧数据中心到新数据中心的数据迁移,以及在整个项目生命周期中的实施规范.性能测试保障.压力测试等.6月12日,宁夏 ...

  4. 1.oracle RAC11G 对单机ADG搭建详细文档

    一个问题:rac对单机ADG搭建完成之后,rac是双节点,假设某一个节点发生故障done机了,或者是将一个节点关机了,然后 这个数据库再启动话是否还能起来??? 起不来.因为一旦重启,之前修改的参数就 ...

  5. oracle同步数据adg_[adg数据库同步机制]三分钟读懂Oracle数据库容灾架之DataGuard

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 Oracle数据库目前依然处于商用数据库的霸主地位. 运行在Oracle数据库上的核心业务及核心数据的安全性尤为重要 ...

  6. Oracle HA篇+DG/ADG 基础知识

    说明:本文为面向Oracle (Active) Data Guard初学者的指导手册 标签:Oracle DG.Data Guard.Oracle ADG.Active Data Guard.ADG体 ...

  7. oracle夸版本迁移,【kingsql分享】Oracle跨版本迁移之XTTS_V4版本的实施

    本文介绍了将v4跨平台可传输表空间(xtts)与rman增量备份结合使用所需的步骤, 以最少的应用程序停机时间迁移数据. ####################################### ...

  8. cmd oracle 连接实例_基于winserver的Oracle数据库跨版本下的rman备份恢复

    概述 继续上一篇rman跨版本恢复的内容,今天主要分享在目的端恢复的过程,下面一起来看看吧! 因为目标数据库已经有实例,但不需要的,所以这里需要先删除一下. 1.删除安装oracle数据库时的实例 c ...

  9. 下载丨Linux+Oracle 11g+RAC+12cc+adg国内业界最详细生产系统下实施文档

    墨天轮文档:<Linux+Oracle 11g+RAC+12cc+adg国内业界最详细生产系统下实施文档>:https://www.modb.co/doc/2408(复制到浏览器中或者点击 ...

最新文章

  1. 基于持久内存的 单机上亿(128B)QPS -- 持久化 k/v 存储引擎
  2. 德勤管理咨询热招 | @企业级 IT 大伽和数字化大咖:春风十里不如你!
  3. ‘pip 安装第三方库速度太慢’的解决办法
  4. 交互设计新人的核心竞争力
  5. P1433 吃奶酪(状压dp)
  6. OpenCV imwrite
  7. 模拟 Codeforces Round #288 (Div. 2) A. Pasha and Pixels
  8. ORACLE 语句关联统计
  9. 计算机世界赛一年几届夺冠,纵观lol历届s系列赛, 哪一届夺冠的含金量最高? 哪一届又最低?...
  10. 千脑智能理论:开启创造机器智能的路线图 | 《千脑智能》
  11. 为SM30视图创建TCODE
  12. xctf-supersqli
  13. CentOS添加管理员账号
  14. C语言 打印2的n次方
  15. Windows10 桌面不停的闪烁问题
  16. max31865模块 PT100测温 PT1000测温 接线说明要点说明 使用说明 程序 单片机
  17. 《云边协同关键技术态势研究报告》丨附下载
  18. cloudreve安装linux教程,Cloudreve云盘系统小白超详细图文安装教程
  19. 【渗透测试】你应该了解的大部分工具![本文仅供了解]
  20. 我喜欢用计算机300,我喜欢夏天作文300字

热门文章

  1. android计步器摘要,ios - Healthkit每小时活动摘要包含步数,距离和卡路里? - 堆栈内存溢出...
  2. android apk 反编译,修改version后重新打包
  3. 有关水果蔬菜的类型网站
  4. 三天打鱼两天晒网C语言实现
  5. 优秀的 Verilog/FPGA开源项目介绍(七)- CAN通信
  6. 分享90个数据管理PHP源码,总有一款适合你
  7. WPS通配符(正则表达式)
  8. 查oracle表空间最大的表,查询表空间大小(oracle查询表空间大小)
  9. dev c++下载和安装
  10. 砼匠无人值守称重系统驾驶员操作说明