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 操作,看看能否成功,因为有时候是因为起初配置的问题,这个状态显示一直是不正常的,但是切换没有问题。
领取专属 10元无门槛券
私享最新 技术干货