当前位置: 首页 > news >正文

Oracle 26ai搭建ADG Far Sync日志备库

📢📢📢📣📣📣
作者:IT邦德
中国DBA联盟(ACDU)成员,15年DBA工作经验
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝15万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理

文章目录

  • 1.DG Far Sync概述
  • 2.配置环境
  • 3.Far Sync实例
    • 3.1 在主库上创建far sync实例的控制文件
    • 3.2 创建Far Sync实例的pfile文件
    • 3.3 在主库上以pfile启动并配置standbylogfile
    • 3.4 生成spfile文件:
    • 3.5 在far sync实例上配置pfile文件
    • 3.6 创建监听和tnsnames.ora
    • 3.7 启动far sync到mount模式
  • 4.备库搭建

1.DG Far Sync概述

Active Data Guard Far Sync是Oracle 12c引入的新功能(也称为Far Sync Standby)。
传统的ADG主要由主备库组成,redo数据直接传输到备库,待备库成功写入standbylog file才能保证数据的最大保护。如果主备库之间的网络带宽不足、备库性能较差等因素,不可避免会导致主备库之间的同步延迟,此时一旦出现主库宕机的情况,极易出现数据丢失。

12c开始可以在主备库之间添加一个Far Sync实例,redo数据先由主库传输到Far Sync实例,再由于Far Sync实例转发给备库。Far Sync实例只有密码文件、init参数文件和控制文件,而没有数据文件,只负责接收归档和redo而不需要应用,所以主库到Far Sync实例的同步非常迅速,基本没有延迟。

考虑到可能发生Data Guard 角色转换,即switchover/failover,可以在距离备库较近的地方也配置Far Sync实例,这个Far Sync实例只有在当前的备库切换为主库后才启用。

考虑到Far Sync实例的单点故障,可以在距离主库交近的地点配置2个Far Sync实例,起到备用的作用。

2.配置环境


强制日志、开归档
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;

3.Far Sync实例

3.1 在主库上创建far sync实例的控制文件

ALTER DATABASE CREATE FAR SYNC
INSTANCE CONTROLFILE AS ‘/home/oracle/control01.ctl’;

3.2 创建Far Sync实例的pfile文件

create pfile=‘/home/oracle/pfile.init’ from spfile;

DB_UNIQUE_NAME=oradbDB_FILE_NAME_CONVERT='/oradbst/','/oradb/'LOG_FILE_NAME_CONVERT='/oradbst/','/oradb/'FAL_SERVER=oradbstLOG_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=ENABLELOG_ARCHIVE_DEST_3='SERVICE=oradbst ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oradbst'LOG_ARCHIVE_DEST_STATE_3=ALTERNATEstandby_file_management=AUTO

3.3 在主库上以pfile启动并配置standbylogfile

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;

3.4 生成spfile文件:

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

3.5 在far sync实例上配置pfile文件

DB_UNIQUE_NAME=oradbfsDB_FILE_NAME_CONVERT='/ORADB/','/oradbfs/','/oradbst/','/oradbfs/'LOG_FILE_NAME_CONVERT='/ORADB/','/oradbfs/','/oradbst/','/oradbfs/'FAL_SERVER=oradbLOG_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=ENABLEstandby_file_management=AUTOservice_names=oradb

3.6 创建监听和tnsnames.ora

将备库和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)))

3.7 启动far sync到mount模式

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;

4.备库搭建

在standby数据库上创建pfile文件

control_files='/u01/app/oracle/oradata/oradbst/control01.ctl'DB_UNIQUE_NAME=oradbstDB_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=ENABLEstandby_file_management=AUTOservice_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;

http://www.cnnetsun.cn/news/1864521.html

相关文章:

  • Youtu-Parsing在RAG系统中的应用:结构化输出,助力精准文档检索
  • 系统启动与基础命令
  • 3分钟掌握B站视频核心:BiliTools智能总结功能完全教程
  • 告别传统 Text-to-SQL:基于 Spring AI Alibaba 的数据分析智能体
  • 液压与气压传动卧式单面钻镗两用组合机床液压系统设计
  • 实测分享:用vLLM部署32B大模型时,如何为海光K100-AI精准分配显存和设置Tensor Parallelism?
  • LDDC歌词工具:一站式歌词下载与格式转换终极指南
  • Phi-4-mini-reasoning在CSDN技术社区的应用:智能问答与内容摘要
  • 国产数据库新选择:金仓多模数据库在电子证照系统的高并发实践
  • 快速体验具身智能:Pi0镜像带你玩转视觉-语言-动作模型
  • 前端组件测试策略
  • 从V1到V2的蜕变:MaterialDateTimePicker设计理念的全面升级指南
  • Pickr国际化(i18n)完整实现:支持多语言的颜色选择器终极指南
  • 京东数据应用工程师面试题精选:10道高频考题+答案解析(附PDF)
  • Kandinsky-5.0-I2V-Lite-5s图生视频快速上手:5分钟让静态图片动起来
  • 暗黑破坏神2宽屏补丁d2dx:让你的经典游戏在现代PC上焕发新生
  • 7个实用技巧!Vue组件测试指南:基于TypeScript-Vue-Starter的Jest单元测试实战
  • 【Hot 100 刷题计划】 LeetCode 79. 单词搜索 | C++ 标准方向数组 DFS 与回溯
  • 终极Buttercup Desktop自动化与脚本指南:10个实用技巧提升密码管理效率
  • ESPAsyncWebServer异步Web服务原理与嵌入式实战
  • NSudo权限管理工具技术深度解析:原理、应用与最佳实践
  • 别再只让大模型聊天了!用SWIFT+Qwen2.5微调,5分钟搞定一个句子相似度打分模型
  • Sambert中文语音合成实战:一键部署,轻松生成带情感的AI语音
  • 红黑树:一种高效的自平衡二叉查找树
  • Amazon DSSTNE深度解析:革命性稀疏张量网络引擎入门指南
  • 快速掌握d3-cloud:5分钟创建专业级JavaScript词云可视化
  • 从2G到3.2GHz:一个宽带连续F类PA的ADS设计复盘与效率优化心得
  • 5大核心能力构建高效QQ机器人:go-cqhttp完整实战指南
  • Windows APK文件管理终极方案:ApkShellExt2让资源管理器更智能
  • VS Code 用了 5 年,这 15 个功能我才发现——老程序员的自我检讨报告