首页 > 数据库 > Oracle > Oracle 单机配置DataGuard
一.主库参数配置
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。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21374452/viewspace-2773108/ ,如需转载,请注明出处,否则将追究法律责任。