【DG】DataGuard搭建-11gR2单主单备

整理一份DG的搭建流程,参考了一些教程及文档,环境是Oracle 11gR2 1+1。DG计划整理三篇:搭建、概念、维护。

一、环境规划

说明:

主库和备库建议采用相同服务器配置
主库和备库建议采用相同OS版本
主库和备库需要采用相同数据库版本(含PSU)
db_name相同
db_unique_name不同
db_instance不同

二、主库参数配置
1.启用force logging(强制记录日志)
--查看

select log_mode,force_logging from v$Database;
--启用
alter database force logging;

2.启用归档

--查看

archive log list;
select log_mode from v$database;

--启用

shutdown immediate
startup mount
alter database archivelog;
alter database open;

3.配置主库监听和TNS
监听:

--监听文件默认路径$ORACLE_HOME/network/admin/listener.ora
--配置静态监听,增加SID_LIST_LISTENER部分,然后lsnrctl reload
--LISTENER是默认监听名称,静态监听配置SID_LIST_LISTENER与其对应

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.131)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
    (SID_LIST =
      (SID_DESC =
        (GLOBAL_DBNAME = pxk2)   --GLOBAL_DBNAME对应监听里的服务名
        (SID_NAME = pxk2)
        (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      )
    )

配置完成:
状态为UNKONWN代表静态监听

TNS:
--TNS文件默认路径$ORACLE_HOME/network/admin/tnsnames.ora
--方便主备切换服务名设置相同,配置如下:

tnspxk2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.131)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pxk2)
    )
  )

tnssbdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.151)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pxk2)
    )
  )

4.配置主库参数

--1.修改归档文件名后缀为.arc(可选)
alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;

--2.检查db_unique_name
show  parameter db_unique_name
alter system set db_unique_name='pxk2' scope=spfile;

--3.修改log_archive_config参数,括号中为主备库的db_unique_name
alter system set log_archive_config='DG_CONFIG=(pxk2,sbdb)' scope=both;

--4.配置log_archive_dest_1,主库归档位置
alter system set log_archive_dest_1='LOCATION=/oradata/archivelog/pxk2 
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=pxk2' scope=both;

--5.配置log_archive_dest_2,备库归档参数,采用LGWR异步传输方式
alter system set log_archive_dest_2='SERVICE=tnssbdb LGWR ASYNC 
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sbdb' scope=both;

--6.修改归档日志进程的最大数量(可选)
alter system set log_archive_max_processes=30 scope=both;
show parameter log_archive_max_processes;

--7.检查数据库口令文件的使用模式
show parameter remote_login_passwordfile
alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;

--8.修改/etc/hosts文件,追加主备库IP与主机名对应关系,备库同样配置
--如果 tns文件里的HOST直接配置的是IP则,可以不用维护hosts文件

echo "192.168.10.131 pxk" >> /etc/hosts
echo "192.168.10.151 pxk2sd >> /etc/hosts

--9.修改db_file_name_convert参数,主备库数据文件名称跟路径对应对应关系
--主库跟备库存放文件的路径不一定一样,如果一样的话可以不指定,但是不一样就需要指定,一般来说主库跟备库的实例名是不一样的,所以肯定是需要设置该参数
--前面路径是备库数据文件路径,后面是主库路径

alter system set db_file_name_convert='/oracle/app/oracle/oradata/sbdb','/oradata/datafile/pxk2/'
scope=spfile;

--10.修改log_file_name_convert参数,主备库日志文件名称跟路径对应对应关系

alter system set log_file_name_convert='/oracle/app/oracle/oradata/sbdb','/oradata/datafile/pxk2/'
scope=spfile;

--11.设置standby_file_management为auto
--设置文件管理模式,此项设置为自动,不然在主库创建数据文件后,备库不会自动创建
--有教程要求先保持manual,增加完standby redolog后再改为auto
alter system set standby_file_management=auto;

--12.修改fal_client及fal_server

alter system set fal_client='tnspxk2' scope=both;  --本地tns
alter system set fal_server='tnssbdb' scope=both;  --备库tns

部分参数修改没有添加说明,放到概念篇

三、备库参数配置
1.密码文件,主库和备库的SYS密码必须一致

--方式1:使用 orapwd 设置相同密码
orapwd file=orapwsbdb password=
--方式2:scp主库密码文件到备库$ORACLE_HOME/dbs目录下,并修改密码文件名为orapwsbdb

2.设置pfile文件并启动到nomount状态
在dbs目录下创建initsbdb.ora并参考主库添加参数

db_name='pxk2'
db_unique_name='sbdb'
pga_aggregate_target=191889408     --设置跟主库一样
sga_target=575668224               --设置跟主库一样
audit_file_dest='/u01/app/oracle/admin/sbdb/adump'     --创建这个路径
compatible='11.2.0.4.0'                                --兼容性参数 主备库要保持一致
log_archive_format='%t_%s_%r.arc'
control_files='/u01/app/oracle/oradata/sbdb/control01.ctl','/u01/app/oracle/oradata/sbdb/control02.ctl'   --注意修改文件路径中的实例名
log_archive_config='DG_CONFIG=(pxk2,sbdb)'
log_archive_dest_1='LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sbdb'
log_archive_dest_2='SERVICE=tnspxk2 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pxk2'
db_file_name_convert='/oradata/datafile/pxk2/','/oracle/app/oracle/oradata/sbdb'     --前面是对方的,后面是本地的
log_file_name_convert='/oradata/datafile/pxk2/','/oracle/app/oracle/oradata/sbdb'
fal_client='tnssbdb'  --该参数与主库设置相反
fal_server='tnspxk2'  --该参数与主库设置相反
standby_file_management='AUTO'

用刚才编辑的pfile 创建spfile

1.create spfile from pfile;
2.shutdown immediate;
3.startup nomount;
startup nomount pfile='/oracle/app/oracle/product/11.2.0/db_1/dbs/initsbdb.ora';
create spfile from pfile;

--关闭数据库正常启动到nomount状态
--查看是否使用spfile启动 show parameter spfile

3.备库配置监听与TNS
监听:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.151)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
    (SID_LIST =
      (SID_DESC =
        (GLOBAL_DBNAME = pxk2)
        (SID_NAME = sbdb)
        (ORACLE_HOME = /oracle/app/oracle/product/11.2.0/db_1)
      )
    )

ADR_BASE_LISTENER = /u01/app/oracle

DIAG_ADR_ENABLED_LISTENER = OFF

TNS:

tnspxk2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.131)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pxk2)
    )
  )

tnssbdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.151)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pxk2)
    )
  )

3.修改/etc/hosts(见主库配置)
4.测试TNS
主库和备库分别测试:
tnsping tnsprod
tnsping tnssbdb

sqlplus sys/oracle@tnspxk2 as sysdba
sqlplus sys/oracle@tnssbdb as sysdba

注意:
如果出现TNS-12543错误,关闭防火墙再试
如果tnsping出现 ORA-12541 错误,检查一下hosts文件里面是否配置正常,备库也要配置好

四、使用Duplicate创建物理standby
备库执行
--连接RMAN并连接辅助(auxiliary )实例,备库目前是nomount状态
rman target sys/oracle@tnspxk2 auxiliary sys/oracle@tnssbdb

--执行复制
--nofilenamecheck不进行文件名检查(如果复制数据库时,备库的路径和原库一致,就需要加 nofilenamecheck,否则会报错。)
duplicate target database for standby from active database nofilenamecheck;

注意:

第一次duplicate时遇到ORA-17628错误,排查后发现为需要提前创建的文件夹没有创建
参考http://blog.chinaunix.net/uid-20809130-id-5745814.html
之前设置过db_file_name_convert跟log_file_name_convert,这里就会按照设置的地址拷贝
五、添加Standby日志组并开启同步
1.主备库添加Standby 日志组
standby日志组数量:redo日志组数量+1
添加前需要查看已有的日志组号
standby日志大小与普通日志相同大小即可
为日后主备切换做准备,所以主库上也添加Standby日志

select * from v$log;

主库添加:

alter database add standby logfile group 5 ('/oradata/datafile/pxk2/stredo05.log') size 200M;
alter database add standby logfile group 6 ('/oradata/datafile/pxk2/stredo06.log') size 200M;
alter database add standby logfile group 7 ('/oradata/datafile/pxk2/stredo07.log') size 200M;
alter database add standby logfile group 8 ('/oradata/datafile/pxk2/stredo08.log') size 200M;

备库添加:

alter database add standby logfile group 5 ('/oracle/app/oracle/oradata/sbdb/stredo05.log') size 200M;
alter database add standby logfile group 6 ('/oracle/app/oracle/oradata/sbdb/stredo06.log') size 200M;
alter database add standby logfile group 7 ('/oracle/app/oracle/oradata/sbdb/stredo07.log') size 200M;
alter database add standby logfile group 8 ('/oracle/app/oracle/oradata/sbdb/stredo08.log') size 200M;

查看standby日志:

select * from v$standby_log;

打开备库:

alter database open;

2.设置同步
--1.开启实时同步(启动MRP进程),备库操作

alter database recover managed standby database using current logfile disconnect from session;
alter database recover managed standby database using current logfile disconnect; --简写

日志记录:

--2.开启同步,日志切换才会同步
alter database recover managed standby database disconnect from session;

日志记录:

--3.停止同步(关闭MRP进程)
alter database recover managed standby database cancel;

日志记录:

3.主备库检查模式
select open_mode,database_role,protection_mode,protection_level from v$database;
备库显示:

open_mode:备库标识为read only with apply ,表示应用了日志,如果关闭同步则这里只有read only
database_role:标识为主库 还是备库,此时为物理备库
protection_mode和protection_level 此时标识都是最大性能模式

六、总结
本篇整理了Oracle 11gR2环境下DG 1+1搭建过程,日志传输为LGWR ASYNC异步传输,开启real time apply

原文地址:https://cloud.tencent.com/developer/article/1816719 如果侵权,联系删除

posted @ 2024-07-23 16:31  黄多鱼  阅读(1)  评论(0编辑  收藏  举报