oracle11g 搭建 ADG
1.实验环境
|
主库 |
备库 |
操作系统版本 |
CentOS 7.4 |
CentOS 7.4 |
数据库版本 |
11.2.0.4 |
11.2.0.4 |
实例名称 |
orclpri |
orclsla |
TNS名称 |
orcl_pri |
orcl_sla |
是否建库 |
已使用DBCA建库 |
未使用DBCA建库 |
IP |
192.168.125.66 |
192.168.125.67 |
二 配置hosts文件(主库备库都需要做)
echo > /etc/hosts
cat >> /etc/hosts <<EOF
127.0.0.1 localhost
192.168.125.66 dg_pri
192.168.125.67 dg_sla
EOF
验证图:
三 主库设置为force logging模式
SQL> alter database force logging;
验证图:
四 主库修改为归档模式
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter system set log_archive_dest_1='location=/u01/app/archive' scope=spfile;
SQL> archive log list;
验证图:
五 添加主库的standby redo log
主库添加 standby redo log:大小和 online redo 相同,比 online redo group 多一组。
这里创建的 standby redo log 在 ADG 复制过程中会自动复制到备库,因此在我们进行 ADG 复制之前创建standby redo log 是最省事的,这一步也可以放在 DG 搭建好以后才操作。
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orclpri/redo04.log') size 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orclpri/redo05.log') size 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orclpri/redo06.log') size 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orclpri/redo07.log') size 50M;
验证图:
六 创建 Listener 并配置静态注册(主备库都做)
请注意主备库的orclsid的不同以及ORACLE_HOME不同
主备库设置相同
主备库使用tnsping测试是否相同
七 在备库创建相关的目录
因为备库没有使用DBCA建库,所有有些目录没有,备库初始化数据需要用到
主库 ORACLE_BASE目录
备库 ORACLE_BASE目录
备库加上下面的文件夹
mkdir -p /u01/app/archive
mkdir -p /u01/app/oracle/admin
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oracle/fast_recovery_area/orclsla
mkdir -p /u01/app/oracle/fast_recovery_area/ORCLSLA/onlinelog
mkdir -p /u01/app/oracle/oradata/orclsla
mkdir -p /u01/app/oracle/admin/orclsla
mkdir -p /u01/app/oracle/admin/adump
mkdir -p /u01/app/oracle/admin/orclsla/adump
mkdir -p /u01/app/oracle/admin/orclsla/dpdump
mkdir -p /u01/app/oracle/admin/orclsla/pfile
mkdir -p /u01/app/oracle/admin/orclsla/scripts
/u01/app/oracle/admin/orclpri/adump
八 在主库创建 pfile 文件并修改pfile 内容
SQL> create pfile='/home/oracle/pfile' from spfile;
在/home/oracle/pfile新增下内容
*.db_unique_name=orclpri
*.log_archive_config='dg_config=(orclpri,orclsla)'
*.log_archive_dest_1='location=/u01/app/archive valid_for=(all_logfiles,all_roles) db_unique_name=orclpri'
#orcl_sla是tns名称
*.log_archive_dest_2='service=orcl_sla valid_for=(online_logfiles,primary_role) db_unique_name=orclsla'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
*.standby_file_management='auto'
#tns名称
*.fal_server='orcl_sla'
*.fal_client='orcl_pri'
#注意因sid的不同需要目录文件的转换
*.log_file_name_convert='/u01/app/oracle/oradata/orclpri','/u01/app/oracle/oradat/orclsla'
*.db_file_name_convert= '/u01/app/oracle/oradata/orclpri','/u01/app/oracle/oradata/orclsla'
SQL> shutdown immediate
SQL> startup pfile='/home/oracle/pfile'
八 将主库的参数文件copy到备库到修改
cd $ORACLE_HOME/dbs
scp /home/oracle/pfile dg_sla:/u01/app/oracle/product/11.2.0/db_1/dbs
备库
下面是添加的东西 但是做了修改
*.db_unique_name=orclsla
*.log_archive_config='dg_config=(orclpri,orclsla)'
*.log_archive_dest_1='location=/u01/app/archive valid_for=(all_logfiles,all_roles) db_unique_name=orclsla'
*.log_archive_dest_2='service=orcl_pri DB_UNIQUE_NAME=orclpri reopen=120 lgwr async valid_for=(online_logfiles,primary_role)'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
*.standby_file_management='MANUAL'
#tnsname
*.fal_server='orcl_pri'
*.fal_client='orcl_sla'
*.log_file_name_convert='/u01/app/oracle/oradata/orclpri','/u01/app/oracle/oradata/orclsla'
*.db_file_name_convert= '/u01/app/oracle/oradata/orclpri','/u01/app/oracle/oradata/orclsla'
九 使用rman同步数据文件
rman target sys/[email protected]_pri auxiliary sys/[email protected]_sla;
这步如果报备库密码错误 链接不上rman 使用orapwd 命宁生成密码文件
执行命宁
duplicate target database for standby from active database;
十开启备库并验证 数据是否能同步
备库
alter database recover managed standby database disconnect from session;
alter database open;
主库
create table test(id int);
alter system switch logfile;
备库
select * from test;--有这边就说明搭建成功