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的服务名配置错误导致。

相关推荐
lunz_fly19921 小时前
Oracle清理:如何安全删除trace, alert和archivelog文件?
oracle
薛定谔的算法2 小时前
phoneGPT:构建专业领域的检索增强型智能问答系统
前端·数据库·后端
Databend4 小时前
Databend 亮相 RustChinaConf 2025,分享基于 Rust 构建商业化数仓平台的探索
数据库
得物技术5 小时前
破解gh-ost变更导致MySQL表膨胀之谜|得物技术
数据库·后端·mysql
Raymond运维9 小时前
MariaDB源码编译安装(二)
运维·数据库·mariadb
沢田纲吉9 小时前
🗄️ MySQL 表操作全面指南
数据库·后端·mysql
RestCloud1 天前
SQL Server到Hive:批处理ETL性能提升30%的实战经验
数据库·api
RestCloud1 天前
为什么说零代码 ETL 是未来趋势?
数据库·api
ClouGence1 天前
CloudCanal + Paimon + SelectDB 从 0 到 1 构建实时湖仓
数据库
DemonAvenger1 天前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化