42人参与 • 2026-04-15 • Oracle
active data guard far sync是oracle 12c引入的新功能(也称为far sync standby)
可以在主备库之间添加一个far sync实例,redo数据先由主库传输到far sync实例,再由于far sync实例转发给备库。


强制日志、开归档
mkdir -p /u01/recovery
mkdir -p /u01/arch
sql> set linesize 300
sql> select name,open_mode,log_mode,force_logging,database_role,
switchover_status from v$database;
sql> alter database force logging;
数据库开归档
如果想开快速恢复区的设置,做如下操作
alter system set db_recovery_file_dest_size=1800g;
alter system set db_recovery_file_dest=‘/u01/recovery’;
开归档的方式如下:
alter system set log_archive_dest_1=‘location=/u01/arch’;
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
alter system switch logfile;
alter database create far sync
instance controlfile as ‘/home/oracle/control01.ctl’;
create pfile=‘/home/oracle/pfile.init’ from spfile;
db_unique_name=oradb db_file_name_convert='/oradbst/','/oradb/' log_file_name_convert='/oradbst/','/oradb/' fal_server=oradbst log_archive_config='dg_config=(oradb,oradbfs,oradbst)' log_archive_dest_1='location=/u01/arch valid_for=(all_logfiles,all_roles) db_unique_name=oradb' log_archive_dest_2='service=oradbfs sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=oradbfs' log_archive_dest_state_2=enable log_archive_dest_3='service=oradbst async noaffirm valid_for=(online_logfiles,primary_role) db_unique_name=oradbst' log_archive_dest_state_3=alternate standby_file_management=auto
startup pfile=‘/home/oracle/pfile.init’;
alter system set standby_file_management=manual;
添加standbylogfile
alter database add standby logfile group 4 (‘/u01/app/oracle/oradata/oradb/standby_redo04.log’) size 200m;
alter database add standby logfile group 5 (‘/u01/app/oracle/oradata/oradb/standby_redo05.log’) size 200m;
alter database add standby logfile group 6 (‘/u01/app/oracle/oradata/oradb/standby_redo06.log’) size 200m;
alter database add standby logfile group 7 (‘/u01/app/oracle/oradata/oradb/standby_redo07.log’) size 200m;
alter system set standby_file_management=auto;
create spfile from pfile='/home/oracle/pfile.init'; 将上面的控制文件和参数文件和密码文件复制到far sync实例所在的服务器。 将控制文件存放在/u01/app/oracle/oradata/oradbfs/control01.ctl scp $oracle_home/dbs/orapworadb 192.168.2.12:/u01/app/oracle/product/23.26.1/dbhome_1/dbs/ scp $oracle_home/dbs/orapworadb 192.168.2.11:/u01/app/oracle/product/23.26.1/db_1/dbs/dbs
db_unique_name=oradbfs db_file_name_convert='/oradb/','/oradbfs/','/oradbst/','/oradbfs/' log_file_name_convert='/oradb/','/oradbfs/','/oradbst/','/oradbfs/' fal_server=oradb log_archive_config='dg_config=(oradb,oradbfs,oradbst)' log_archive_dest_1='location=/u01/arch valid_for=(all_logfiles,all_roles) db_unique_name=oradbfs' log_archive_dest_2='service=oradbst async valid_for=(standby_logfiles,standby_role) db_unique_name=oradbst' log_archive_dest_state_2=enable standby_file_management=auto service_names=oradb
将备库和far sync实例创建好监听后一起写入主库的tnsnames.ora中并拷贝至每个节点
–tns配置如下:
oradb =
(description =
(address = (protocol = tcp)(host = 192.168.2.14)(port = 1521))
(connect_data =
(server = dedicated)
(service_name = oradb)
)
)
oradbfs =
(description =
(address = (protocol = tcp)(host = 192.168.2.12)(port = 1521))
(connect_data =
(server = dedicated)
(service_name = oradb)
)
)
oradbst =
(description =
(address = (protocol = tcp)(host = 192.168.2.11)(port = 1521))
(connect_data =
(server = dedicated)
(service_name = oradb)
)
)–监听配置如下
sid_list_listener =
(sid_list =
(sid_desc =
(global_dbname = oradb)
(oracle_home = /u01/app/oracle/product/23.26.1/dbhome_1)
(sid_name= oradb)
)
)
sid_list_listener =
(sid_list =
(sid_desc =
(global_dbname = oradb)
(oracle_home = /u01/app/oracle/product/23.26.1/db_1)
(sid_name= oradb)
)
)export oracle_sid=oradb
startup nomount pfile=‘/home/oracle/pfile.init’;
rman target sys/oracle@oradb auxiliary sys/oracle@oradbfs

duplicate target database for farsync from active database;

在standby数据库上创建pfile文件
control_files='/u01/app/oracle/oradata/oradbst/control01.ctl' db_unique_name=oradbst db_file_name_convert='/oradb/','/oradbst/' log_file_name_convert='/oradb/','/oradbst/' fal_server='oradbfs','orad' log_archive_config='dg_config=(oradb,oradbfs,oradbst)' log_archive_dest_1='location=/u01/arch valid_for=(all_logfiles,all_roles) db_unique_name=oradbst' log_archive_dest_2='service=oradbfs async valid_for=(standby_logfiles,standby_role) db_unique_name=oradb' log_archive_dest_state_2=enable standby_file_management=auto service_names=oradb
恢复备库数据库
export oracle_sid=oradb
startup nomount pfile=‘/home/oracle/pfile.init’;
rman target sys/oracle@oradb auxiliary sys/oracle@oradbst

duplicate target database for standby from active database dorecover nofilenamecheck;

在备库启动managed recovery process
alter database recover managed standby database disconnect from session;
在主库上查询日志应用情况
set lines 300
col dest_name for a20
select dest_name,status,error from v$archive_dest;

将备库启动到adg模式:
sql> alter database recover managed standby database cancel;
sql> alter database open;
sql> alter pluggable database all open;
sql> alter database recover managed standby database using current logfile disconnect from session;
sql> select open_mode from v$database;

到此这篇关于oracle 26ai搭建adg far sync日志备库的实例的文章就介绍到这了,更多相关oracle adg far sync日志备库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论