DG的一些小问题整理(一)

DATA GUARD管理遇到的一些问题

首先在做dg的时候,要把primary 当中的密码文件,控制文件(standby模式),数据文件全都拷贝到standby的对应目录当中,在复制的过程当中先复制oradata下的所有文件,之后复制standby控制文件。

在做dg 的时候一定要注意primary和standby 的参数文件的差别,需要注意的参数是

primary:

DB_UNIQUE_NAME=pmdb

LOG_ARCHIVE_CONFIG='DG_CONFIG=(pmdb,pmdbdg)'

LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pmdb'

LOG_ARCHIVE_DEST_2='SERVICE=pmdbdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pmdbdg'

FAL_SERVER=pmdbdg

FAL_CLIENT=pmdb

DB_FILE_NAME_CONVERT='/u01/oracle/oradata/pmdbdg/','/u01/oracle/oradata/pmdb/'

LOG_FILE_NAME_CONVERT= '/u01/oracle/oradata/pmdbdg/','/u01/oracle/oradata/pmdb/'

STANDBY_FILE_MANAGEMENT=AUTO

LOG_ARCHIVE_DEST_STATE_2=ENABLED;

standby:

DB_UNIQUE_NAME=pmdbdg

LOG_ARCHIVE_CONFIG='DG_CONFIG=(pmdb,pmdbdg)'

LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pmdbdg'

LOG_ARCHIVE_DEST_2='SERVICE=pmdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pmdb'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCUSIVE

FAL_SERVER=pmdb

FAL_CLIENT=pmdbdg

DB_FILE_NAME_CONVERT='/u01/oracle/oradata/pmdb/','/u01/oracle/oradata/pmdbdg/'

LOG_FILE_NAME_CONVERT= '/u01/oracle/oradata/pmdb/','/u01/oracle/oradata/pmdbdg/'

STANDBY_FILE_MANAGEMENT=AUTO

这里还要注意的一点是db_name这个参数,这个参数必须要一样,是primary上的参数。否则数据库没有办法开启。会报一个参数文件为一个实例名,控制文件属于另一个实例的报错。

启动的时候一定要先启动Standby后启动primary,在启动的时候,很有可能primary无法开启,当遇到这个问题的时候,有以下的几种处理方法。

ORA-00210: cannot open the specified control file

ORA-00202: control file: ‘/u01/app/oracle/oradata/orcl/control01.ctl‘

ORA-27086: unable to lock file - already in use

思路:

1、看一下"lk" and "sgadef.dbf"这两个文件是不是存在着,如果存在将其删掉;

2、看是不是有后台进程存在;

3、看一下oracle的共享内存段及信号集(semaphores)是不是还存在着;

实际操作:

[oracle@linux ~]$ cd $ORACLE_HOME/dbs

[oracle@linux dbs]$ ls

hc_SID.dat initdw.ora init.ora lkSID orapwSID spfileSID.ora

[oracle@linux dbs]$ rm lkSID

[oracle@linux dbs]$ ls

hc_SID.dat initdw.ora init.ora orapwSID spfileSID.ora

[oracle@linux dbs]$ ps -ef|grep ora_|grep SID

oracle 4981 1 0 09:00 ? 00:00:00 ora_pmon_SID

oracle 4983 1 0 09:00 ? 00:00:00 ora_psp0_SID

oracle 4985 1 0 09:00 ? 00:00:00 ora_mman_SID

oracle 4987 1 0 09:00 ? 00:00:00 ora_dbw0_SID

oracle 4989 1 0 09:00 ? 00:00:00 ora_lgwr_SID

oracle 4991 1 0 09:00 ? 00:00:01 ora_ckpt_SID

oracle 4993 1 0 09:00 ? 00:00:01 ora_smon_SID

oracle 4995 1 0 09:00 ? 00:00:00 ora_reco_SID

oracle 4997 1 0 09:00 ? 00:00:00 ora_cjq0_SID

oracle 4999 1 0 09:00 ? 00:00:07 ora_mmon_SID

oracle 5001 1 0 09:00 ? 00:00:00 ora_mmnl_SID

oracle 5003 1 0 09:00 ? 00:00:00 ora_d000_SID

oracle 5005 1 0 09:00 ? 00:00:00 ora_s000_SID

oracle 5023 1 0 09:00 ? 00:00:00 ora_qmnc_SID

oracle 5133 1 0 09:00 ? 00:00:00 ora_q000_SID

oracle 5139 1 0 09:00 ? 00:00:00 ora_q001_SID

oracle 31755 1 1 13:21 ? 00:00:00 ora_j000_SID

[oracle@linux dbs]$ ps -ef|grep ora_|grep SID|grep pmon

oracle 4981 1 0 09:00 ? 00:00:00 ora_pmon_SID

[oracle@linux dbs]$ kill -9 4981

[oracle@linux dbs]$ ps -ef|grep ora_|grep SID|grep pmon

[oracle@linux dbs]$ ipcs -m

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

重新startup数据库,问题解决。

4.还有一点需要注意的是在配置监听的时候,一定要写好tnsname,一定要注意。

5.当整个灾备系统出现gap sequence的时候,我们需要从primary当中将数据同步到standby。具体的操做之后做文档补充,大致步骤如下:查出primary的scn号,将primary端进行增量备份,将备份集传到standby这边,进行恢复;将primary端的控制文件备份,再将其传到standby这边,进行恢复。之后清空Standby所有的日志信息,清空闪回配置等。之后正常打开即可。

6.当primary的switch over status不是正常的to standby 的时候,先从这几个地方排查:a,监听文件配置;b,参数配置:主要是arch_dest_2这个参数。查看fal_server和fal_client的状态。

当standby的switch over status不是正常的to primary 的时候,我们先不要着急,查看监听配置情况,如果所有的配置情况都正常,我们将日志先应用完,然后进行一个switch over to standby 操作,看看能否成功,因为有时候是因为起初配置的问题,这个状态显示一直是不正常的,但是切换没有问题。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180604G0WYOH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券