Oracle21.3 active data guard(ADG)配置

Oracle21.3 active data guard(ADG)配置

环境介绍:

OS :centos8.3

oracle: 21.3

此次文档搭建的是CDB级别的ADG。Oracle从21.7版本开始支持PDB级别的ADG,不在这篇文章中测试验证,后续有时间再安排更新。

以下是主要的配置步骤:

1、主备开启归档模式

复制代码
SQL>shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 5301599856 bytes
Fixed Size                  9698928 bytes
Variable Size            1006632960 bytes
Database Buffers         4278190080 bytes
Redo Buffers                7077888 bytes
数据库装载完毕。
SQL> alter database archivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> show pdbs;
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     1
下一个存档日志序列   3
当前日志序列           3

2、主备配置TNS

复制代码
itsm_pri =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.xx.xx)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = itsmsrv)
    )
  )

itsm_std =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.xx.xx)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = itsmsrv)
    )
  )

3、配置静态监听

复制代码
vi listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC = 
      (GLOBAL_DBNAME = ITSMPROD)
      (ORACLE_HOME = /OSdata/oracle/app/product/21.3.0/db_1)
      (SID_NAME = ITSMPROD)
    )
  )
# lsnrctl reload
# lsnrctl status

4、主备开启强制日志和闪回

复制代码
SQL> alter database force logging;
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database flashback on;
SQL> alter database open;

SQL> select flashback_on,FORCE_LOGGING from v$database;
FLASHBACK_ON       FORCE_LOGGING
------------------ ---------------------------------------
YES                YES

5、主库添加standb redolog

复制代码
添加standby日志组
alter database add standby logfile group 4 '/OSdata/oradata/ITSM/std_redo04.log' size 200m;
alter database add standby logfile group 5 '/OSdata/oradata/ITSM/std_redo05.log' size 200m;
alter database add standby logfile group 6 '/OSdata/oradata/ITSM/std_redo06.log' size 200m;
alter database add standby logfile group 7 '/OSdata/oradata/ITSM/std_redo07.log' size 200m; 

select group#,sequence#,status, bytes/1024/1024 from v$standby_log;

6、配置主备库参数文件

主库配置参数文件

复制代码
主库配置参数文件1:
alter system set db_unique_name=PRODITSM sid='*' scope=spfile; 
alter system set log_file_name_convert= '/OSdata/oradata/ITSM','/OSdata/oradata/ITSM' sid='*' scope=spfile;
alter system set db_file_name_convert= '/OSdata/oradata/ITSM/ITSMPROD','/OSdata/oradata/ITSM/ITSMPROD','/OSdata/oradata/ITSM/pdbseed','/OSdata/oradata/ITSM/pdbseed','/OSdata/oradata/ITSM','/OSdata/oradata/ITSM' sid='*' scope=spfile;
alter system set service_names=itsmsrv sid='*' scope=spfile;

主库开启闪回:
alter system set db_recovery_file_dest_size=100G sid='*' scope=both;  (生产环境根据实际情况调整大小)
--alter system set db_recovery_file_dest='D:\flashbackon' sid='*' scope=both;
shutdown immediate
startup mount;
alter database flashback on;
alter database open;
检查flashback结果:
select flashback_on,FORCE_LOGGING from v$database;

主库配置参数文件2:
alter system set log_archive_config='DG_CONFIG=(PRODITSM,STDITSM)' sid='*' scope=both;
alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRODITSM' sid='*' scope=both;
alter system set log_archive_dest_2='SERVICE=itsm_std LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STDITSM' sid='*' scope=both;
alter system set log_archive_dest_state_1=ENABLE sid='*' scope=both;
alter system set log_archive_dest_state_2=ENABLE sid='*' scope=both;
--# Standby role Parameters
alter system set FAL_SERVER=STDITSM sid='*' scope=both;
alter system set FAL_CLIENT=PRODITSM sid='*' scope=both;
alter system set STANDBY_FILE_MANAGEMENT=AUTO sid='*' scope=both;

备库配置参数文件

复制代码
备库参数文件修改
alter system set db_unique_name=STDITSM sid='*' scope=spfile;
alter system set log_file_name_convert= '/OSdata/oradata/ITSM','/OSdata/oradata/ITSM' sid='*' scope=spfile;
alter system set db_file_name_convert= '/OSdata/oradata/ITSM/ITSMPROD','/OSdata/oradata/ITSM/ITSMPROD','/OSdata/oradata/ITSM/pdbseed','/OSdata/oradata/ITSM/pdbseed','/OSdata/oradata/ITSM','/OSdata/oradata/ITSM' sid='*' scope=spfile;
alter system set service_names=itsmsrv sid='*' scope=spfile;

开启强制日志功能
alter database force logging;

备库开启闪回:
alter system set db_recovery_file_dest_size=100G sid='*' scope=both;  (生产环境根据实际情况调整大小)
--alter system set db_recovery_file_dest='D:\flashbackon' sid='*' scope=both;
shutdown immediate
startup mount;
alter database flashback on;
alter database open;
--检查flashback结果:
select flashback_on,FORCE_LOGGING from v$database;

备库参数修改2
alter system set log_archive_config='DG_CONFIG=(PRODITSM,STDITSM)' sid='*' scope=both;
alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=STANDBY' sid='*' scope=both;
alter system set log_archive_dest_2='SERVICE=itsm_pri LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRODUCTION' sid='*' scope=both;
alter system set log_archive_dest_state_1=ENABLE sid='*' scope=both;
alter system set log_archive_dest_state_2=DEFER sid='*' scope=both;
--# #Standby Database Standby role parameters
alter system set FAL_SERVER=PRODITSM sid='*' scope=both;
alter system set FAL_CLIENT=STDITSM sid='*' scope=both;
alter system set STANDBY_FILE_MANAGEMENT=AUTO sid='*' scope=both;

7、备库启动到nomount状态进行搭建

备库启动到nomount状态

复制代码
shutdown immediate;
startup nomount;
在线搭建DG
rman target sys/xxx@itsm_pri auxiliary sys/xxx@itsm_std
duplicate target database for standby from active database nofilenamecheck dorecover;

8、启动备库到只读状态

复制代码
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       MOUNTED
         3 ITSMPROD                       MOUNTED

SQL> alter database open;

数据库已更改。

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ITSMPROD                       MOUNTED
SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

SQL> alter pluggable database ITSMPROD open read only;

插接式数据库已变更。

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ITSMPROD                       READ ONLY  NO

9、检查状态

复制代码
主库:
SQL> select process,status,sequence# from v$managed_standby;

PROCESS   STATUS        SEQUENCE#
--------- ------------ ----------
DGRD      ALLOCATED             0
ARCH      CONNECTED             0
DGRD      ALLOCATED             0
ARCH      CONNECTED             0
ARCH      CONNECTED             0
ARCH      CLOSING               3
DGRD      ALLOCATED             0
LNS       CONNECTED             0
LNS       WRITING               7

备库:
SQL> select process,status,sequence# from v$managed_standby;

PROCESS   STATUS        SEQUENCE#
--------- ------------ ----------
ARCH      CONNECTED             0
DGRD      ALLOCATED             0
DGRD      ALLOCATED             0
ARCH      CONNECTED             0
ARCH      CONNECTED             0
ARCH      CONNECTED             0
RFS       IDLE                  0
RFS       IDLE                  7

--启动实时应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

SQL> select process,status,sequence# from v$managed_standby;

PROCESS   STATUS        SEQUENCE#
--------- ------------ ----------
ARCH      CONNECTED             0
DGRD      ALLOCATED             0
DGRD      ALLOCATED             0
ARCH      CONNECTED             0
ARCH      CONNECTED             0
ARCH      CLOSING              12
RFS       IDLE                  0
RFS       IDLE                 13
MRP0      APPLYING_LOG         13

问题处理

RMAN

-04006: 来自辅助数据库的错误: ORA-01017: invalid username/password; logon denied

该问题主要是由于TNS的服务名配置错误导致。

相关推荐
aramae1 天前
MySQL数据库入门指南
android·数据库·经验分享·笔记·mysql
Apache IoTDB1 天前
时序数据库 IoTDB 集成 MyBatisPlus,告别复杂编码,简化时序数据 ORM 开发
数据库·struts·servlet·时序数据库·iotdb
isNotNullX1 天前
怎么用数据仓库来进行数据治理?
大数据·数据库·数据仓库·数据治理
小坏讲微服务1 天前
Spring Cloud Alibaba Gateway 集成 Redis 限流的完整配置
数据库·redis·分布式·后端·spring cloud·架构·gateway
whb2341741241 天前
测试linux删除Oracle文件,使用文件句柄恢复
linux·运维·oracle
HitpointNetSuite1 天前
连锁餐饮行业ERP系统如何选择?
大数据·数据库·oracle·netsuite·erp
百***17071 天前
MySQL 常用 SQL 语句大全
数据库·sql·mysql
百***65951 天前
mysql如何发现慢查询sql
数据库·sql·mysql
资深web全栈开发1 天前
PostgreSQL 实战指南(面向 MySQL 开发者)
数据库·mysql·postgresql
TG:@yunlaoda360 云老大1 天前
谷歌云数据库服务概览:关系型与 NoSQL 的多元选择与应用场景解析
数据库·nosql·googlecloud