签到成功

知道了

CNDBA社区CNDBA社区

DM7 达梦 数据库 数据守护(Data Watch) (16) -- DW 备库 RSTAT 状态 INVALID 解决方法

2019-09-21 13:22 4338 0 原创 DM 达梦
作者: dave

在之前的博客,我们看了DW的搭建,如下:http://www.cndba.cn/dave/article/3713

DM7 达梦 数据库 数据守护(Data Watch) (15) — 精简版 DW实时主备搭建与切换测试
https://www.cndba.cn/dave/article/3710

http://www.cndba.cn/dave/article/3713
http://www.cndba.cn/dave/article/3713

1 现象分析

搭建之后查看在监视器中查看DW状态:

show
2029-03-21 06:56:44 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GRP_DW           453331      TRUE            MANUAL          FALSE     

IP              INST_PORT  MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RTYPE     RSTAT    N_OPEN   N_TASK   TASK_MEM_USED  FLSN           CLSN           SSLSN          SLSN           
192.168.56.191  5236       5239         2019-09-21 12:53:38  GLOBAL    VALID     OPEN           OK        DW1              OPEN        PRIMARY   REALTIME  VALID    2        0        0              45664          45664          45664          45664          
192.168.56.192  5236       5239         2029-03-21 06:56:44  GLOBAL    VALID     OPEN           OK        DW2              OPEN        STANDBY   REALTIME  INVALID  1        0        0              40798          40798          40798          40798     

#发现备库的RSTAT 是无效的。

导致这种原因是主备库的在启动的时候没有采用mount 模式启动,系统以open模式启动时会重构回滚表空间,生成 Redo 日志;导致主备库信息的不一致,从而备库的RSTAT是INVALID. 此时DW 是无法进行数据同步的。

导致这种现象的操作有两种原因:

http://www.cndba.cn/dave/article/3713

  1. 直接用dminit 初始化的数据库,dm数据库初始化之后必须先正常启动一次,否则无法进入mount。 如果使用复制数据文件的方式搭建的dw,在同步数据之前先open 一次,在操作。另外在主备库之间同步数据的时候建议采用备份恢复的方式进行,也可以避免这个问题。
  2. 搭建dw的过程中,没有采用mount 模式启动。

这个问题的解决方法就是重新同步一次数据。同步方法有:http://www.cndba.cn/dave/article/3713http://www.cndba.cn/dave/article/3713

  1. 使用DM的备份恢复,在修改oguid和备库状态。
  2. 停主库,复制数据文件到备库,在修改oguid和备库状态。

2 解决方法

我们这里使用备份恢复的方式解决。

主库:http://www.cndba.cn/dave/article/3713http://www.cndba.cn/dave/article/3713

[dave@www.cndba.cn_1 init.d]$ disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is primary, state is open
login used time: 9.355(ms)
disql V7.6.0.95-Build(2018.09.13-97108)ENT 
Connected to: DM 7.1.6.95
SQL>
SQL> backup database full backupset '/dm/dmbak/dave';
executed successfully
used time: 00:00:01.272. Execute id is 8.
SQL> 

[dave@www.cndba.cn_1 ~]$ scp -r /dm/dmbak/dave 192.168.20.192:/dm/dmbak
dmdba@192.168.20.192's password: 
dave.bak                                                                                                          100%   40MB  19.8MB/s   00:02    
dave.meta                                                                                                         100%   65KB  64.5KB/s   00:00    
[dave@www.cndba.cn_1 ~]$

备库:
先停守护进程

[dave@www.cndba.cn_2 dave]$ /etc/init.d/DmWatcherServicedw stop
Stopping DmWatcherServicedw:                               [ OK ]
[dave@www.cndba.cn_2 dave]$ 
[dave@www.cndba.cn_2 dmbak]$ /etc/init.d/DmServicedw stop
Stopping DmServicedw:                                      [ OK ]
[dave@www.cndba.cn_2 dmbak]$ 


[dave@www.cndba.cn_2 dmbak]$ cd /dm/dmdbms/bin
[dave@www.cndba.cn_2 bin]$ ./dmrman
dmrman V7.6.0.95-Build(2018.09.13-97108)ENT 
RMAN> restore database '/dm/dmdbms/data/dw/dm.ini' from backupset '/dm/dmbak/dave'
restore database '/dm/dmdbms/data/dw/dm.ini' from backupset '/dm/dmbak/dave'
Global parameter value of RT_HEAP_TARGET is illegal, use min value!
checking if the database under system path [/dm/dmdbms/data/dw] is running...[4].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[3].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[2].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[1].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[0].
checking if the database under system path [/dm/dmdbms/data/dw] is running, write dmrman info.
RESTORE DATABASE  CHECK......
RESTORE DATABASE , dbf collect......
RESTORE DATABASE , dbf refresh ......
RESTORE BACKUPSET [/dm/dmbak/dave] START......
total 4 packages processed...
RESTORE DATABASE , UPDATE ctl file......
RESTORE DATABASE , REBUILD key file......
RESTORE DATABASE , CHECK db info......
RESTORE DATABASE , UPDATE db info......
total 8 packages processed!
CMD END.CODE:[0]
restore successfully.
time used: 8013.566(ms)
RMAN> recover database '/dm/dmdbms/data/dw/dm.ini' from backupset '/dm/dmbak/dave'
recover database '/dm/dmdbms/data/dw/dm.ini' from backupset '/dm/dmbak/dave'
Global parameter value of RT_HEAP_TARGET is illegal, use min value!
checking if the database under system path [/dm/dmdbms/data/dw] is running...[4].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[3].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[2].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[1].
checking if the database under system path [/dm/dmdbms/data/dw] is running...[0].
checking if the database under system path [/dm/dmdbms/data/dw] is running, write dmrman info.
EP[0] max_lsn: 45670
RESTORE RLOG  CHECK......
CMD END.CODE:[603],DESC:[no log generates while the backupset [/dm/dmbak/dave] created]
no log generates while the backupset [/dm/dmbak/dave] created
recover successfully!
time used: 7026.979(ms)
RMAN>

启动备库到mount,在修复:http://www.cndba.cn/dave/article/3713

[dave@www.cndba.cn_2 dave]$ disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is primary, state is mount
login used time: 8.770(ms)
disql V7.6.0.95-Build(2018.09.13-97108)ENT 
Connected to: DM 7.1.6.95
SQL> sp_set_oguid(453331);
DMSQL executed successfully
used time: 21.615(ms). Execute id is 1.

SQL> alter database standby;
alter database standby;
[-720]:Error in line: 1
Dmwatcher is active, or current config not allowed to alter database.
used time: 0.947(ms). Execute id is 0.

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL executed successfully
used time: 11.236(ms). Execute id is 2.
SQL>  alter database standby;
executed successfully
used time: 8.983(ms). Execute id is 0.
SQL>  SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); 
DMSQL executed successfully
used time: 10.471(ms). Execute id is 3.
SQL>

启动守护进程:

[dave@www.cndba.cn_2 bin]$ /etc/init.d/DmWatcherServicedw start
Starting DmWatcherServicedw:                               [ OK ]
[dave@www.cndba.cn_2 bin]$

在查看监视器正常:http://www.cndba.cn/dave/article/3713

show
2029-03-21 07:21:12 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GRP_DW           453331      TRUE            MANUAL          FALSE     

IP              INST_PORT  MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RTYPE     RSTAT    N_OPEN   N_TASK   TASK_MEM_USED  FLSN           CLSN           SSLSN          SLSN           
192.168.56.191  5236       5239         2019-09-21 13:18:06  GLOBAL    VALID     OPEN           OK        DW1              OPEN        PRIMARY   REALTIME  VALID    2        0        0              45670          45670          45670          45670          
192.168.56.192  5236       5239         2029-03-21 07:21:12  GLOBAL    VALID     OPEN           OK        DW2              OPEN        STANDBY   REALTIME  VALID    2        0        0              45670          45670          45670          45670          

#================================================================================#

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2262
    原创
  • 3
    翻译
  • 579
    转载
  • 192
    评论
  • 访问:8092782次
  • 积分:4350
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ