Oracle Dataguard跨版本数据迁移(11.2.0.4~19.13.0.0)

这篇具有很好参考价值的文章主要介绍了Oracle Dataguard跨版本数据迁移(11.2.0.4~19.13.0.0)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前期准备

按照DG部署步骤修改DG参数、添加standby redo log、配置静态监听、配置tnsnames文件、备端修改参数文件、创建所需目录等配置好部署环境,这里不再赘述,跟正常部署DG无区别。
环境配置好后,进行后面的操作。

二、使用RMAN备份复制主端数据库

2.1.主端备份数据库

RMAN> run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 0 format '/home/oracle/orcl_full_%U' database;
backup format '/home/oracle/orcl_full_stanctl_%U' current controlfile for standby;
release channel c1;
release channel c2;
}

2.2.备端启动至nomount

SQL> create spfile from pfile='/home/oracle/pfile.ora';
SQL> startup nomount

2.3.恢复控制文件

RMAN> restore standby controlfile from '/home/oracle/orcl_full_stanctl_061vp2sb_1_1';
RMAN> alter database mount;

2.4.恢复数据文件

RMAN> catalog backuppiece '/home/oracle/orcl_full_021vp2qu_1_1';
RMAN> catalog backuppiece '/home/oracle/orcl_full_031vp2qu_1_1';
RMAN> catalog backuppiece '/home/oracle/orcl_full_041vp2s7_1_1';
RMAN> catalog backuppiece '/home/oracle/orcl_full_051vp2s9_1_1';
RMAN> run {
allocate channel d1 type disk;
allocate channel d2 type disk;
restore database;
recover database;
release channel d1;
release channel d2;
}

三、只能mount同步,无法只读打开

3.1.备库开启同步

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

3.2.验证是否同步

## 备库查询MRP0恢复进程应用块数
SQL> SELECT PROCESS,STATUS,THREAD#,SEQUENCE#,BLOCK#,BLOCKS,DELAY_MINS FROM V$MANAGED_STANDBY;

PROCESS    STATUS     THREAD#  SEQUENCE# BLOCK# BLOCKS DELAY_MINS
------- ------------ --------- --------- ------ ------ ----------
DGRD    ALLOCATED        0        0        0      0        0
ARCH    CLOSING          1        34       1     342       0
DGRD    ALLOCATED        0        0        0      0        0
ARCH    CONNECTED        0        0        0      0        0
ARCH    CONNECTED        0        0        0      0        0
ARCH    CONNECTED        0        0        0      0        0
RFS     IDLE             1        0        0      0        0
RFS     IDLE             0        0        0      0        0
RFS     IDLE             1        35      23      1        0
MRP0    APPLYING_LOG     1        35      23    102400     0

10 rows selected.

SQL> / 

PROCESS   STATUS    THREAD# SEQUENCE# BLOCK# BLOCKS DELAY_MINS
------- ----------- ------- --------- ------ ------ ----------
DGRD    ALLOCATED      0       0        0      0        0
ARCH    CLOSING        1       34       1     342       0
DGRD    ALLOCATED      0       0        0      0        0
ARCH    CONNECTED      0       0        0      0        0
ARCH    CONNECTED      0       0        0      0        0
ARCH    CONNECTED      0       0        0      0        0
RFS     IDLE           1       0        0      0        0
RFS     IDLE           0       0        0      0        0
RFS     IDLE           1       35       27     1        0
MRP0    APPLYING_LOG   1       35       27   102400     0

10 rows selected.

SQL> /

PROCESS   STATUS   THREAD# SEQUENCE# BLOCK# BLOCKS DELAY_MINS
------- ---------- ------- --------- ------ ------ ----------
DGRD    ALLOCATED     0       0        0      0        0
ARCH    CLOSING       1       34       1     342       0
DGRD    ALLOCATED     0       0        0      0        0
ARCH    CONNECTED     0       0        0      0        0
ARCH    CONNECTED     0       0        0      0        0
ARCH    CONNECTED     0       0        0      0        0
RFS     IDLE          1       0        0      0        0
RFS     IDLE          0       0        0      0        0
RFS     IDLE          1       35      28      1        0
MRP0    APPLYING_LOG  1       35      28    102400     0

10 rows selected.

## 主库查询归档日志序列号
SQL> select max(sequence#),thread# from v$archived_log where RESETLOGS_CHANGE# = (SELECT RESETLOGS_CHANGE# FROM V$DATABASE_INCARNATION WHERE STATUS = 'CURRENT') GROUP BY THREAD#;

MAX(SEQUENCE#) THREAD#
-------------- -------
     34           1

## 备端查询归档日志序列号
SQL> select max(sequence#),thread# from v$archived_log where applied='YES' and RESETLOGS_CHANGE# = (SELECT RESETLOGS_CHANGE# FROM V$DATABASE_INCARNATION WHERE STATUS = 'CURRENT') GROUP BY THREAD#;

MAX(SEQUENCE#) THREAD#
-------------- -------
     33           1

## 检查alert日志是否正常
2023-06-27T16:44:48.145275+08:00
MRP0 (PID:24798): Media Recovery Waiting for T-1.S-36
2023-06-27T16:44:48.243077+08:00
 rfs (PID:24785): Selected LNO:4 for T-1.S-36 dbid 1668400254 branch 1140619521
2023-06-27T16:44:48.243519+08:00
ARC1 (PID:24769): Archived Log entry 5 added for T-1.S-35 ID 0x6371a37e LAD:1
2023-06-27T16:44:49.181453+08:00
Recovery of Online Redo Log: Thread 1 Group 4 Seq 36 Reading mem 0
  Mem# 0: /oradata/orcldg/standby_redo04.log

## 备库应用是否存在延迟
SQL> select name,value from v$dataguard_stats;

NAME                     VALUE
--------------------- ------------
transport lag         +00 00:00:00
apply lag             +00 00:00:00
apply finish time
estimated startup time     5

四、主库创建测试表,备库升级后验证数据是否同步

SQL> create user test identified by admin;

User created.

SQL> grant create session,resource to test;

Grant succeeded.

SQL> conn test/admin

Connected.

SQL> create table t1 (id number);

Table created.

SQL> insert into t1 values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;  

   ID
 ------
   1

五、备库进行故障转移

由于跨版本无法进行正常的主备切换,故采用故障转移的方式,将备库改为主库,进行升级操作。

## 备库
SQL> alter database recover managed standby database finish;
SQL> alter database commit to switchover to primary;

## 升级模式打开数据库
SQL> shutdown immediate
SQL> startup upgrade

六、开始升级

## 切换后的新主库执行升级脚本
cd $ORACLE_HOME/bin
./dbupgrade
或
$ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql

七、升级后打开数据库,验证同步数据

## 启动数据库
SQL> startup
SQL> conn test/admin

Connected.

SQL> select * from t1;

 ID
-----
  1
  
升级后,数据正常,所以此方式可以作为升级迁移数据的一种方式。

八、部署过程中遇到的问题

8.1.不能使用rman duplicate方式复制主端数据库

因为主备端RMAN版本不一致造成此方式无法使用,报错现象如下:文章来源地址https://www.toymoban.com/news/detail-727267.html

[oracle@dg-19 ~]$ rman target sys/admin@orcl auxiliary sys/admin@orcldg nocatalog

Recovery Manager: Release 19.0.0.0.0 - Production on Tue Jun 27 15:59:11 2023
Version 19.13.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 11.2.0.4

8.2.升级后用户无法登录的问题

## 错误现象:
SQL> conn test/admin

ERROR:ORA-01017: invalid username/password; logon denied

## 原因
Oracle 19c SEC_CASE_SENSITIVE_LOGON参数对用户登录的影响:
(1)设置为FALSE,关闭密码大小写限制,会造成用户无法登录。
(2)设置为TRUE,开启密码大小写限制,用户登录正常。

## 解决方法
(1)alter system set sec_case_sensitive_logon=true;
(2)如Oracle 19c 需要开启关闭密码大小写限制。需要在sqlnet.ora 文件添加参数:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8。

然后重新设置用户密码:
SQL> alter user test identified by admin;
SQL> conn test/admin

Connected.

SQL> conn test/ADMIN

Connected.

也可登录成功。

到了这里,关于Oracle Dataguard跨版本数据迁移(11.2.0.4~19.13.0.0)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Oracle 19c 配置并启用PDB数据库

            在Oracle 19c多租户环境中,默认情况下,使用startup命令启动数据库实例后,你会发现PDB数据库的状态为MOUNT状态,PDB不会随着CDB启动而启动。 使用sqlplus以管理员身份登录数据库 如果数据库在oracle账号下,则切换到oracle账号 使用如下命令查看数据库类型  若是CDB,则

    2024年01月21日
    浏览(62)
  • Oracle19c数据库安装 - 基于Linux环境

    安装文件链接在文章末尾。 本文介绍多种在Linux环境下安装Oracle19c数据库软件和Oracle数据库的方式,多种方式选择其中一种即可,适用于19c数据库学习环境的配置。 数据库软件和数据库是不同的,都需要安装。 关闭防火墙和selinux 更改完reboot,使其生效 搭建yum,安装依赖包

    2024年02月15日
    浏览(63)
  • Oracle数据库从入门到精通系列之二十一:Oracle 19c数据库增加重做日志大小

    在此最佳实践中,我们增加了 Oracle 重做日志的大小以提高数据库性能。适当调整数据库重做日志的大小可以减少数据库中的等待事件,从而优化数据库系统。 数据库重做日志至少包含两个文件,负责存储对数据库所做的任何更新。重做日志对于数据库至关重要,因为它们可

    2024年04月26日
    浏览(53)
  • 从 Oracle 到 MySQL 数据库的迁移之旅

    目录 引言 一、前期准备工作 1.搭建新的MySQL数据库 2 .建立相应的数据表 2.1 数据库兼容性分析 2.1.1 字段类型兼容性分析 2.1.2 函数兼容性分析 2.1.3 是否使用存储过程?存储过程的个数?复杂度? 2.1.4 是否使用触发器?个数?使用的场景? 2.2 建表过程中其他需要注意的事项

    2024年04月11日
    浏览(54)
  • oracle19c容器数据库rman备份特性-----性能优化(三)

    目录 冗余备份片 1.备份的时候指定 2.rman配置中设定 归档备份(将备份集保留) 二级备份(将备份文件保留) 1.备份闪回恢复区的恢复文件 2.备份所有恢复文件 recovery catalog database 1.創建recovery catalog 2.创建VPC  data recovery advisor 备份 如果一个数据文件很大,可以设置多通道并

    2024年02月01日
    浏览(56)
  • Oracle到PostgreSQL数据库的语法迁移手册(建议收藏)

    异构数据库的迁移(譬如从Oracle迁移到PostgreSQL)工作主要包括三个方面, 数据库对象的迁移,包括库、模式、表、索引、视图、触发器、存储过程等等; 数据内容的迁移,主要指的是数据表中的数据; 数据应用的迁移,主要指的是应用中SQL语句的迁移。 目前对于数据库对

    2024年04月08日
    浏览(78)
  • Oracle 12c/19c PDB数据库配置自动启动

    在Oracle 12c/19c多租户环境中,默认情况下,使用startup命令启动数据库实例后,你会发现PDB数据库的状态为MOUNT状态,PDB不会随着CDB启动而启动。如下例子所示: Oracle 12.1.0.2之前,CDB启动后,所有的PDB都处于加载状态(MOUNTED)。CDB启动时,没有默认机制自动启动PDB。只能通过在

    2024年02月07日
    浏览(60)
  • oracle 19c容器数据库data dump数据泵传输数据(4)---网络传输

    Transporting a Database Over the Network: Example 这个的方式导入可以不需要传输dmp文件,我原本是想从11g导入到pdb2的,但是因为版本的原因,就直接实验从pdb1导入到pdb2吧。 这种方式和前面完全传输的方式类似,不需要事先在目标数据库创建相同的表空间,而且不也不用有导出数据文

    2024年01月18日
    浏览(58)
  • 从MySQL迁移到Oracle数据库的详细步骤和方法

    在一些情况下,可能需要将现有的MySQL数据库迁移到Oracle数据库。本文将详细介绍如何进行这一迁移过程,涵盖了备份、转换和导入等关键步骤,以帮助你顺利完成数据库迁移。 在开始迁移之前,务必备份你的MySQL数据库,以便在出现问题时可以还原数据。 确保你已经安装了

    2024年02月08日
    浏览(55)
  • Oracle数据库19c OCP 1z0-082考场真题解析第24题

    考试科目:1Z0-082 考试题量:90 通过分数:60% 考试时间:150min 本文为云贝教育郭一军guoyJoe原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。【云贝教育】Oracle 19c OCP 082题库解析(24) - 课程体系 - 云贝教育 24.Which three statements are true reg

    2024年01月18日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包