前言 经过交流群中朋友的多次要求,这次给大家分享一下 RAC to Single 的 ADG 搭建教程!
一、环境准备 老规矩,测试环境 实战 演示:
主机名
ip
DB Version
db_name
db_unique_name
主库节点一
lucifer01
10.211.55.100
11.2.0.4
orcl
主库节点二
lucifer02
10.211.55.101
11.2.0.4
orcl
备库
luciferdg
10.211.55.110
11.2.0.4
orcl
📢 以下几点需要注意:
db_unique_name 主备库不能相同
db_name主备库需保持一致
主备库DB版本需保持一致
二、搭建过程 1、Oracle软件安装 使用我写的 Oracle 一键安装脚本,快速安装主库 RAC 和备库单机。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cd ../racdb vagrant up vagrant ssh node1su - rootcd /softsh rac_install.sh AI写代码bash
简单等待一段时间,Oracle RAC 就安装成功了!
2、环境配置 搭建 ADG 之前,需要先 配置 一下环境信息,包括主机名解析以及 TNS。
1、配置 hosts 文件
主库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ##节点一#dg cat<<EOF>> /etc/hosts10.211 .55 .110 luciferdg EOF ##节点二#dg cat<<EOF>> /etc/hosts10.211 .55 .110 luciferdg EOF AI写代码bash * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11
备库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ##dg cat<<EOF>>/etc/hosts10.211.55.100 lucifer0110.211.55.101 lucifer0210.211.55.105 lucifer-scan EOF AI写代码bash * 1 * 2 * 3 * 4 * 5 * 6
2、配置 TNS
主库+备库,在 root 用户下执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 ##tnsnames.ora su - oracle -c "cat <<EOF > > /u01/app/oracle/product/11.2.0/db/network/admin/tnsnames.ora##FOR DG BEGIN ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = lucifer-scan)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) ORCL1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = lucifer01)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) ORCL2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = lucifer02)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) ORCLDG = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = luciferdg)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) ##FOR DG BEGIN EOF" AI写代码bash* 1* 2* 3* 4* 5* 6* 7* 8* 9* 10* 11* 12* 13* 14* 15* 16* 17* 18* 19* 20* 21* 22* 23* 24* 25* 26* 27* 28* 29* 30* 31* 32* 33* 34* 35* 36* 37* 38* 39* 40* 41* 42* 43
3、主库开启归档和强制日志
开启 归档模式(需要停机 ):
1 2 3 4 5 6 7 8 9 10 11 12 13 srvctl stop database -d orcl -o immediate srvctl start instance -d orcl -i orcl1 -o mount alter database archivelog; alter database open; srvctl start instance -d orcl -i oorcl2 AI写代码bash * 1 * 2 * 3 * 4 * 5
开启强制日志模式(可在线开启 ):
1 2 3 4 5 alter database force logging; AI写代码sql * 1
4、复制参数文件和密码文件至备库
复制参数文件至备库(备库执行),要在 oracle 用户下复制:
1 2 3 4 5 6 7 su - oracle scp oracle@lucifer01 :/tmp/initorcldg .ora /tmpAI 写代码bash * 1 * 2
备库创建目录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 mkdir -p /u01/app /oracle/admin/orcl/adumpsu - oracle -c "mkdir -p /oradata/orcl/datafile" su - oracle -c "mkdir -p /oradata/orcl/onlinelog" su - oracle -c "mkdir -p /oradata/orcl/tempfile" mkdir -p /u01/app /oracle/fast_recovery_area/orcl chown -R oracle:oinstall /u01/app /oracle/admin/orcl/adump chown -R oracle:oinstall /u01/app /oracle/fast_recovery_area AI写代码bash
备库修改参数文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 AI写代码bash
复制密码文件至备库(备库执行),要在 oracle 用户下复制:
1 2 3 4 5 6 7 su - oracle scp oracle@lucifer01 :/u01/app/oracle/product/ 11.2 .0 /db/dbs/orapworcl1 /u01/app/oracle/product/11.2 .0 /db/dbs/orapworclAI 写代码bash * 1 * 2
5、主库添加 stanby log 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 set pagesize100set col select ; select * from v$ log ; AI写代码sql
📢 注意:
stanby log 日志大小与 redo log 日志保持一致
stanby log 数量: standby logfile=(1+logfile组数)*thread=(1+3)*1=4 组,需要加 4 组 standby logfile
thread 要与 redo log 保持一致,如果是 rac,需要增加多个 thread 对应的 standby log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ALTER DATABASE ADD STANDBY LOGFILE thread 1 group 5 ('+DATA' ) SIZE 120 M,group 6 ('+DATA' ) SIZE 120 M,group 7 ('+DATA' ) SIZE 120 M;ALTER DATABASE ADD STANDBY LOGFILE thread 2 group 8 ('+DATA' ) SIZE 120 M,group 9 ('+DATA' ) SIZE 120 M,group 10 ('+DATA' ) SIZE 120 M;select * from v$standby_log; AI写代码sql * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11
6、备库开启到 nomount 状态
1 2 3 4 5 startup nomount pfile ='/tmp/initorcldg.ora' ; AI写代码sql * 1
3、 RMAN DUPLICATE rman 恢复备库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 rman target sys/oracle@orcl1 AUXILIARY sys/oracle@orcldg run { allocate channel prmy1 type disk; allocate channel prmy2 type disk; allocate auxiliary channel aux1 type disk; allocate auxiliary channel aux2 type disk; DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK; } AI写代码bash
主库设置 ADG 参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ALTER SYSTEM SET LOG_ARCHIVE_CONFIG ='DG_CONFIG=(ORCL,ORCLDG)' ; ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 ='LOCATION=+DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCL' ; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 ='SERVICE=orcldg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLDG' ; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 =ENABLE; ALTER SYSTEM SET LOG_ARCHIVE_FORMAT ='%t_%s_%r.arc' SCOPE =SPFILE; ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES =4; ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE =EXCLUSIVE SCOPE =SPFILE; ALTER SYSTEM SET FAL_SERVER =ORCLDG; ALTER SYSTEM SET FAL_CLIENT =ORCL; ALTER SYSTEM SET DB_FILE_NAME_CONVERT ='/oradata' ,'+DATA' SCOPE =SPFILE; ALTER SYSTEM SET LOG_FILE_NAME_CONVERT ='/oradata' ,'+DATA' SCOPE =SPFILE; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT =AUTO; AI写代码sql * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12
4、备库开启日志应用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 alter database open read only ;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION ;select database_role,open_mode from v$database ; DATABASE_ROLE OPEN_MODE PHYSICAL STANDBY READ ONLY WITH APPLYSQL > SELECT protection_mode FROM v$database ; PROTECTION_MODE MAXIMUM PERFORMANCE AI写代码sql * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16
5、主库开启 LOG_ARCHIVE_DEST_STATE_2 确认主备之前没有问题,主库开启同步:
1 2 3 4 5 ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE ; AI写代码sql * 1
写在最后 ADG 的搭建过程比较简单,有很多朋友经常问,单机到单机,RAC 到单机,RAC到RAC的教程。其实,这几种搭建方式差别不大,只需要修改一些参数即可!