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 < 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/962464@orcl_pri auxiliary sys/962464@orcl_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;--有这边就说明搭建成功