Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

1

好友

1

主题
1#
发表于 2013-10-24 15:12:22 | 查看: 4774| 回复: 16
系统:RHEL 5.7(X64)
版本:11.2.0.3.7
最经做了一个MAA,primary是2节点的RAC,standby用的是单机ASM方式。搭建是成功了,但做failover实验的时候出现了一些问题。
模拟网络断开,将primay  RAC的public网线拔掉,断开与外界的连接。
然后我见standby切换成primary,这些都成功了,但当我想把原来的RAC恢复成standby的时候我遇见了一些问题。


RAC上做:
SQL> startup mount
SQL> alter database convert to physical standby;
数据库已更改。
SQL> shutdown immediate
ORA-01507:未装载数据库
ORACLE例程已经关闭。
SQL> startup mount
数据库装载完毕。
SQL> alter database recover managed standby database using current logfile disconnect;
数据库已更改。

这里我忽视了一个重要的事情,就是没有将主库的闪回到备库的standby_became_primary_scn,但我意识到的时候我已经做了上面的更改,所以我又做了如下事情:

SQL > alter database  recover  managed  standby database cancel;

现Primay:
select to_char(standby_became_primary_scn) failover_scn  from v$database;base;
FAILOVER_SCN
----------------------------------------
12159305102
SQL> col current_scn for 99999999999999;
SQL> select current_scn from v$database;

CURRENT_SCN
---------------
12159461145

原Primary
SQL> col current_scn for 99999999999999;
SQL> select current_scn from v$database;
CURRENT_SCN
---------------
12159330716

所以我想把RAC闪回到12159305102这个点,当时我没有开闪回功能,我用了RMAN进行了基于SCN的恢复。

[oracle@node1 ~]$ rman target /
恢复管理器: Release 11.2.0.3.0 - Production on 星期三 10月 23 17:17:19 2013
已连接到目标数据库 (未启动)

RMAN> startup mount

RMAN> restore database  until  scn 12159305102;

RMAN> recover database  until  scn 12159305102;
但是recover的最后报了如下的错误
Oracle 错误:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 1 没有从过旧的备份中还原
ORA-01110: 数据文件 1: '+DATA/bdspoc/datafile/system.256.790856085'

这回真心无语了,我合计算了,我先把RAC恢复过来吧。

RMAN> restore  datafile  1;
RMAN> recover datafile  1;
这些都没报错,但还是有问题
SQL> alter database commit to switchover to primary with session shutdown;
alter database commit to switchover to primary with session shutdown
*
第 1 行出现错误:
ORA-16139: 需要介质恢复


SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-10458: standby database requires recovery
ORA-01152: 文件 1 没有从过旧的备份中还原
ORA-01110: 数据文件 1: '+DATA/bdspoc/datafile/system.256.790856085'

与system还是没有恢复过来有关,我想可能是在standby模式下RMAN我的恢复有问题吧,现在我想把RAC做成standby不成, 想把它回退成正常状态也不成,真没辙,哪位可以告诉下解决方法,毕竟我在RAC上有完整的备份啊。
2#
发表于 2013-10-24 15:58:07
在你的RAC上:

select DATABASE_ROLE from v$database;

回复 只看该作者 道具 举报

3#
发表于 2013-10-24 15:59:15
ODM FINDING:
ODM FINDING:

Switchover the primary to a standby database

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN;

If an ORA-16139 is encountered, as long as V$DATABASE.DATABASE_ROLE=’PHYSICAL STANDBY’, then you can proceed. A common case where this can occur is when there are a large number of data files, greater than 1,000, the apply of the EOR log will timeout.. Once managed recovery is started on the new standby it will recover.

If the role was not changed then you need to cancel the switchover and review the alert logs and trace files further.



    Data Guard Physical Standby Database Setup
    A Switchover was executed making the original Primary Database the new Standby
    For some Reason the new Primary is rendered unusable before there was any Activity, i.e. before any new Redo was generated and shipped to the new Standby
    Trying to reinstate the original Primary Database (now in Standby Mode) using the Command 'ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;' fails with Error:

ORA-16139 media recovery required
Changes

Switchover to Standby.
Cause

The Command used
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;


is incorrect in this Scenario (Failover) as it must have been preceded by a
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;


Since the standby database never received and applied any Redo the above RECOVER Command was never executed and hence the COMMIT TO SWITCHOVER failed with ORA-16139.
Solution


1. To change the Database Role from 'physical standby' to 'primary' simply use:
ALTER DATABASE ACTIVATE STANDBY DATABASE;


2. Followed by
ALTER DATABASE OPEN;


3. Rebuild the Standby Database from a new Backup created after the Failover

回复 只看该作者 道具 举报

4#
发表于 2013-10-24 16:04:54
Maclean Liu(刘相兵 发表于 2013-10-24 15:58
在你的RAC上:

select DATABASE_ROLE from v$database;

SQL> select open_mode,protection_mode,protection_level,database_role,switchover_status from v$database;

OPEN_MODE             PROTECTION_MODE          PROTECTION_LEVEL     DATABASE_ROLE
-------------------- -------------------- -------------------- ----------------
SWITCHOVER_STATUS
--------------------
MOUNTED              MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE  PHYSICAL STANDBY
SWITCHOVER LATENT

回复 只看该作者 道具 举报

5#
发表于 2013-10-24 16:10:38
从之前的备份里restore 数据文件 保持PHYSICAL STANDBY 状态即可, 等同步完成 后 再切换不是很容易,建议用dg broker

回复 只看该作者 道具 举报

6#
发表于 2013-10-24 16:16:55
Maclean Liu(刘相兵 发表于 2013-10-24 15:59
ODM FINDING:
ODM FINDING:


SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
第 1 行出现错误:
ORA-16139: 需要介质恢复


SQL> alter database recover managed standby database finish force;
alter database recover managed standby database finish force
*
第 1 行出现错误:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 1 没有从过旧的备份中还原
ORA-01110: 数据文件 1: '+DATA/bdspoc/datafile/system.256.790856085'

现在我感觉是在standby模式下用先前primary的备份集好使么?

回复 只看该作者 道具 举报

7#
发表于 2013-10-24 16:17:45
你这样的failover做法,照理是不用动primary(RAC)的呀,网络恢复后,把standby(单机ASM)重做一下就好了吧

回复 只看该作者 道具 举报

8#
发表于 2013-10-24 16:17:53
你都 failover 了又没同步 怎么可能可以switchover 到primary?

回复 只看该作者 道具 举报

9#
发表于 2013-10-24 16:34:43
Maclean Liu(刘相兵 发表于 2013-10-24 16:17
你都 failover 了又没同步 怎么可能可以switchover 到primary?

你是说我原来的RAC没有做数据同步吗?我原来的standby现在已经switch over成primary了,但是我想将原来的RAC 转化成正常的standby 但除了一些问题。

回复 只看该作者 道具 举报

10#
发表于 2013-10-24 16:38:29
请搞清楚failover的本质 , 你确定你现在的 standby 和 现在的primary是同步的?

回复 只看该作者 道具 举报

11#
发表于 2013-10-24 16:40:01
你现在的standby restore 了之后又recover了 怎么把切换成standby?

回复 只看该作者 道具 举报

12#
发表于 2013-10-24 16:48:45
本帖最后由 okpaladin 于 2013-10-24 16:50 编辑
Maclean Liu(刘相兵 发表于 2013-10-24 16:38
请搞清楚failover的本质 , 你确定你现在的 standby 和 现在的primary是同步的?


我的是RAC为主数据库,单点ASM的standby 。目前我的单点standby已经变成了primary,而且外部程序也连接在这个单点上正常使用了。
我现在想把原来的RAC变成standby ,我做recover是想恢复 单点standby_became_primary_scn这个点上再做同步,但我操作的步骤出了错误。我现在不知道怎么解决了

回复 只看该作者 道具 举报

13#
发表于 2013-10-24 16:49:50
kevinlin.ora 发表于 2013-10-24 16:17
你这样的failover做法,照理是不用动primary(RAC)的呀,网络恢复后,把standby(单机ASM)重做一下就好了吧 ...

我测试演习

回复 只看该作者 道具 举报

14#
发表于 2013-10-24 17:01:51
Maclean Liu(刘相兵 发表于 2013-10-24 16:40
你现在的standby restore 了之后又recover了 怎么把切换成standby?

刘大可能是你一天看的发文帖子比较多,二是我写的也比较多,您也没细看。
现在我想把RAC 利用RMAN回退到 我做SQL> alter database convert to physical standby;
这个操作之前,但这样RAC的SCN可能会小于12159305102, 然后我再在RAC上进行角色切换开启同步,能跟目前单点的primary同步成功么?

回复 只看该作者 道具 举报

15#
发表于 2013-10-24 18:55:28
我的理解 你只要restore database 就可以了 不要做任何recover database操作,否则都可能导致你的RAC不能充当physical standby ,这样说可以理解了吗?

回复 只看该作者 道具 举报

16#
发表于 2013-10-25 09:23:14
Maclean Liu(刘相兵 发表于 2013-10-24 18:55
我的理解 你只要restore database 就可以了 不要做任何recover database操作,否则都可能导致你的RAC不能充 ...

嗯  我试试!之前recover后总是报
Oracle 错误:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 1 没有从过旧的备份中还原
ORA-01110: 数据文件 1: '+DATA/bdspoc/datafile/system.256.790856085'

回复 只看该作者 道具 举报

17#
发表于 2013-10-26 00:30:39
非常感谢Maclean Liu,我的问题解决了,由于库比较大,restore花了很长时间。
首先要重建控制文件,这样自动同步的时候会保持在同一个Incarnation上,然后将failover后RAC的archivelog删除,这样数据库就可以同步数据了。

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-5-17 20:10 , Processed in 0.058697 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569