查看原文
其他

Oracle 19C MAA 搭建指南

JiekeXu JiekeXu DBA之路 2024-03-03
前言
感谢您的阅读,Oracle 19C MAA 搭建指南全网没找到一篇能看的,基本全是基于文件系统的,没有基于 ASM 的,那么备库是 ASM 的怎么搞,一起来看看吧。

作者 | JiekeXu

来源 | JiekeXu DBA之路(ID: JiekeXu_IT)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起聊聊 Oracle 19C MAA 搭建情况,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

前   言


搭建 19C RAC 对 RAC 的 ADG,网上找了一圈有很多 19c ADG 搭建的文档,但大多数都是单机对单机或者就是 RAC 对单机文件系统的 ADG,没有找到一篇是 RAC 对单机 ASM ADG 的文档,更不用说是 RAC 对 RAC 的 ADG 了。故这里给大家分享一下搭建的过程,我相信尤其是 19C 新特性 ADG 备库密码文件这一块的坑就可以避免踩雷了。


MAA:Oracle Maximum Availability Architecture 即 Oracle 最高可用性架构,说白了就是 RAC 对 RAC 的 ADG。Oracle  MAA 并不是一套全新的技术,它是将以前分散的技术打包成一个整体,大概架构图如下所示:



环境搭建前提条件:主库 19.10 RAC 已经安装完成,归档模式已开启;备库安装GI 软件和 DB 软件,创建磁盘组 DATA ARCH,不需要 dbca 建库。双向开通 1521 端口即可,如有必要,可开通 22 端口用于 scp 文件传输并配置主备间互信。

 


db_unique_name

DB 版本

OS 版本

Scan IP

主库

JIEKE

19.10 RAC

Linuxone SUSE12SP5

XXX.XX.65.137

备库

JIEKESTB

19.10 RAC

Linuxone SUSE12SP5

XXX.XX.203.171

注:主备库均为非 CDB,文中涉及到的主机名及 IP 和实例名相关信息均已脱敏处理

 

ADG 搭建步骤大体总结如下十大步:


1、检查主库归档模式;2、打开主库强制日志模式;3、主库创建 standy 日志组;4、创建备库密码文件;5、修改主库参数文件并传至备库;6、修改备库参数文件并启动到 nomount7、配置备库静态监听和tns并测试网络连通性;8duplicate 恢复备库;9、应用 MRP0 日志进程开库;10、测试同步情况检查主备库状态。


下面分开描述搭建过程:


1)检查主库归档模式

su – oraclesqlplus / as sysdbaarchive log list; -- 如果未开启归档模式,需重启开 归档


2)打开数据库强制日志

确认数据库日志模式:

select name,log_mode,force_logging from v$database;NAME LOG_MODE FORCE_LOGGING--------- ------------ ---------------------------------------JIEKE      ARCHIVELOG   NO    --此处为 NO 表示未打开强制日志模式

打开强制日志:

alter database force logging;select name,log_mode,force_logging from v$database;NAME LOG_MODE FORCE_LOGGING--------- ------------ ---------------------------------------JIEKE      ARCHIVELOG   YES

3)创建 standby 日志组 


查看原生产库的日志信息,大小与原生产库一致:

set linesize 250COLUMN groupno FORMAT a6 HEADING 'Group' COLUMN thread FORMAT a6 HEADING 'Thread' COLUMN member FORMAT a50 HEADING 'Member' COLUMN redo_file_type FORMAT a10 HEADING 'Redo Type' COLUMN group_status FORMAT a12 HEADING 'Group Status'COLUMN member_status FORMAT a15 HEADING 'Member Status' COLUMN bytes FORMAT 999,999 HEADING 'Size(M)' COLUMN archived FORMAT a10 HEADING 'Archived?' BREAK ON groupno
SELECT to_char(f.group#) groupno , to_char(l.thread#) thread , f.member member , f.type redo_file_type , l.status group_status , f.status member_status , l.bytes/1024/1024 bytes , l.archived archivedFROM v$logfile f , v$log lWHERE f.group# = l.group#ORDER BY f.group# , f.member;
Group Thread Member Redo Type Group Status Member Status Size(M) Archived?------ ------ -------------------------------------------------- ---------- ------------ --------------- -------- ----------1 1 +JIEKER_ARCH/JIEKE/ONLINELOG/group_1.274.1071137137 ONLINE CURRENT 4,096 NO 1 +JIEKER_DATA/JIEKE/ONLINELOG/group_1.287.1071137125 ONLINE CURRENT 4,096 NO2 1 +JIEKER_ARCH/JIEKE/ONLINELOG/group_2.266.1071137137 ONLINE INACTIVE 4,096 YES 1 +JIEKER_DATA/JIEKE/ONLINELOG/group_2.285.1071137125 ONLINE INACTIVE 4,096 YES3 2 +JIEKER_ARCH/JIEKE/ONLINELOG/group_3.1057.1071137579 ONLINE INACTIVE 4,096 YES 2 +JIEKER_DATA/JIEKE/ONLINELOG/group_3.281.1071137575 ONLINE INACTIVE 4,096 YES4 2 +JIEKER_ARCH/JIEKE/ONLINELOG/group_4.1056.1071137585 ONLINE INACTIVE 4,096 YES 2 +JIEKER_DATA/JIEKE/ONLINELOG/group_4.280.1071137583 ONLINE INACTIVE 4,096 YES5 1 +JIEKER_ARCH/JIEKE/ONLINELOG/group_5.1058.1071137137 ONLINE INACTIVE 4,096 YES 1 +JIEKER_DATA/JIEKE/ONLINELOG/group_5.286.1071137125 ONLINE INACTIVE 4,096 YES6 1 +JIEKER_ARCH/JIEKE/ONLINELOG/group_6.261.1071137137 ONLINE INACTIVE 4,096 YES
Group Thread Member Redo Type Group Status Member Status Size(M) Archived?------ ------ -------------------------------------------------- ---------- ------------ --------------- -------- ----------6 1 +JIEKER_DATA/JIEKE/ONLINELOG/group_6.284.1071137125 ONLINE INACTIVE 4,096 YES7 2 +JIEKER_ARCH/JIEKE/ONLINELOG/group_7.1055.1071137593 ONLINE CURRENT 4,096 NO 2 +JIEKER_DATA/JIEKE/ONLINELOG/group_7.278.1071137589 ONLINE CURRENT 4,096 NO8 2 +JIEKER_ARCH/JIEKE/ONLINELOG/group_8.1054.1071137599 ONLINE INACTIVE 4,096 YES       2      +JIEKER_DATA/JIEKE/ONLINELOG/group_8.277.1071137595  ONLINE     INACTIVE                        4,096 YES


添加 standby 日志组(大小一致):

19c 主库日志一般都是多路复用,DATA 和 归档 ARCH 盘里都有 redo 日志组, standby redolog 可酌情多路复用
ALTER DATABASE ADD standby LOGFILE THREAD 1 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G;ALTER DATABASE ADD standby LOGFILE THREAD 1 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G;ALTER DATABASE ADD standby LOGFILE THREAD 1 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G;ALTER DATABASE ADD standby LOGFILE THREAD 1 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G;ALTER DATABASE ADD standby LOGFILE THREAD 1 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G;ALTER DATABASE ADD standby LOGFILE THREAD 2 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G;ALTER DATABASE ADD standby LOGFILE THREAD 2 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G;ALTER DATABASE ADD standby LOGFILE THREAD 2 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G;ALTER DATABASE ADD standby LOGFILE THREAD 2 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G;ALTER DATABASE ADD standby LOGFILE THREAD 2 ('+JIEKER_DATA','+JIEKER_ARCH') SIZE 4G; select group#,MEMBER from v$logfile;select GROUP#,THREAD#,BYTES/1024/1024 mb from v$standby_log;

 

4)创建备库密码文件


密码文件存在于 ASM 磁盘组中,需将其 cp 到文件系统然后在传到备库。

--密码文件存在于 ASM 磁盘组中,需将其 cp 到文件系统然后在传到备库。ASMCMD> cd JIEKEASMCMD> lsCONTROLFILE/DATAFILE/ONLINELOG/PARAMETERFILE/PASSWORD/TEMPFILE/ASMCMD> cd PASSWORDASMCMD> lspwdJIEKE.256.1071137005ASMCMD> pwd+JIEKER_DATA/JIEKE/PASSWORDASMCMD> pwcopy pwdJIEKE.256.1071137005 /home/grid/orapwJIEKESTBcopying +JIEKER_DATA/JIEKE/PASSWORD/pwdJIEKE.256.1071137005 -> /home/grid/orapwJIEKESTB
--配置互信免密后使用 scp 将密码传至备库scp orapwJIEKESTB 100.33.xx.xxx:/home/grid/orapwJIEKESTB
-- 然后复制密码文件到备库 ASM 下ASMCMD>  pwcopy /home/grid/orapwJIEKESTB +JIEKER_DATA/JIEKESTB/PASSWORD/copying  /home/grid/orapwJIEKESTB -> +JIEKER_DATA/JIEKESTB/PASSWORD/orapwJIEKESTBASMCMD> ls -lType      Redund   Striped  Time             Sys  NamePASSWORD UNPROT COARSE APR 29 11:00:00 N orapwJIEKESTB => +JIEKER_DATA/DB_UNKNOWN/PASSWORD/pwddb_unknown.256.1071140915

 

同步完密码文件后期如果修改了 SYS 管理员密码时,官方文档中有如下说明: 


官方文档中关于刷新密码文件的说明大概如下:如果该 REMOTE_LOGIN_PASSWORDFILE 数据库初始化参数设置为 SHARED 或 EXCLUSIVE ,则物理备用数据库上的密码文件将自动替换为主数据库的新副本。在授予或撤消管理特权或更改具有管理特权的用户的密码后,将替换该文件。唯一的例外是 far sync 实例。更新的密码文件仍然必须手动复制到 far sync 实例,因为 far sync  接收 redo,但不应用它。在 far sync 实例上手动更新密码文件时,包含来自主数据库的相同密码更改的 redo 将自动传播到设置为从 far sync 实例接收重做的任何备用数据库。当应用 redo 时,将在待机状态下更新密码文件。


5)修改参数文件并传至备库

show parameter spfile备份参数文件create pfile='/home/oracle/pfile0527.ora' from spfile;
主库修改如下参数:alter system set db_unique_name=JIEKE scope=spfile sid='*'; --DB_UNIQUE_NAME 唯一名,与主库一定不能一样alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(JIEKE,JIEKESTB)';alter system set LOG_ARCHIVE_DEST_1='LOCATION=+JIEKER_ARCHVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=JIEKE';alter system set LOG_ARCHIVE_DEST_2='SERVICE=JIEKESTB LGWR ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=JIEKESTB';alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;alter system set FAL_SERVER=JIEKESTB;alter system set FAL_CLIENT=JIEKE;alter system set standby_file_management=auto;

重启数据库,当不修改 db_unique_name 和 db_file_name_convert 以及 log_file_name_convert 时不需重启实例。但备库一定要有唯一数据库名 db_unique_name ,db_name 主备库一定得一样。


主库两节点均重启

shu immediatestartupcreate pfile='/tmp/pfile0527.ora' from spfile;


参数文件传输到备库


scp /tmp/pfile0527.ora 100.33.xx.xxx:/home/oracle

 

6)备库修改参数并启动到 nomount


vi pfile0527.ora 做如下替换


继续滑动看下一个

Oracle 19C MAA 搭建指南

JiekeXu JiekeXu DBA之路
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存