1. 首页 > Oracle教程 > 正文

Oracle教程FG218-DataGuard与多租户架构

本文档详细介绍Oracle DataGuard与多租户架构的集成配置和管理,风哥教程参考Oracle官方文档Multitenant部分。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 多租户架构概述

多租户架构(Multitenant Architecture)是Oracle 12c引入的一项重要特性,允许在一个容器数据库(CDB)中创建多个可插拔数据库(PDB)。学习交流加群风哥微信: itpux-com

多租户架构的组成:

  • 容器数据库(CDB):包含所有PDB共享的系统元数据和资源
  • 可插拔数据库(PDB):独立的数据库环境,包含用户数据和应用
  • 根容器(CDB$ROOT):CDB的根容器,包含系统元数据
  • 种子PDB(PDB$SEED):创建新PDB的模板

1.2 DataGuard与多租户集成

DataGuard与多租户架构的集成是指在多租户环境中配置DataGuard,为CDB和所有PDB提供灾难恢复能力。

集成的特点:

  • 为整个CDB及其所有PDB提供保护
  • 支持PDB级别的备份和恢复
  • 简化了多数据库环境的管理
  • 提供统一的故障转移和切换机制

1.3 集成优势

DataGuard与多租户集成的优势:

  • 简化管理:通过管理单个CDB的DataGuard配置,保护所有PDB
  • 资源共享:备用数据库的资源被所有PDB共享
  • 成本降低:减少了备用数据库的数量和管理开销
  • 灵活性:支持PDB级别的操作,如PDB级别的刷新和克隆

Part02-生产环境规划与建议

2.1 架构规划

多租户环境下的DataGuard架构规划:

  • 主站点:CDB包含多个PDB
  • 备用站点:CDB作为主CDB的备用,包含相同的PDB
  • 重做传输:从主CDB传输到备用CDB
  • 故障转移:当主CDB发生故障时,切换到备用CDB

2.2 配置建议

配置建议:

  • 使用Oracle 12c或更高版本
  • 配置CDB级别的DataGuard
  • 确保主备CDB的PDB结构一致
  • 使用DataGuard Broker管理配置
  • 配置适当的保护模式

2.3 监控策略

监控策略:

  • 监控CDB级别的DataGuard状态
  • 监控各个PDB的状态
  • 设置适当的告警阈值
  • 定期检查PDB的一致性

Part03-生产环境项目实施方案

DataGuard与多租户集成的实施步骤:

  1. 配置主CDB的DataGuard参数
  2. 创建备用CDB
  3. 配置重做传输
  4. 启动应用服务
  5. 测试故障转移和切换
  6. 监控系统状态

Part04-生产案例与实战讲解

4.1 配置主CDB的DataGuard参数

# 配置主CDB的DataGuard参数
sqlplus / as sysdba

# 设置DB_UNIQUE_NAME
ALTER SYSTEM SET DB_UNIQUE_NAME=’fgedudb_cdb’ SCOPE=spfile;

# 输出日志
System altered.

# 设置LOG_ARCHIVE_CONFIG
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG=’DG_CONFIG=(fgedudb_cdb,fgedudb_cdb_stby)’ SCOPE=spfile;

# 输出日志
System altered.

# 设置LOG_ARCHIVE_DEST_2
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=’SERVICE=fgedudb_cdb_stby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fgedudb_cdb_stby’ SCOPE=spfile;

# 输出日志
System altered.

# 设置LOG_ARCHIVE_DEST_STATE_2
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=spfile;

# 输出日志
System altered.

# 重启CDB
SHUTDOWN IMMEDIATE;
STARTUP;

4.2 创建备用CDB

# 使用RMAN创建备用CDB
rman target sys/password@fgedudb_cdb auxiliary sys/password@fgedudb_cdb_stby

# 输出日志
Recovery Manager: Release 19.0.0.0.0 – Production on Fri Apr 1 10:00:00 2026
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

connected to target database: FGEDUDB_CDB (DBID=1234567890)
connected to auxiliary database: FGEDUDB_CDB_STBY (not mounted)

# 执行duplicate命令
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;

# 输出日志
Starting Duplicate Db at 01-APR-26
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=123 device type=DISK

contents of Memory Script:
{
backup as copy reuse
targetfile ‘/oracle/product/19.3.0/dbhome_1/dbs/orapwfgedudb_cdb’ auxiliary format
‘/oracle/product/19.3.0/dbhome_1/dbs/orapwfgedudb_cdb_stby’;
restore clone controlfile to ‘/oradata/fgedudb_cdb_stby/control01.ctl’;
sql clone ‘alter database mount standby database’;
}
executing Memory Script

# 克隆过程日志…

Finished Duplicate Db at 01-APR-26

4.3 启动备用CDB的应用服务

# 启动备用CDB的应用服务
sqlplus / as sysdba@fgedudb_cdb_stby
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

# 输出日志
Database altered.

# 检查应用服务状态
SELECT PROCESS, STATUS, CLIENT_PROCESS FROM v$managed_standby;

# 输出日志
PROCESS STATUS CLIENT_PROCESS
——— ———– —————
ARCH CONNECTED ARCH
ARCH CONNECTED ARCH
ARCH CONNECTED ARCH
ARCH CONNECTED ARCH
RFS IDLE LGWR
RFS IDLE ARCH
MRP0 APPLYING_LOG N/A

4.4 管理PDB的DataGuard

# 查看PDB状态
sqlplus / as sysdba@fgedudb_cdb
SELECT PDB_NAME, STATUS FROM dba_pdbs;

# 输出日志
PDB_NAME STATUS
———- ———-
PDB$SEED READ ONLY
FGEDU_PDB1 READ WRITE
FGEDU_PDB2 READ WRITE

# 在备用CDB上查看PDB状态
sqlplus / as sysdba@fgedudb_cdb_stby
SELECT PDB_NAME, STATUS FROM dba_pdbs;

# 输出日志
PDB_NAME STATUS
———- ———-
PDB$SEED READ ONLY
FGEDU_PDB1 MOUNTED
FGEDU_PDB2 MOUNTED

4.5 测试故障转移

# 使用DataGuard Broker执行故障转移
dgmgrl sys/password@fgedudb_cdb_stby

# 输出日志
DGMGRL for Linux: Release 19.0.0.0.0 – Production on Fri Apr 1 10:00:00 2026
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type “help” for information.
Connected to “fgedudb_cdb_stby”
Connected as SYSDBA.

# 执行故障转移
FAILOVER TO ‘fgedudb_cdb_stby’;

# 输出日志
Performing failover NOW, please wait…
Failover succeeded, new primary is “fgedudb_cdb_stby”

# 验证新主CDB状态
SHOW DATABASE ‘fgedudb_cdb_stby’;

# 输出日志
Database – fgedudb_cdb_stby
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
fgedudb_cdb_stby

Database Status:
SUCCESS

# 查看PDB状态
sqlplus / as sysdba@fgedudb_cdb_stby
SELECT PDB_NAME, STATUS FROM dba_pdbs;

# 输出日志
PDB_NAME STATUS
———- ———-
PDB$SEED READ ONLY
FGEDU_PDB1 READ WRITE
FGEDU_PDB2 READ WRITE

Part05-风哥经验总结与分享

5.1 集成最佳实践

  • 使用DataGuard Broker管理多租户环境的DataGuard配置
  • 确保主备CDB的PDB结构一致
  • 配置适当的保护模式,平衡数据安全和性能
  • 定期测试故障转移和切换,确保系统可靠性
  • 监控CDB和PDB的状态,及时发现和处理问题

5.2 常见问题与解决方案

  • PDB结构不一致:在主CDB中创建或删除PDB后,确保备用CDB也进行相应操作
  • 重做传输故障:检查网络连接和TNS配置
  • 应用服务故障:检查应用进程状态,确保MRP正常运行
  • 故障转移后PDB状态异常:检查PDB的打开状态,必要时手动打开
  • 性能问题:优化网络和存储性能,配置适当的并行度

5.3 性能优化建议

  • 使用高速网络连接,提高重做传输速度
  • 配置适当的并行度,提高重做应用速度
  • 使用SSD存储,提高I/O性能
  • 优化PDB的资源分配,提高整体性能
  • 定期清理归档日志,避免存储空间不足
学习交流加群风哥QQ113257174

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息