DG日志不应用,GAP,主备切换解决思路与办法

对于DG故障解决思路,DG日志切换不进行应用,DG出现GAP解决方法,DG主备库切换,

当DG出现故障时,第一时间检测alert日志,服务器OS日志,网络是否通畅。

1、当DG出现日志不能传输到备库
   一、TNS配置错误,监听配置错误。
   二、主备库初始化参数文件配置错误(如archive_log_dest文件位置错误)。
   三、备库控制文件过旧,从主库生成一个STANDBY CONTROL过去。 
       SQL> alter database create standby controlfile as 'c:\control01.ctl';。
   四、备库是否应用了Failovers 。 
               
下面模拟备库应用了Failovers ,我这个是进行切换过的
备库执行
SQL>  alter database recover managed standby database finish; 

Database altered.


备库
SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_ST
ATUS from v$database;

PROTECTION_MODE      OPEN_MODE  DB_UNIQUE_NAME                 DATABASE_ROLE
-------------------- ---------- ------------------------------ ----------------
SWITCHOVER_STATUS
--------------------
MAXIMUM PERFORMANCE  MOUNTED    primary                        PHYSICAL STANDBY
TO PRIMAR

主库
SQL> select PROTECTION_MODE,OPEN_MODE,DB_UNIQUE_NAME,DATABASE_ROLE,SWITCHOVER_ST
ATUS from v$database;

PROTECTION_MODE      OPEN_MODE  DB_UNIQUE_NAME                 DATABASE_ROLE
-------------------- ---------- ------------------------------ ----------------
SWITCHOVER_STATUS
--------------------
MAXIMUM PERFORMANCE  READ WRITE standby                        PRIMARY
SESSIONS ACTIVE

主库alert文件:

ARC1: All Archive destinations made inactive due to error 394
ARC1: Failed to archive thread 1 sequence 1 (394)
ARCH: Archival stopped, error occurred. Will continue retrying
Wed Oct 30 10:25:54 2013
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_arc1_1236.trc:
ORA-16038: log 2 sequence# 1 cannot be archived
ORA-00394: online log reused while attempting to archive it
ORA-00312: online log 2 thread 1: 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\STANDBY\ONLINELOG\O1_MF_2_96YY5JSW_.LOG'


ARC1: All Archive destinations made inactive due to error 394
*** 2013-10-30 10:25:54.796 58942 kcrr.c
kcrrfail: dest:1 err:394 force:0 blast:1
*** 2013-10-30 10:25:54.828 20146 kcrr.c
ORA-16038: log 2 sequence# 1 cannot be archived
ORA-00394: online log reused while attempting to archive it
ORA-00312: online log 2 thread 1: 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\STANDBY\ONLINELOG\O1_MF_2_96YY5JSW_.LOG'
*** 2013-10-30 10:27:54.734
*** 2013-10-30 10:27:54.734 20146 kcrr.c
*** 2013-10-30 10:28:54.765
kcrrwkx: work to do 0x1 (start)
*** 2013-10-30 10:28:54.781 20146 kcrr.c

这个时候导致主库不再向备库传送日志了,我们只需要重建STANDBY控制文件就行

SQL> alter database create standby controlfile as 'c:\control01.ctl';。

其中当真正主库出现故障的Failovers的时候

一.查看是否有日志GAP,没有应用的日志: ­
    SQL> SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG; 
  SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP; 
  如果有,则拷贝过来并且注册 
    SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE '路径'; 
    重复查看直到没有应用的日志: 
二. 然后停止应用归档: 
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 
三. 下面将STANDBY数据库切换为PRIMARY数据库:
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH; 
    或 
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE; 
  SQL> SELECT DATABASE_ROLE FROM V$DATABASE; 
  DATABASE_ROLE 
  ---------------- 
  PHYSICAL STANDBY 
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 


2、日志传输到备库不能应用。


 一、是否产生了GAP 拷贝缺失的日志重新注册日志,如果GAP缺失的归档日志过多,切归档日志已经删除了,那就必须重新搭建DG。

 二、是否设置了REDO延迟


下面就简单说说手工处理日志GAP的步骤:
1、在备库检查是否有日志缺失
SQL> select * from V$ARCHIVE_GAP;

2、在主库中查询缺失的日志的所在路径和名称

SQL> SELECT NAME FROM V$ARCHIVED_LOG 

如果把日志移动到其他路径,则把日志所在路径换成当前实际所在路径。

3、把日志拷贝到备库上

4、在备库上手工注册上一步中从主库拷贝来的日志
SQL> ALTER DATABASE REGISTER LOGFILE '路径';

5、观察备库的alert日志信息

6、检查备库是否还有日志GAP

SQL> select * from V$ARCHIVE_GAP;

no rows selected

如果有行返回,则重复2-5步,直到查询结果是"no rows selected"。

如果日志只是临时移动到其他地方,过后会再移回原路径,则不用这么大费周折手工去手工处理了,把日志拷回原处后FAL会自动处理GAP。


3、DG主备库切换


主库: ­
1. 查看switchover 状态 ­
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; ­
      to standby 

2 切换成备库 
如果上面的结果不是to standby 还有会话运行
SQL>Alter database commit to switchover to physical standby with session shutdown; 
否则直接
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY; 
     Database altered. 
3 启动到mount和应用日志状态 
SQL> SHUTDOWN IMMEDIATE 
SQL> startup nomount; 
SQL> alter database mount standby database; 
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; 
4. 查看数据库模式 
SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status; 
SQL>select status,database_mode from v$archive_dest_status; 
备库: 
1.查看switchover状态 ­
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; 
    TO PRIMARY 
2. 切换成主库 
如果上面的结果不是to PRIMARY 还有会话运行
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown 
否则
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 
Database altered. 
SQL> shutdown immediate; 
SQL> startup; 
SQL> alter system switch logfile; 
3. 查看数据库模式 
SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status; 
SQL>select status,database_mode from v$archive_dest_status; 


至此,DG相关简单问题全部以列出。
在Oracle数据库中,进行DG(Data Guard)主备切换并更换IP可以按照以下步骤进行操作: 1. 首先,在备库上停止应用进程和DG进程。可以使用以下命令: ``` SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT; ``` 2. 在主库上禁用日志传输,以确保主备库数据同步的一致性。可以使用以下命令: ``` SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER; ``` 3. 在备库上执行switchover命令,将备库切换为主库。可以使用以下命令: ``` SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; ``` 4. 修改主库和备库的IP地址。可以使用以下命令: ``` SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE={tns name} ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME={db unique name}', 'SERVICE={tns name} ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME={db unique name}' scope=both; ``` 其中,{tns name}是新的主库的TNS名称,{db unique name}是新的主库的DB唯一名称。 5. 在主库上启用日志传输。可以使用以下命令: ``` SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; ``` 6. 在新的主库上启动应用进程和DG进程。可以使用以下命令: ``` SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT; ``` 7. 最后,检查主备库状态以确保切换成功。可以使用以下命令: ``` SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; ``` 如果返回结果为TO PRIMARY,则表示已成功切换到新的主库。 需要注意的是,在执行DG主备切换并更换IP时,需要谨慎操作,确保数据一致性和系统稳定性。建议在进行操作前,先进行备份并制定详细的操作计划。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值