Oracle 单机配置DataGuard

来源:这里教程网 时间:2026-03-03 16:43:45 作者:

一.主库参数配置 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; alter database archivelog; 二.配置监听 TNS: 主库 DBPRI =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = dbpri)     )   ) 备库: DBSTD =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = dbstd)       (UR = A)     )   ) 三.配置主库参数 --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=’dbpri’ scope=spfile; --3. 修改log_archive_config 参数,括号中为组备库的db_unique_name alter system set log_archive_config=’DG_CONFIG=(dbpri,dbstd)’ scope=both; --4. 配置log_archive_dest_1 ,主库归档位置 alter system set log_archive_dest_1=’LOCATION=/u01/archivelog/dbpri  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=dbpri’ scope=both; --5. 配置log_archive_dest_2,备份归档参数,采用LGWR异步传输方式 alter system set log_archive_dest_2=’SERVICE=dbstd LGWR ASYNC VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)  DB_UNIQUE_NAME=dbstd’ 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 文件 --9. 修改db_file_name_convert参数,主备库数据文件名称跟路径对应关系 --主库跟备库存放文件的路径不一定一样,如果一样的话可以不指定,但是不一样就需要指定,一般来说主库跟备库的实例名不一样,所以肯定是前面路径是备库数据文件路径,后面是主库路径 alter system set db_file_name_convert=’/u01/app/oracle/oradata/dbstd/’,’/u01/app/oracle/oradata/dbpri/’  scope=file; --10. 修改log_file_name_convert参数,主备库日志文件名称跟路径对应关系 Alter system set log_file_name_convert=’/u01/app/oracle/oradata/dbstd/’,’/u01/app/oracle/oradata/dbpri/’  scope=file;; --11. 设置standby_file_management为auto --设置文件管理模式,此项设置为自动,不然在主库创建数据文件后,备库不会自动创建 Alter system set standby_file_management=auto; --12.修改fal_client及fal_server Alter system set fal_client=’dbpri’ scope=both;   --主库tns Alter system set fal_server=’dbstd’ scope=both;  --备库tns 四.配置备库参数 1.密码文件,主库和备库的sys密码必须一致 -- 方式1: 使用orapwd 设置相同密码 orapwd file=orapwsbdb password= -- 方式2: scp 主库密码文件到备库$ORALCE_HOME/dbs目录下,并修改密码文件名为orapwdbstd 2.设置pfile文件并启动到nomount状态 在备库的dbs目录下创建initdbstd.ora 并参考主库添加参数 db_name='dbpri' db_unique_name='dbstd' pga_aggregate_target=13520338944     --设置跟主库一样 sga_target=40563113984               --设置跟主库一样 audit_file_dest='/u01/app/oracle/admin/dbpri/adump'     --创建这个路径 compatible='11.2.0.4.0'                                --兼容性参数 主备库要保持一致 log_archive_format='%t_%s_%r.arc' control_files='/u01/app/oracle/oradata/dbstd/control01.ctl','/u01/app/oracle/fast_recovery_area/dbstd/control02.ctl'   --注意修改文件路径中的实例名 log_archive_config='DG_CONFIG=(dbpri,dbstd)' log_archive_dest_1='LOCATION=/u01/archivelog/dbstd VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbstd' log_archive_dest_2='SERVICE=dbpri LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbpri' db_file_name_convert='/u01/app/oracle/oradata/dbpri/','/u01/app/oracle/oradata/dbstd/'     --前面是对方的,后面是本地的 log_file_name_convert='/u01/app/oracle/oradata/dbpri/','/u01/app/oracle/oradata/dbstd/' fal_client='dbstd'  --该参数与主库设置相反 fal_server='dbpri'  --该参数与主库设置相反 standby_file_management='AUTO' 用刚编辑的initdbstd.ora 文件将数据库启动到nomount状态 startup nomount pfile=’/u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/initdbstd.ora'; Create spfile from pfile; 利用spfile将数据库启动到nomount状态。 五.配置备库tns 主库tns DBPRI =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = dbpri)       (UR = A)     )   ) 备库tns: DBSTD =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = dbstd)       (UR = A)     )   ) 测试tns 主库和备库分别测试 tnsping dbpri tnsping dbstd sqlplus sys/system@dbpri as sysdba; sqlplus sys/system@dbstd as sysdba; 六.使用duplicate 创建物理standby 备库执行 -- 连接RMAN 并连接辅助(auxiliary) 实例,备库目前状态是nomount状态。 rman target sys/system@dbpri auxiliary sys/system@dbstd; -- 执行复制 -- nofilenamecheck 不进行文件名检查(如果复制数据时,备库的路径和原库一致,就需要加nofilenamecheck,否者会报错) duplicate target database for standby from active database nofilenamecheck; 七.添加standby 日志组并开启同步 1.主库添加standby 日志组 ?Standby 日志组数量: redo 日志组数量+1 ?添加前需要查看已有的日志组号 ?Standby 日志大小与普通日志相同大小即可 ?为日后主备切换做准备,所以主库上也添加standby 日志 Select * from v$log; Select * from v$logfile; 主库添加: alter database add standby logfile group 4 ('/u01/app/oracle/oradata/dbpri/redo04.log') size 50m; alter database add standby logfile group 5 ('/u01/app/oracle/oradata/dbpri/redo05.log') size 50m; alter database add standby logfile group 6 ('/u01/app/oracle/oradata/dbpri/redo06.log') size 50m; alter database add standby logfile group 7 ('/u01/app/oracle/oradata/dbpri/redo07.log') size 50m; 备库添加: alter database add standby logfile group 4 ('/u01/app/oracle/oradata/dbstd/redo04.log') size 50m; alter database add standby logfile group 5 ('/u01/app/oracle/oradata/dbstd/redo05.log') size 50m; alter database add standby logfile group 6 ('/u01/app/oracle/oradata/dbstd/redo06.log') size 50m; alter database add standby logfile group 7 ('/u01/app/oracle/oradata/dbstd/redo07.log') size 50m; 查看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; 八.总结 本篇整理了oracle 11gR2 DG 单机环境搭建过程,日志传输为LGWR ASYNC异步传输,开启real time apply。

相关推荐