述:
主rac ,备 asm node 做成 ADG 形式, 当主备切换,或者 failover 时: 原来的主变为备,原来的备变为主:
这个时候,原备 将以 resetlogs open 数据库,同时,ADG HA 将破坏不存在。 需要重建:
法一: 重新搭建DG 模式, 然后通过 duplicate , 原备,原主有计划的 switchover 过来。
法二: 通过flashback database 模式, 通过基于 timstamp, scn or restore checkpoint 继续同步,不管 原备是否是以resetlogs 打开。
--resetlogs or noresetlogs 区别:
RESETLOGS会初始化logs,重置log sequence号,创建一个新的incarnation。使用resetlogs,将导致online logs里的内容丢失,并且所有的备份失效,仅当online logs 随坏的情况下,才使用resetlos模式
NORESETLOGS 会继续使用已经存在,且有效的log files。
做不完全恢复必须使用resetlogs, resetlogs也可以做完全恢复。而noresetlogs则是必须做完全恢复时使用。resetlogs会重置日志序列号强制清空或重建REDO,而noresetlogs则不会这么做。
--详见其他关于笔记:
这里: 测试 方法二: 切换后,基于resetlogs open 数据库.
环境: db 11.2.0.3 os redhat 5.8 x86 64bit
1, 主备开启 flashback on ,同时 设置
闪回数据库相关参数:
① db_recovery_file_dest #决定闪回恢复区路径
② db_recovery_file_dest_size #决定闪回恢复区大小
③ db_flashback_retention_target #保留恢复最近多长时间的数据,单位为分钟。
① V$restore_point #闪回点
② V$FLASHBACK_DATABASE_LOG #闪回日终信息
③ V$FLASHBACK_DATABASE_STAT
④ v$flash_recovery_area_usage; #闪回区使用率
SQL> show parameter recover
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +LOGFILE
db_recovery_file_dest_size big integer 8000M
db_unrecoverable_scn_tracking boolean TRUE
recovery_parallelism integer 0
SQL> show parameter db_flashback
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
2, 开启归档
3, 这里可以记录创建timestamp, scn , point 时间节点:
4,在之前,主备 开启实时接受: V$ARCHIVE_DEST_STATUS 查询状态,以及日志接收方式。
SQL> /
DATABASE_MODE RECOVERY_MODE PROTECTION_MODE SYNCHRONIZATION_STATUS
--------------- ----------------------- -------------------- ----------------------
OPEN IDLE MAXIMUM PERFORMANCE CHECK CONFIGURATION
OPEN_READ-ONLY MANAGED REAL TIME APPLY MAXIMUM PERFORMANCE CHECK CONFIGURATION
UNKNOWN IDLE MAXIMUM PERFORMANCE CHECK CONFIGURATION
5: 主库rac 关库: (我这里为了了方便,直接省去了failover 操作)
[root@dominic2 bin]# ./srvctl stop database -d dominic -o immediate
然后在一个实例上通过 startup mount 状态:
执行 flashback databae to scn |timestamp to_timestamp | point :
SQL> startup mount
ORACLE instance started.
Total System Global Area 1252663296 bytes
Fixed Size 2227944 bytes
Variable Size 989856024 bytes
Database Buffers 251658240 bytes
Redo Buffers 8921088 bytes
Database mounted.
SQL> flashback database to scn 12518792;
Flashback complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
Database altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[root@dominic2 bin]# ./srvctl start database -d dominic -o open
6 备库: shutdown immediate
数据库 mount 状态,之后, flashback databae (这里可以到主库之前一点,活者在告警日志找对应点)
flashback database to ......
启用 日志应用: alter database recover managed standby database using current logfile disconnect from session;
7 查看告警日志 以及 检查数据。 (在之前的数据真都就不存在了,谨慎闪回库操作), 同时,这里做一次全备,以前的备份过期了。
8 因使用 resetlogs 后,系统一些日志已经过期,需要删除:
ORA-19815: WARNING: db_recovery_file_dest_size of 8388608000 bytes is 92.90% used, and has 595591168 remaining bytes available.
************************************************************************
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************
RMAN> crosscheck backup;
using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/rmanbak/DOMINIC_0iq4s8hk_1_1_20150420_db RECID=17 STAMP=877535796
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/rmanbak/DOMINIC_0jq4s8n0_1_1_20150420_db RECID=18 STAMP=877535971
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/rmanbak/controlfile RECID=19 STAMP=877598769
Crosschecked 3 objects
RMAN> delete noprompt expired backup;
using channel ORA_DISK_1
List of Backup Pieces
BP Key BS Key Pc# Cp# Status Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
17 17 1 1 EXPIRED DISK /home/oracle/rmanbak/DOMINIC_0iq4s8hk_1_1_20150420_db
18 18 1 1 EXPIRED DISK /home/oracle/rmanbak/DOMINIC_0jq4s8n0_1_1_20150420_db
19 19 1 1 EXPIRED DISK /home/oracle/rmanbak/controlfile
deleted backup piece
backup piece handle=/home/oracle/rmanbak/DOMINIC_0iq4s8hk_1_1_20150420_db RECID=17 STAMP=877535796
deleted backup piece
backup piece handle=/home/oracle/rmanbak/DOMINIC_0jq4s8n0_1_1_20150420_db RECID=18 STAMP=877535971
deleted backup piece
backup piece handle=/home/oracle/rmanbak/controlfile RECID=19 STAMP=877598769
Deleted 3 EXPIRED objects
RMAN > DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
主rac ,备 asm node 做成 ADG 形式, 当主备切换,或者 failover 时: 原来的主变为备,原来的备变为主:
这个时候,原备 将以 resetlogs open 数据库,同时,ADG HA 将破坏不存在。 需要重建:
法一: 重新搭建DG 模式, 然后通过 duplicate , 原备,原主有计划的 switchover 过来。
法二: 通过flashback database 模式, 通过基于 timstamp, scn or restore checkpoint 继续同步,不管 原备是否是以resetlogs 打开。
--resetlogs or noresetlogs 区别:
RESETLOGS会初始化logs,重置log sequence号,创建一个新的incarnation。使用resetlogs,将导致online logs里的内容丢失,并且所有的备份失效,仅当online logs 随坏的情况下,才使用resetlos模式
NORESETLOGS 会继续使用已经存在,且有效的log files。
做不完全恢复必须使用resetlogs, resetlogs也可以做完全恢复。而noresetlogs则是必须做完全恢复时使用。resetlogs会重置日志序列号强制清空或重建REDO,而noresetlogs则不会这么做。
--详见其他关于笔记:
这里: 测试 方法二: 切换后,基于resetlogs open 数据库.
环境: db 11.2.0.3 os redhat 5.8 x86 64bit
1, 主备开启 flashback on ,同时 设置
闪回数据库相关参数:
① db_recovery_file_dest #决定闪回恢复区路径
② db_recovery_file_dest_size #决定闪回恢复区大小
③ db_flashback_retention_target #保留恢复最近多长时间的数据,单位为分钟。
① V$restore_point #闪回点
② V$FLASHBACK_DATABASE_LOG #闪回日终信息
③ V$FLASHBACK_DATABASE_STAT
④ v$flash_recovery_area_usage; #闪回区使用率
SQL> show parameter recover
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +LOGFILE
db_recovery_file_dest_size big integer 8000M
db_unrecoverable_scn_tracking boolean TRUE
recovery_parallelism integer 0
SQL> show parameter db_flashback
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
2, 开启归档
3, 这里可以记录创建timestamp, scn , point 时间节点:
4,在之前,主备 开启实时接受: V$ARCHIVE_DEST_STATUS 查询状态,以及日志接收方式。
SQL> /
DATABASE_MODE RECOVERY_MODE PROTECTION_MODE SYNCHRONIZATION_STATUS
--------------- ----------------------- -------------------- ----------------------
OPEN IDLE MAXIMUM PERFORMANCE CHECK CONFIGURATION
OPEN_READ-ONLY MANAGED REAL TIME APPLY MAXIMUM PERFORMANCE CHECK CONFIGURATION
UNKNOWN IDLE MAXIMUM PERFORMANCE CHECK CONFIGURATION
5: 主库rac 关库: (我这里为了了方便,直接省去了failover 操作)
[root@dominic2 bin]# ./srvctl stop database -d dominic -o immediate
然后在一个实例上通过 startup mount 状态:
执行 flashback databae to scn |timestamp to_timestamp | point :
SQL> startup mount
ORACLE instance started.
Total System Global Area 1252663296 bytes
Fixed Size 2227944 bytes
Variable Size 989856024 bytes
Database Buffers 251658240 bytes
Redo Buffers 8921088 bytes
Database mounted.
SQL> flashback database to scn 12518792;
Flashback complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
Database altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[root@dominic2 bin]# ./srvctl start database -d dominic -o open
6 备库: shutdown immediate
数据库 mount 状态,之后, flashback databae (这里可以到主库之前一点,活者在告警日志找对应点)
flashback database to ......
启用 日志应用: alter database recover managed standby database using current logfile disconnect from session;
7 查看告警日志 以及 检查数据。 (在之前的数据真都就不存在了,谨慎闪回库操作), 同时,这里做一次全备,以前的备份过期了。
8 因使用 resetlogs 后,系统一些日志已经过期,需要删除:
ORA-19815: WARNING: db_recovery_file_dest_size of 8388608000 bytes is 92.90% used, and has 595591168 remaining bytes available.
************************************************************************
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************
RMAN> crosscheck backup;
using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/rmanbak/DOMINIC_0iq4s8hk_1_1_20150420_db RECID=17 STAMP=877535796
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/rmanbak/DOMINIC_0jq4s8n0_1_1_20150420_db RECID=18 STAMP=877535971
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/rmanbak/controlfile RECID=19 STAMP=877598769
Crosschecked 3 objects
RMAN> delete noprompt expired backup;
using channel ORA_DISK_1
List of Backup Pieces
BP Key BS Key Pc# Cp# Status Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
17 17 1 1 EXPIRED DISK /home/oracle/rmanbak/DOMINIC_0iq4s8hk_1_1_20150420_db
18 18 1 1 EXPIRED DISK /home/oracle/rmanbak/DOMINIC_0jq4s8n0_1_1_20150420_db
19 19 1 1 EXPIRED DISK /home/oracle/rmanbak/controlfile
deleted backup piece
backup piece handle=/home/oracle/rmanbak/DOMINIC_0iq4s8hk_1_1_20150420_db RECID=17 STAMP=877535796
deleted backup piece
backup piece handle=/home/oracle/rmanbak/DOMINIC_0jq4s8n0_1_1_20150420_db RECID=18 STAMP=877535971
deleted backup piece
backup piece handle=/home/oracle/rmanbak/controlfile RECID=19 STAMP=877598769
Deleted 3 EXPIRED objects
RMAN > DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;