1、检查数据库主库是否在归档模式下
archive log list --默认归档
2、数据库需要开启force loggging
select force_logging from v$database; --检查force logging 参数可用性
alter database force logging; --开启force logging
4、主库网络配置(grid用户执行)
添加监听
srvctl add listener -l LISTENER_ADG -o $ORACLE_HOME -p "TCP:1527"
启动监听
srvctl start listener -l LISTENER_ADG
静态监听
LISTENER_ADG=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(KEY=LISTENER_ADG))(ADDRESS=(PROTOCOL=TCP)(HOST = 172.16.220.110)(PORT = 1527))))
SID_LIST_LISTENER_ADG
(SID_LIST =
(SID_DEST =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/db_1)
(SID_NAME=orcl1) #节点对应的sid
)
)
- 此处ORACLE_HOME使用oracle用户的ORACLE_HOME
- 写成一行看着膈应
重启监听
srvctl stop listener -l LISTENER_ADG
srvctl start listener -l LISTENER_ADG
5、tns配置,主库两个节点都添加
vi /u01/app/oracle/product/19.3.0/db_1/network/admin/tnsnames.ora
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.220.110)(PORT = 1527))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.220.111)(PORT = 1527))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
orcl_adg =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.220.120)(PORT = 1527))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.220.121)(PORT = 1527))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
6、主库参数配置
alter system set log_archive_config='DG_CONFIG=(orcl,orcldg)';
alter system set log_archive_dest_2='SERVICE=orcl_adg LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg';
alter system set log_archive_dest_state_1 = "enable";
alter system set log_archive_dest_state_2 = "enable";
alter system set db_file_name_convert='+DATADG/orcldg','+DATADG/orcl' scope=spfile;
alter system set log_file_name_convert='+DATADG/orcldg','+DATADG/orcl' scope=spfile; --路径请对应清楚 否则rman报错
alter system set standby_file_management=auto;
alter system set fal_client='orcl';
alter system set fal_server='orcldg';
- 此处注意区分db_unique_name和tnsname
7、主库添加standby online redo log
set lines 300
select a.* from v$log a,v$logfile b where a.group#=b.group# order by a.group#;
--thread1
alter database add standby logfile thread 1 group 5 ('+DATADG') size 200m;
alter database add standby logfile thread 1 group 6 ('+DATADG') size 200m;
alter database add standby logfile thread 1 group 7 ('+DATADG') size 200m;
alter database add standby logfile thread 1 group 8 ('+DATADG') size 200m;
alter database add standby logfile thread 1 group 9 ('+DATADG') size 200m;
--thread2
alter database add standby logfile thread 2 group 10 ('+DATADG') size 200m;
alter database add standby logfile thread 2 group 11 ('+DATADG') size 200m;
alter database add standby logfile thread 2 group 12 ('+DATADG') size 200m;
alter database add standby logfile thread 2 group 13 ('+DATADG') size 200m;
alter database add standby logfile thread 2 group 14 ('+DATADG') size 200m;
8、将主库的密码文件拷贝到备库
–先创建口令文件并传送到备库(可选)
orapwd file='/u01/app/oracle/product/19.3.0/db_1/dbs/orapworcl1' password=orcle entries=5 force=y
scp /u01/app/oracle/product/19.3.0/db_1/dbs/orapworcl1 oracle@172.16.220.111:/u01/app/oracle/product/19.3.0/db_1/dbs/orapworcl2
scp /u01/app/oracle/product/19.3.0/db_1/dbs/orapworcl1 oracle@172.16.220.120:/u01/app/oracle/product/19.3.0/db_1/dbs/orapworcdgl1
scp /u01/app/oracle/product/19.3.0/db_1/dbs/orapworcl1 oracle@172.16.220.121:/u01/app/oracle/product/19.3.0/db_1/dbs/orapworcdgl2
- 11g及以前版本用这个方式,12c以后因为自带密码文件在asm中,使用这个方法也可以实施、应用、切换,但是切换回来会报错。需要调整srvctl并且刷新 passwordfile_metadata_cache ,同时也舍弃了密码文件自动同步特性,得不偿失。
[oracle@db01 ~]$ srvctl config database -d orcl
Database unique name: orcl
Database name: orcl
Oracle home: /oracle/app/oracle/product/19.3.0/db_1
Oracle user: oracle
Spfile: +DATADG/orcl/PARAMETERFILE/spfile.268.1075565695
Password file: +DATADG/orcl/PASSWORD/pwdorcl.256.1075565085
pwcopy +DATADG/orcl/PASSWORD/pwdorcl.256.1075565085 /tmp/pwdorcl.ora
scp /tmp/pwdorcl.ora oracle@10.230.172.120:/tmp/pwdorcl.ora
asmcmd
mkdir /+DATADG/RZorcl/PASSWORD
pwcopy /tmp/pwdorcl.ora /+DATADG/RZorcl/PASSWORD/pwdorcl.ora
- 查找密码文件在asm中的位置也可以使用
pwget --dbuniuqename oracl
9 、将主库的参数文件拷贝到备库
create pfile='/tmp/pfile.ora' from spfile
scp /tmp/pfile.ora oracle@172.16.220.120:/tmp
10、修改备库参数文件
alter system set log_archive_config='DG_CONFIG=(orcldg,orcl)';
alter system set log_archive_dest_2='SERVICE=orcl LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl';
alter system set log_archive_dest_state_1 = "enable";
alter system set log_archive_dest_state_2 = "enable";
alter system set db_file_name_convert='+DATADG/orcl','+DATADG/orcldg' scope=spfile;
alter system set log_file_name_convert='+DATADG/orcl','+DATADG/orcldg' scope=spfile;
alter system set standby_file_management=auto;
alter system set fal_client='orcldg';
alter system set fal_server='orcl';
11、创建spfile文件
create spfile from pfile='/tmp/pfile';
srvctl modify database -d orcldg -r physical_standby -p '+DATADG/orcldg/PARAMETERFILE/spfileorcldg.ora'
- nomount状态就能创建
12、将备库启动到nomount状态,测试网络连通性 --主备库都需要测试
tnsping orcl
tnsping orcl
sqlplus sys/oracle@orcl as sysdba
sqlplus sys/oracle@orcl as sysdba
13、将数据库信息注册到集群中 --确保asm可用
srvctl add database -d orcldg -o /u01/app/oracle/product/19.3.0/db_1
srvctl add instance -d orcldg-i orcldg1-n rac01
srvctl add instance -d orcldg-i orcldg2-n rac02
- 一个节点执行即可
14、传输之前注意检查备库db_name 与主库一直,并且设置db_unique_name
alter system set db_unique_name=orcldg scope=spfile
15、补充参数
alter system set db_recovery_file_dest='+ARCHDG';
alter system set db_recovery_file_dest_size=100G;
16、创建传输脚本
nohup init_standbydb.sh &
rman msglog init_standbydb.log<<EOF
connect target sys/oracle@orcl
connect auxiliary sys/oracle@orcl_adg
run{
allocate channel prm_1 type disk;
allocate channel prm_2 type disk;
allocate channel prm_3 type disk;
allocate channel prm_4 type disk;
allocate auxiliary channel stby_1 type disk;
allocate auxiliary channel stby_2 type disk;
duplicate target database for standby from active database nofilenamecheck;
release channel prm_1;
release channel prm_2;
release channel prm_3;
release channel prm_4;
release channel stby_1;
release channel stby_2;
}
EOF
17、打开数据库
alter database open;
alter database recover managed standby database using current logfile disconnect;
18、检查应用进度
select message from v$dataguard_status; --dg应用日志
select process,pid,status,group#,thread#,sequence#,block# from v$managed_standby; --备库日志应用情况,注意看mrp进程,该进程只能在一个节点存在
select name from v$archived_log where applied='NO';
19、关于log_archive_dest_2参数说明
该参数有17个特性。
必需的特性:
-
SERVICE: 指定创建的指向备用数据库的TNSNAMES描述符。早先执行的网络调整就来自这里。
-
LGWR: 指定准备使用同步方法传输重做数据,意味着LGWR进程将等待来处LNS的确认消息,然后才告知客户端事务已经提交。对于“最高可用性”和“最大保护”模式而言,至少要有一个备用目标需要该配置。
-
ASYNC: 这个是默认的方法,如果不指定传输类型,将得到异步重做传输。这个是“最高性能”重做传输方法 。
-
NET_TIMEOUT: 指定LGWR进程等待LNS进程做出响应的秒数,如果超过指定时间,将因故障放弃备用。默认值是30秒,但根据网络的可靠性,10~15秒会是更恰当的值,具体取决于网络的可靠性。不要设置低于10秒,那样在备用数据库恢复后,
将遇到重连失败的情形,因为完成所有重连需要耗费几秒钟的时间。在重新连接时,需要执行下列步骤:
- 停止旧LNS进程
- 启动新LNS进程
- 连接到备用数据库
- 检测和停止旧RFS进程(remote file server)
- 启动新RFS进程
- 选择并打开新SRL(Standby Redo Log)
- 初始化SR头
- 向LNS发回响应:一切已经准备就绪
如果该过各耗费的时间超过NET_TIMEOUT的值,LGWR将再次放弃备用,并在每次切换日志时全部重来一次。
-
REOPEN: 控制Data Guard允许主数据库尝重连故障备用数据库前等的时间。默认值是300秒。
-
DB_UNIQUE_NAME:要在LOG_ARCHIVE_DEST_n参数中使用该参数,还需要设置LOG_ARCHIVE_CONFIG参数,否则Data Guard将拒绝连接到该目标。这个用作SERVICE目标(远程)的名称是为连接另一端的数据库(即备用数据库)指定的唯一名称。
-
VALID_FOR: 该特性的主要作用是定义何时使用LOG_ARCHIVE_DEST_n目标参数,以及应在哪类重做日志文件上远行。
列出日志文件的合法值:
- ONLINE_LOGFILE 仅归档ORL文件时有效
- STANDBY_LOGFILE 仅分档SRL文件时有效
- ALL_LOGFILES 无论对于哪种重做日志文件类型都有效。
下面列出角色的合法值 - PRIMARY_ROLE 仅对担当主角色的数据库有效
- STANDBY_ROLE 仅对担当备用角色的数据库有效
- ALL_ROLES 无论何种数据库角色都有效
例如:log_archive_dest_2=‘service=Matrix sync reopen=15 net_timeout=15 valid_for=(online_logfiles,primary_role) db_unique_name=Matrix’
下面列出可选特性 - AFFIRM SYNC目标的默认方式。要求LNS进程等待RFS对SRL文件执行直接I/O后才返回成功消息。“最高可用性”和“最大保护”中的SYNC需要它。
- NOAFFIRM 如果未指定,将是ASYNC目标的默认方式。用于“最高性能”目标。
- COMPRESSION 该特性启用压缩,这意味着任何正向此目标发送间隔的ARCH进程将在发送时压缩归档内容。仅当ARCH进程改善间隔时才压缩(对于SYNC不压缩)压缩只在传输过程中压缩。
- MAX_CONNECIONS 这个参数在11G中也不再使用。(不需要关注)
- DELAY ALTERNATE LOCATION 有了闪回之后基本上使用的意义不大。
- MANDATORY 不建议设置
- MAX_FAILURE 不建议设置
- NOREGISTER 不建议设置。默认情况下,DG将要求:任何发送到备用数据库的重做数据在归档到磁盘后都应在备用数据库注册。对于物理备用数据库,这意味着将备用控制文件注册。对于逻辑备用数据库,这意味着SQL APPLY会在元数据中注册该文件。DG不需要该特性,这可在使用downstream捕获时用于Streams目标数据库。
最后修改时间:2022-07-11 22:03:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




