欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

搭建DataGuard环境

程序员文章站 2022-05-27 21:12:14
...

1. 确保源数据库在归档模式,并且是强制logging模式。shutdown immediate ;startup mount ;alter database archivelog ;alter da

1. 确保源数据库在归档模式,并且是强制logging模式。
shutdown immediate ;
startup mount ;
alter database archivelog ;
alter database force logging ;
alter database open ;
2. 确保已经建立的密码文件。(确保能够远程登录(@xxx as sysdba)
cd $Oracle_HOME/dbs/
查看是否已经建立了passwordfile .
若没有,执行下列命令。
这里要注意,oracle的密码文件都是存放在$ORACLE_HOME/dbs目录下面的。而且默认查找的时候会在目录下查找格式为orapw$ORACLE_SID文件名的密码文件,例如你的数据库名是dex,则使用下面的命令。
orapwd file=orapwdex password=xiaojun entries=20
最后验证一下,在tnsnames.ora中配置监听服务名,比如为dex70 然后执行
sqlplus sys/xiaojun@dex70 as sysdba
3. 创建standby logfile
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4
('/dhome/orcl/oradata/dex/standby1.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5
('/dhome/orcl/oradata/dex/standby2.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6
('/dhome/orcl/oradata/dex/standby2.log') SIZE 50M;


验证一下:
sys@DEX> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;


GROUP# THREAD# SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
4 0 0 YES UNASSIGNED
5 0 0 YES UNASSIGNED
6 0 0 YES UNASSIGNED
4. 修改源库的参数文件
先创建一个pfile
create pfile from spfile ;
会在$ORACLE_HOME/dbs/admin/init$ORACLE_SID.ora
加入如下内容

DB_NAME=dex
DB_UNIQUE_NAME=dex
#主备库设置
LOG_ARCHIVE_CONFIG='DG_CONFIG=(dex,dex_hell)'
#控制文件位置
CONTROL_FILES='/dhome/orcl/oradata/dex/control01.ctl','/dhome/orcl/oradata/dex/control02'
#归档目录1
LOG_ARCHIVE_DEST_1= 'location=/dhome/arch1/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dex'
#归档目录2,使用用于远程同步日志文件
LOG_ARCHIVE_DEST_2= 'SERVICE=dex_hell LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dex_hell'
#开启
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
#允许远程@ as sysdba 登陆
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30

#fail 配置 当目标数据库发生故障时,,使用本地服务 这里都使用tnsnames中service名称
FAL_SERVER=dex_hell
FAL_CLIENT=dex
#file name 替换,可以是目录,也可以是单词。替换的目的是为了目标数据库发生故障的时候,目标数据的datafile和日志文件能够在本地找到副本。
DB_FILE_NAME_CONVERT='dex_hell','dex'
#这里的配置需要和实际库中相匹配,如果dex_hell fail无法访问时,需要置换logfile的位置。
LOG_FILE_NAME_CONVERT= '/arch1/dex/','/arch1/dex_hell/'
STANDBY_FILE_MANAGEMENT=AUTO

搭建DataGuard环境