搜索
您的当前位置:首页正文

Oracle11gR2Database和ActiveDataGuard迁移案例

2023-11-18 来源:字库网

客户一套核心系统由一台Oracle Database 11.2.0.3.4单机和一台Active Data Guard组成,分别运行在两台PC服务器上,Oracle Linux

客户一套核心系统由一台Oracle Database 11.2.0.3.4单机和一台Active Data Guard组成,分别运行在两台PC服务器上,Oracle Linux 5.8 x86_64bit操作系统,两台服务器都未接存储设备;由于原有设备老旧等原因,现在要将这套Oracle数据库系统(主库和ADG库)迁移到新采购的两台服务器上,不跨版本,也不跨平台。为了最小化停机时间,我们先用目前最新的RMAN 0级备份在两台新服务器上restore database,之后将到目前为止的所有1级备份和归档日志restore和recover到两个数据库上,在主数据库正常停机之后把剩余的归档和在线Redo日志文件应用到两个新数据库,使他们的数据到最新,且是一致的,最后打开主数据库,恢复ADG的同步,整个过程从凌晨0点开始停机,一直持续到了4:20才迁移成功,之间遇到了不少小的问题,再次进行记录:

1.RMAN报错。

RMAN在应用部分归档日志之后收到如下报错:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 11/13/2014 00:03:03
ORA-00283: recovery session canceled due to errors
RMAN-11003: failure during parse/execution of SQL statement: alter database recover logfile '/oradata/bak/archivelog/2014_11_12/o1_mf_1_62193_b65oryl5_.arc'
ORA-00283: recovery session canceled due to errors
ORA-19755: could not open change tracking file
ORA-19750: change tracking file: '/u01/app/oracle/block_change_file'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

执行下面的SQL禁用block change tracking,数据库即可继续正常的应用archivelog:

SQL > alter database disable block change tracking;

Database altered.

2.resetlogs之后检查主库和备库的日志同步情况。

通常在主库执行以下的SQL语句可以用于检查主库和备库日志同步情况:
SQL> select dest_id,thread#,max(sequence#) from v$archived_log where resetlogs_change#=936497858 group by dest_id,thread#;

DEST_ID THREAD# MAX(SEQUENCE#)
---------- ---------- --------------
2 1 9
1 1 9

由于主数据库在打开的时候执行了alter database open resetlogs,所以查询v$archived_log要跟上resetlogs_change#,确保查看的是现在数据库的归档情况,resetlogs_change#可以通过v$database.resetlogs_change#获得,另外,由于resetlogs打开了数据库,所以sequence#重新开始计数。


3.对活动的Standby LogFile的处理。

停止主数据库之后,我们是想将原来的所有Online Redo Logfile和Standby Logfile都拷贝到新服务器,通过alter databae rename file ... to ...的方式进行重命名,没想到的是Active的Standby Logfile无法进行重命名(收到报错:ORA-01511: error in renaming log/data files),但又必须将Standby Logfile文件放在指定的目录下,下面是查询v$logfile的状态:

SQL> select group#,member from v$logfile;

GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
3
/oradata/orcl/REDO03.LOG

2
/oradata/orcl/REDO02.LOG

1
/oradata/orcl/REDO01.LOG


GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
4
/u01/app/oracle/oradata/orcl/sredo01.log

5
/oradata/orcl/sredo02.log

6
/oradata/orcl/sredo03.log


GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
7
/oradata/orcl/sredo04.log


7 rows selected.

group# 4是主数据库之前的Active Standby Logfile,无法对其进行alter database rename file操作。

SQL> alter database drop logfile group 4;
alter database drop logfile group 4
*
ERROR at line 1:
ORA-00315: log 4 of thread 1, wrong thread # 0 in header
ORA-00312: online log 4 thread 1: '/u01/app/oracle/oradata/orcl/sredo01.log'

尝试DROP GROUP组失败。

SQL> alter database add logfile member '/oradata/orcl/sredo01.log' to group 4;
alter database add logfile member '/oradata/orcl/sredo01.log' to group 4
*
ERROR at line 1:
ORA-16161: Cannot mix standby and online redo log file members for group 4

尝试添加成员失败。

SQL> ALTER DATABASE CLEAR LOGFILE GROUP 4;
ALTER DATABASE CLEAR LOGFILE GROUP 4
*
ERROR at line 1:
ORA-00350: log 4 of instance orcl (thread 1) needs to be archived
ORA-00312: online log 4 thread 1: '/u01/app/oracle/oradata/orcl/sredo01.log'

由于未归档所以直接CLEAR失败。

SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 4;

Database altered.

CLEAR UNARCHIVED成功。
对Standby Logfile的处理办法和对Online Redo Logfile的处理办法一致。

SQL> select group#,thread#,status from v$standby_log;

字库网还为您提供以下相关内容希望对您有帮助:

OracleDataGuard11g完全参考手册目录

第1章深入解析Data Guard架构,包括其基本组成和工作原理,为后续配置提供基础。第2章至第4章着重于实现Oracle Data Guard的过程,从逻辑备用数据库的设置,到重做处理的执行,确保数据一致性。第5章介绍了Oracle Data Guard Broker,一个用于增强数据保护功能的中间组件,增强数据的同步和传输效率。第6章...

OracleDataGuard11g完全参考手册内容简介

Oracle Data Guard 11g 完全参考手册,由卡彭特和米克斯两位权威Oracle专家共同编撰,是一本深度探讨Oracle数据库保护解决方案的权威指南。该书专注于Data Guard在数据保护、可用性和灾难恢复领域的卓越性能,旨在为读者提供全面的知识基础。书中详细解读了Data Guard的核心概念和技术,包括最佳实践的配置策略,...

如何准确查询oracle dataguard 主从同步相差多长时间

算法多样, 一种方法如下:Apply/transport lags: v$dataguard_stats view will show the general synchronization status of standby database. Better to use on 11gR2 even with the latest PSU (Check bugs : 13394040, 7119382,9968073, 7507011, 13045332, 6874522).SQL> set lines 200 SQL> c...

oracle dataguard 和 oracle active dataguard 有什么不同

Data Guard可以以只读的方式打开数据库,但此时Media Recovery利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过程中数据库就不能打开查询,也就是说日志应用和只读打开两个状态是互斥的。Oracle 11g 中推出的Active Data Guard功能解决了这个矛盾,在利用日志恢复数据的同时可以用只读的方...

win2012系统安装Oracle11g DataGuard 逻辑备库

Win2012安装Oracle11gDG逻辑备库马飞2016-12--5一、系统安装通过Vmwareworkstation安装两台虚拟机,分别用于做主库和从库。操作系统:cn_windows_server_2012_r2_x64_dvd_2707961.iso详细安装过程省略。1.1主库配置主机名:dg1实例名:dg1数据库名:dgIP:192.168.8.100关闭防火墙内存3G磁盘:30G1.2...

oracle 11g dataguard能做到热备吗?能自动切换吗

dataguard的热备就是就是逻辑DG(有一点延迟,但是基本上数据量不大的话,还是可以的),现在用的不多,现在应用多的一般都是物理DG。因为物理DG比逻辑dg更加稳定,而且不会出现太大的资源调用,影响系统。自动切换这里,要说明,dg的切换是有一套流程的,都可以自动有脚本完成,但是最后一步一定是手动...

oracle 11g dataguard ORA-10458问题求助

ORA-10458: standby database requires recovery ORA-01194: 文件 1 需要更多的恢复来保持一致性 ORA-01110: 数据文件 1: '/u01/app/oracle/oradata/db1/system01.dbf'2 原因分析 在pfile中有个参数 .control_files='/u01/app/oracle/oradata/db1/control01.ctl','/u01/app/oracle/oradata/...

有没有朋友做过oracle主从配置,最好有详细文档

1、oracle双机热备叫做DataGuard简称DG,简单来说就一些步骤,每个步骤都有些概念需要了解。2、10g和11g稍微有点区别,10g备库在热备状态不能open查询,11g支持ActiveDataguard备库可以在热备状态open并select数据:alter database open read only;。3、DG多配置几次就会轻车熟路。4、首先数据库必须开启...

OracleDataGuard11g完全参考手册作者简介

Oracle DataGuard 11g的权威指南中,我们有幸了解到两位经验丰富的技术专家。Larry Carpenter,作为Oracle的一员,他的职位是产品经理,且隶属于服务器技术MAA产品管理团队。他以其卓越的才华和35年的丰富经验,在Oracle用户社区中被公认为DataGuard领域的权威。Larry不仅在数据库管理领域造诣深厚,还精通英语...

OracleDBA面对全新工作环境应该了解什么

1、先要了解当前的Oracle 数据库的版本和平台和相关信息这个很重要,忙乎了半天还知道你的数据库是哪个版本,跑在什么系统上,那岂不是很悲哀,所以我个人认为这是第一步需要了解的。下面的这些脚本可以帮助你获取你需要的相关信息。 SELECT * FROM v$version; SELECT * FROM dba_registry_database; ...

Top