Oracle Data Guard部署

news2024/12/28 17:49:33

Oracle的主备DG搭建

1. 修改主机名,同步时间

主库IP:192.168.100.137
备库IP:192.168.100.138

配置主机名(主库)
Hostname zygjpdb
vim /etc/hosts
192.168.100.137 zygjpdb
192.168.100.138 zygjsdb

vim /etc/sysconfig/network
HOSTNAME=zygjpdb
------------------------------------------------------------------------------
配置主机名(备库)
Hostname zygjsdb
vim /etc/hosts
192.168.100.137 zygjpdb
192.168.100.138 zygjsdb

vim /etc/sysconfig/network
HOSTNAME=zygjsdb
同步时间,确保两台服务器的时间是一致的,这里我选用的ntpdate

有外网的情况,可使用ntp.aliyun.com
*/10 * * * * ntpdate ntp.aliyun.com

没外网的情况,需要自行搭建ntp服务器
*/10 * * * * ntpdate 192.168.100.130

2. 修改主库的配置

主库操作

su - oracle

sqlplus / as sysdba

SQL> create pfile from spfile;
SQL> shutdown immediate;
SQL> startup mount;
SQL> Alter database archivelog;
SQL> alter database force logging;--归档模式下修改
SQL> alter database open;
SQL> alter system set db_unique_name="pdb" scope=spfile; --修改完后,要重启数据库
SQL> Shutdown immediate;
SQL> startup
SQL> show parameter db_unique_name;--(检查是否已修改)
NAME                TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name      string      pdb

SQL> alter system set log_archive_config='dg_config=(pdb,sdb)';
SQL> ho mkdir /u01/archivelog; --创建归档目录
SQL> alter system set log_archive_dest_1='location=/u01/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=pdb';--归档文件的生成路径,location代表本地机上,service指在另一台机器上
SQL> alter system set log_archive_dest_2='service=sdb lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=sdb';--对方的网络服务名
SQL> show parameter log_archive_dest_state_1  --日志的
SQL> show parameter log_archive_dest_state_2 --确认这两个参数为enable的,激活定义的,可以先修改为defer 归档日志目录,允许redo 传输服务传输redo数据到指定的路径

SQL> show parameter log_archive_format;
NAME               TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_format string      %t_%s_%r.dbf --格式默认就好

SQL> alter system set fal_server=sdb;
SQL> alter system set fal_client=pdb; --注意这里反着写的,表示切换后的主和备
SQL> alter system set standby_file_management=auto;

SQL> create pfile from spfile;

3.备库操作,安装软件,新建目录

装oracle软件(路径保持一致),不需要装库

--创建这些目录,注意使用oracle用户去创建
mkdir /u01/archivelog -p
mkdir /u01/arch_back -p
mkdir /u01/app/oracle/product/11.2.0/db_1/dbs -p
mkdir /u01/app/oracle/oradata/orcl/ -p
mkdir /u01/app/oracle/admin/orcl/{a,b,u,dp,c}dump -p
mkdir /u01/app/oracle/diag/rdbms/orcl/orcl/ -p
mkdir /u01/app/oracle/fast_recovery_area/orcl/ -p
--创建这些目录,注意使用oracle用户去创建
mkdir /u01/archivelog -p
mkdir /u01/arch_back -p
mkdir /u01/app/oracle/product/11.2.0/db_1/dbs -p
mkdir /u01/app/oracle/oradata/orcl/ -p
mkdir /u01/app/oracle/admin/orcl/{a,b,u,dp,c}dump -p
mkdir /u01/app/oracle/diag/rdbms/orcl/orcl/ -p
mkdir /u01/app/oracle/fast_recovery_area/orcl/ -p

4.主库操作,拷贝配置文件到备库,等会在备库修改

scp /u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora oracle@192.168.100.138:/u01/app/oracle/product/11.2.0/db_1/dbs/ -------主库操作
--拷参数文件(配置文件)
scp /u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl oracle@192.168.100.138:/u01/app/oracle/product/11.2.0/db_1/dbs/ -------主库操作
--拷密码文件

--如果ssh端口有更改的,需要加scp -P port

5.备库操作,使密码文件生效

orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl password=oracle force=y
--在备库重新密码文件,或者从主库scp过来也是一样
--注意,scp拷的时候请用oracle用户,否则用root用户拷过来,要修改权限

6.主库的监听配置文件

[oracle@zygjpdb~]$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = zygjpdb)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
[oracle@zygjpdb~]$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = zygjpdb)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

PDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.137)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb)
    )
  )

SDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.138)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sdb)
    )
  )

7.备库的监听配置文件

[oracle@zygjsdb~]$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = sdb)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = zygjsdb)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
[oracle@zygjsdb ~]$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = zygjsdb)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

PDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.137)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb)
    )
  )

SDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.138)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sdb)
    )
  )

8.主备库操作

两边都需要同样的操作,确保没有任何报错

lsnrctl reload
tnsping orcl
tnsping pdb
tnsping sdb
sqlplus sys/oracle@pdb as sysdba
sqlplus sys/oracle@sdb as sysdba

9.更改备库的启动文件

initorcl.ora 此文件是主库的配置文件,上一步scp过来的,下面的仅供参考,请根据实际情况修改

orcl.__db_cache_size=14831058944
orcl.__java_pool_size=469762048
orcl.__large_pool_size=536870912
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=6979321856
orcl.__sga_target=18186502144
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=2214592512
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'#Restore Controlfile
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=20737418240
*.db_unique_name='sdb'  --需修改
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='SDB'  --需修改
*.fal_server='PDB'  --需修改
*.java_jit_enabled=TRUE
*.log_archive_config='dg_config=(sdb,pdb)'   ----需修改
*.log_archive_dest_1='location=/u01/arch/ valid_for=(all_logfiles,all_roles) db_unique_name=sdb'  --需修改
*.log_archive_dest_2='service=pdb lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=pdb'  --需修改
*.open_cursors=300
*.pga_aggregate_target=6949672960 --注意备库SGA和PGA的大小(根据机器配置) 
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1655
*.sga_max_size=18161927680
*.sga_target=18161927680  --注意备库SGA和PGA的大小(根据机器配置) 
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

10.恢复备库,使之与主库同步

备库操作

[oracle@zygjsdb~]$ sqlplus / as sysdba
SQL> startup nomount pfile=/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora;
SQL> create spfile from pfile;
SQL> shutdown immediate;
SQL> startup nomount;

[oracle@zygjsdb~]$ rman target sys/oracle@pdb auxiliary sys/oracle@sdb
--开始恢复,最关键命令
RMAN>run { allocate channel c1 type disk;allocate channel c2 type disk;allocate channel c3 type disk;allocate AUXILIARY channel c4 type disk;allocate AUXILIARY channel c5 type disk;allocate AUXILIARY channel c6 type disk;DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;release channel c1;release channel c2;release channel c3;release channel c4;release channel c5;release channel c6;}

在这里插入图片描述
在这里插入图片描述

11.恢复后,打开归档日志传递应用功能

11.1 恢复完成后,备库自动会由nomount状态到mount状态;现在退出rman,连接sqlplus查看状态
select status from v$instance;

select open_mode from v$database;

在这里插入图片描述

 11.2 备库创建日志组

SQL> alter database add standby logfile group 10 '/u01/app/oracle/oradata/orcl/stredo10.log' size 500m;
SQL> alter database add standby logfile group 11 '/u01/app/oracle/oradata/orcl/stredo11.log' size 500m;
SQL> alter database add standby logfile group 12 '/u01/app/oracle/oradata/orcl/stredo12.log' size 500m;
SQL> alter database add standby logfile group 13 '/u01/app/oracle/oradata/orcl/stredo13.log' size 500m;
11.3 备库打开日志传递应用功能
--备库开启日志应用(非实时),推荐使用
SQL> alter database recover managed standby database disconnect from session;

--备库开启实时日志应用
alter database recover managed standby database using current logfile disconnect from session;

--取消应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;    
11.4 至此,dg搭建完成,现在可以进行验证
--尝试在主库切换日志文件,查看备库日志
--主库操作
alter system switch logfile;

在这里插入图片描述

--备库日志
/u01/app/oracle/diag/rdbms/sdb/orcl/trace/alert_orcl.log

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1540925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑如何关闭自启动应用?cmd一招解决问题

很多小伙伴说电脑刚开机就卡的和定格动画似的,cmd一招解决问题: CtrlR打开cmd,输入:msconfig 进入到这个界面: 点击启动: 打开任务管理器,禁用不要的自启动应用就ok了

机器学习算法那些事 | 使用Transformer模型进行时间序列预测实战

本文来源公众号“机器学习算法那些事”,仅用于学术分享,侵权删,干货满满。 原文链接:使用Transformer模型进行时间序列预测实战 时间序列预测是一个经久不衰的主题,受自然语言处理领域的成功启发,transfo…

C语言分支和循环

目录 一.分支 一.if 二.if else 三.if else嵌套 四.else if 五.switch语句 二.循环 一.while (do while)break : 二.for函数: 三.goto语句: 四.猜数字: 一.分支 一.if if要条件为真才执行为假不执行而且if只能执行后面第一条如果要执行多条就…

Java基础之关键字instanceof(七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【C语言】linux内核pci_iomap

一、pci_iomap /** pci_iomap 是一个用于映射 PCI 设备的 BAR(Base Address Register,基地址寄存器)的函数。* 此函数返回指向内存映射 IO 的指针,用于直接访问 PCI 设备的内存或 I/O 空间。* * 参数:* dev - 指向pci_dev结构的指…

Android Jetpack Compose基础之组件的帧渲染

Android Jetpack Compose基础之组件的帧渲染 组合布局LayoutModifier示例 LayoutCompsable示例 绘制CanvasDrawModifierDrawModifier-drawWithContent示例 DrawModifier-drawBehind源码示例 DrawModifier-drawWithCache源码示例 拓展Modifier.graphicsLayer Android View 系统&…

0基础 三个月掌握C语言(13)-下

数据在内存中的存储 浮点数在内存中的存储 常见的浮点数:3.141592、1E10等 浮点数家族包括:float、double、long double类型 浮点数表示的范围:在float.h中定义 练习 关于(float*)&n: &n:这是一…

基于SSM的宠物领养平台的设计与实现

基于SSM的宠物领养平台的设计与实现 获取源码——》公主号:计算机专业毕设大全 获取源码——》公主号:计算机专业毕设大全

Three.js 中的 OrbitControls 是一个用于控制相机围绕目标旋转以及缩放、平移等操作的控制器。

demo案例 Three.js 中的 OrbitControls 是一个用于控制相机围绕目标旋转以及缩放、平移等操作的控制器。下面是它的详细讲解: 构造函数: OrbitControls(object: Camera, domElement?: HTMLElement)object:THREE.Camera 实例,控制器将围绕…

LibFuzzer 基本使用

文章目录 前言环境搭建基础使用编写 fuzz target编译链接demo 测试 && 输出日志分析心脏滴血漏洞测试 提高代码覆盖率和测试速度指定种子语料库多核并行 Fuzz使用字典 参考 前言 相较于 AFL 来说,LibFuzzer 在单个进程内完成模糊测试,以此来避免…

Nacos部署(一)Linux部署Nacos2.3.x单机环境

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: Nacos部署(一)Linux部署Nacos2.3.x单机环境 ⏱️…

【NC20313】仪仗队

题目 仪仗队 欧拉函数,找规律 思路 这好像是一道非常简单的找规律问题,所以你从 1 1 1 开始枚举,计算出当 N i Ni Ni 时的结果 a n s i ans_i ansi​,所以你得出了以下结果: Nans10233549513621725837 令人失望…

招聘自媒体编辑岗位的人才测评方案

人才测评工具在招聘入职的方案,在线工具网根据自媒体岗位的特性和需求来分析,并制定自媒体主编的测评方案。 自媒体作为互联网时代的产物,自然也为我们带来了很多的福利,例如:海量的信息、快捷的传媒方式,那…

学习次模函数-第2章 定义

纵观本专著,我们认为及其幂集(即, 所有子集的集合),其基数为。我们也考虑一个实值集函数,使得。 与凸函数的一般约定相反(见附录A),我们不允许函数有无穷大的值。 次模分…

一文搞懂数据链路层

数据链路层 1. 简介2. MAC3. 以太网 1. 简介 (1)概念 链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。 数据链路(data link) 除了物理线路(双绞线电缆、同轴电缆、光线等介质)外&#xff0…

Java获取方法参数名称方案||SpringBoot配置顺序注解

一: Java获取方法参数名称的方法 普盲: getDeclaredMethods与getMethods的的区别 1、getMethods返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口的公共 member 方法。 2、getDeclaredMethods返回 Method 对象的一个数组&#xff0c…

STM32+ESP8266水墨屏天气时钟:简易多级菜单(数组查表法)

项目背景 本次的水墨屏幕项目需要做一个多级菜单的显示,所以写出来一起学习,本篇文章不单单适合于水墨屏,像0.96OLED屏幕也适用,区别就是修改显示函数。 设计思路 多级菜单的实现,一般有两种实现的方法 1.通过双向…

HTTPS协议的工作原理:保护网络通信的安全盾牌

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

力扣每日一题 2024/3/24 零钱兑换

题目描述 用例说明 思路讲解 动态规划五步法 第一步确定dp数组的含义:dp[i]为凑到金额为i所用最少的硬币数量 第二步确定动态规划方程:凑足金额为j-coins[i]所需最少的硬币个数为dp[j-coins[i]],那凑足金额为j所用的最少硬币数为dp[j-coin…

【C语言】C语言实现扫雷三子棋

主页:醋溜马桶圈-CSDN博客 专栏:C语言_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1.C语言实现三子棋 1.1 整体思路 1.2 游戏菜单的创建 1.3 游戏主体的实现 1.3.1 棋盘的初始化 1.3.2 打印棋盘 1.3.3 玩家下…