1. 首页 > GoldenGate教程 > 正文

GoldenGate教程FG016-多租户架构与配置

本文档详细介绍Oracle GoldenGate的多租户架构与配置,风哥教程参考GoldenGate官方文档多租户相关内容,适合数据库管理员和技术人员学习和参考。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 多租户概念

多租户架构是Oracle Database 12c引入的一种数据库架构,允许多个可插拔数据库(PDB)共享一个容器数据库(CDB)的资源。在多租户架构中,CDB是一个包含多个PDB的容器,每个PDB是一个独立的数据库环境。

多租户架构的基本组件:

  • 容器数据库(CDB):包含多个PDB的容器,提供共享的系统资源和元数据
  • 可插拔数据库(PDB):独立的数据库环境,可以单独管理和使用
  • 根容器(ROOT):CDB的根容器,包含系统元数据和共享组件
  • 种子PDB(PDB$SEED):创建新PDB的模板

1.2 多租户架构

多租户架构的结构如下:

# 多租户架构结构

## 1. 容器数据库(CDB)
– 包含多个PDB
– 提供共享的系统资源
– 管理PDB的生命周期
– 存储系统元数据

## 2. 可插拔数据库(PDB)
– 独立的数据库环境
– 有自己的用户、表空间和数据
– 可以单独启动和关闭
– 可以在CDB之间移动

## 3. 根容器(ROOT)
– CDB的根容器
– 包含系统用户和系统表
– 存储CDB级别的元数据
– 管理PDB的创建和删除

## 4. 种子PDB(PDB$SEED)
– 创建新PDB的模板
– 只读的PDB
– 包含默认的系统表和视图

1.3 多租户优势

多租户架构的优势包括:

  • 资源共享:多个PDB共享CDB的系统资源,减少资源消耗
  • 简化管理:集中管理多个数据库,减少管理开销
  • 快速部署:通过克隆PDB快速部署新的数据库环境
  • 隔离性:每个PDB是独立的,互不影响
  • 灵活性:可以根据需要调整PDB的资源分配

学习交流加群风哥微信: itpux-com

Part02-生产环境规划与建议

2.1 多租户规划

制定GoldenGate多租户规划时,需要考虑以下因素:

# 多租户规划考虑因素

## 1. 架构设计
– 确定CDB和PDB的数量
– 规划PDB的命名和用途
– 设计PDB的资源分配

## 2. 存储规划
– 规划CDB和PDB的存储位置
– 配置适当的表空间
– 考虑PDB的备份策略

## 3. 网络规划
– 配置PDB的网络访问
– 规划GoldenGate的网络连接
– 考虑网络安全

## 4. 资源规划
– 计算所需的CPU和内存资源
– 规划存储容量
– 考虑峰值负载

## 5. 管理规划
– 制定PDB的管理策略
– 规划GoldenGate的监控和维护
– 考虑故障处理和恢复

2.2 多租户考虑因素

在配置GoldenGate多租户架构时,需要考虑以下因素:

多租户考虑因素:

  • 权限管理:确保GoldenGate用户有适当的权限访问CDB和PDB
  • 性能影响:考虑多租户对GoldenGate性能的影响
  • 数据隔离:确保不同PDB的数据同步互不影响
  • 配置复杂性:多租户配置比传统配置更复杂
  • 版本兼容性:确保GoldenGate版本支持多租户架构

2.3 多租户建议

GoldenGate多租户架构的建议:

# 多租户建议

## 1. 架构建议
– 使用最新版本的GoldenGate,确保支持多租户特性
– 为每个PDB配置独立的Extract和Replicat进程
– 考虑使用集成模式(Integrated Mode)提高性能

## 2. 配置建议
– 在CDB级别创建GoldenGate用户
– 为每个PDB授予必要的权限
– 配置适当的 supplemental logging

## 3. 监控建议
– 监控每个PDB的同步状态
– 监控GoldenGate进程的性能
– 定期检查多租户环境的健康状态

## 4. 维护建议
– 定期备份CDB和PDB
– 定期更新GoldenGate版本
– 定期优化多租户配置

## 5. 故障处理建议
– 制定多租户环境的故障处理流程
– 准备PDB级别的应急方案
– 定期进行故障演练

from GoldenGate视频:www.itpux.com

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

3.1 CDB配置

CDB配置是多租户架构的基础。以下是具体的实施方案:

# CDB配置

## 1. 创建CDB

### 1.1 使用DBCA创建CDB
$ dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname fgedudb \
-sid fgedudb \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName fgedupdb \
-pdbAdminPassword fgedu123 \
-sysPassword fgedu123 \
-systemPassword fgedu123 \
-datafileDestination /GoldenGate/fgdata \
-storageType ASM \
-asmSysPassword fgedu123 \
-characterSet AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-listenPort 1521 \
-emConfiguration NONE

### 1.2 手动创建CDB
SQL> CREATE DATABASE fgedudb \
USER SYS IDENTIFIED BY fgedu123 \
USER SYSTEM IDENTIFIED BY fgedu123 \
EXTENT MANAGEMENT LOCAL \
DEFAULT TABLESPACE users \
DEFAULT TEMPORARY TABLESPACE temp \
UNDO TABLESPACE undotbs1 \
ENABLE PLUGGABLE DATABASE \
SEED \
SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED \
SYSAUX DATAFILES SIZE 100M \
USER_DATA TABLESPACE users DATAFILES SIZE 100M AUTOEXTEND ON MAXSIZE UNLIMITED;

## 2. 配置CDB参数

### 2.1 启用归档模式
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;

### 2.2 启用强制日志
SQL> ALTER DATABASE FORCE LOGGING;

### 2.3 配置 supplemental logging
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

## 3. 创建GoldenGate用户

### 3.1 在CDB级别创建用户
SQL> CREATE USER c##ggate IDENTIFIED BY ggate123 CONTAINER=ALL;
SQL> GRANT CREATE SESSION, ALTER SESSION TO c##ggate CONTAINER=ALL;
SQL> GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO c##ggate CONTAINER=ALL;
SQL> GRANT FLASHBACK ANY TABLE TO c##ggate CONTAINER=ALL;
SQL> GRANT EXECUTE ON DBMS_FLASHBACK TO c##ggate CONTAINER=ALL;
SQL> GRANT EXECUTE ON DBMS_LOGMNR TO c##ggate CONTAINER=ALL;

3.2 PDB配置

PDB配置是多租户架构的重要组成部分。以下是具体的实施方案:

# PDB配置

## 1. 创建PDB

### 1.1 从种子PDB创建
SQL> CREATE PLUGGABLE DATABASE fgedupdb1 \
ADMIN USER pdbadmin IDENTIFIED BY pdbadmin123 \
FILE_NAME_CONVERT=(‘/GoldenGate/fgdata/fgedudb/pdbseed/’,’/GoldenGate/fgdata/fgedudb/fgedupdb1/’);

### 1.2 克隆现有PDB
SQL> CREATE PLUGGABLE DATABASE fgedupdb2 FROM fgedupdb1 \
FILE_NAME_CONVERT=(‘/GoldenGate/fgdata/fgedudb/fgedupdb1/’,’/GoldenGate/fgdata/fgedudb/fgedupdb2/’);

## 2. 启动和关闭PDB

### 2.1 启动PDB
SQL> ALTER PLUGGABLE DATABASE fgedupdb1 OPEN;

### 2.2 关闭PDB
SQL> ALTER PLUGGABLE DATABASE fgedupdb1 CLOSE;

## 3. 配置PDB参数

### 3.1 连接到PDB
SQL> ALTER SESSION SET CONTAINER=fgedupdb1;

### 3.2 启用 supplemental logging
SQL> ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA;

### 3.3 创建表空间
SQL> CREATE TABLESPACE fgedutbs DATAFILE ‘/GoldenGate/fgdata/fgedudb/fgedupdb1/fgedutbs01.dbf’ SIZE 100M AUTOEXTEND ON;

### 3.4 创建用户
SQL> CREATE USER fgedu IDENTIFIED BY fgedu123 DEFAULT TABLESPACE fgedutbs;
SQL> GRANT CREATE SESSION, CREATE TABLE TO fgedu;

### 3.5 创建测试表
SQL> CREATE TABLE fgedu.emp (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
salary NUMBER
);

SQL> INSERT INTO fgedu.emp VALUES (1, ‘Alice’, 5000);
SQL> INSERT INTO fgedu.emp VALUES (2, ‘Bob’, 6000);
SQL> COMMIT;

3.3 GoldenGate配置

GoldenGate多租户配置是实现多租户数据同步的关键。以下是具体的实施方案:

# GoldenGate多租户配置

## 1. 配置Manager进程

### 1.1 编辑Manager参数文件
GGSCI> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7900
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /GoldenGate/fgdata/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

### 1.2 启动Manager进程
GGSCI> start mgr

## 2. 配置Extract进程

### 2.1 编辑Extract参数文件(针对特定PDB)
GGSCI> edit param EXT_PDB1
EXTRACT EXT_PDB1
USERID c##ggate@fgedudb/fgedupdb1, PASSWORD ggate123
EXTTRAIL /GoldenGate/fgdata/dirdat/p1
TABLE fgedu.*;

### 2.2 添加Extract进程
GGSCI> add extract EXT_PDB1, sourceistable
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/p1, extract EXT_PDB1

### 2.3 启动Extract进程
GGSCI> start EXT_PDB1

## 3. 配置Data Pump进程

### 3.1 编辑Data Pump参数文件
GGSCI> edit param DP_PDB1
EXTRACT DP_PDB1
PASSTHRU
RMTHOST fgedu02, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/r1
TABLE fgedu.*;

### 3.2 添加Data Pump进程
GGSCI> add extract DP_PDB1, exttrailsource /GoldenGate/fgdata/dirdat/p1
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/r1, extract DP_PDB1

### 3.3 启动Data Pump进程
GGSCI> start DP_PDB1

## 4. 配置Replicat进程

### 4.1 编辑Replicat参数文件
GGSCI> edit param REP_PDB1
REPLICAT REP_PDB1
USERID c##ggate@fgedudb/fgedupdb1, PASSWORD ggate123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;

### 4.2 添加Replicat进程
GGSCI> add replicat REP_PDB1, exttrail /GoldenGate/fgdata/dirdat/r1, checkpointtable fgedu.gg_checkpoint

### 4.3 启动Replicat进程
GGSCI> start REP_PDB1

Part04-生产案例与实战讲解

4.1 CDB与PDB配置案例

以下是CDB与PDB配置的实战案例:

# CDB与PDB配置案例

## 环境信息
操作系统:Oracle Linux 8.5
Oracle Database:19c
GoldenGate版本:21.3.0.0.0

## 配置步骤

### 1. 创建CDB
$ dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname fgedudb \
-sid fgedudb \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName fgedupdb \
-pdbAdminPassword fgedu123 \
-sysPassword fgedu123 \
-systemPassword fgedu123 \
-datafileDestination /GoldenGate/fgdata \
-storageType FS \
-characterSet AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-listenPort 1521 \
-emConfiguration NONE

### 2. 配置CDB
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

### 3. 创建GoldenGate用户
SQL> CREATE USER c##ggate IDENTIFIED BY ggate123 CONTAINER=ALL;
SQL> GRANT CREATE SESSION, ALTER SESSION TO c##ggate CONTAINER=ALL;
SQL> GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO c##ggate CONTAINER=ALL;
SQL> GRANT FLASHBACK ANY TABLE TO c##ggate CONTAINER=ALL;
SQL> GRANT EXECUTE ON DBMS_FLASHBACK TO c##ggate CONTAINER=ALL;
SQL> GRANT EXECUTE ON DBMS_LOGMNR TO c##ggate CONTAINER=ALL;

### 4. 创建PDB
SQL> CREATE PLUGGABLE DATABASE fgedupdb1 \
ADMIN USER pdbadmin IDENTIFIED BY pdbadmin123 \
FILE_NAME_CONVERT=(‘/GoldenGate/fgdata/fgedudb/pdbseed/’,’/GoldenGate/fgdata/fgedudb/fgedupdb1/’);

### 5. 配置PDB
SQL> ALTER PLUGGABLE DATABASE fgedupdb1 OPEN;
SQL> ALTER SESSION SET CONTAINER=fgedupdb1;
SQL> CREATE TABLESPACE fgedutbs DATAFILE ‘/GoldenGate/fgdata/fgedudb/fgedupdb1/fgedutbs01.dbf’ SIZE 100M AUTOEXTEND ON;
SQL> CREATE USER fgedu IDENTIFIED BY fgedu123 DEFAULT TABLESPACE fgedutbs;
SQL> GRANT CREATE SESSION, CREATE TABLE TO fgedu;
SQL> CREATE TABLE fgedu.emp (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
salary NUMBER
);
SQL> INSERT INTO fgedu.emp VALUES (1, ‘Alice’, 5000);
SQL> INSERT INTO fgedu.emp VALUES (2, ‘Bob’, 6000);
SQL> COMMIT;

### 6. 验证配置
SQL> SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
——————————————————————————– ———-
PDB$SEED READ ONLY
FGEDUPDB READ WRITE
FGEDUPDB1 READ WRITE

SQL> ALTER SESSION SET CONTAINER=fgedupdb1;
SQL> SELECT * FROM fgedu.emp;
ID NAME SALARY
———- ——————————————————————————– ———-
1 Alice 5000
2 Bob 6000

### 7. 配置结果
– CDB已创建并配置
– PDB已创建并配置
– GoldenGate用户已创建
– 测试表已创建并插入数据

4.2 GoldenGate多租户配置案例

以下是GoldenGate多租户配置的实战案例:

# GoldenGate多租户配置案例

## 环境信息
源端:fgedu01 (Oracle Linux 8.5, Oracle 19c CDB)
目标端:fgedu02 (Oracle Linux 8.5, Oracle 19c CDB)
GoldenGate版本:21.3.0.0.0

## 配置步骤

### 1. 配置源端Manager进程
GGSCI> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7900
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /GoldenGate/fgdata/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

GGSCI> start mgr

### 2. 配置源端Extract进程
GGSCI> edit param EXT_PDB1
EXTRACT EXT_PDB1
USERID c##ggate@fgedudb/fgedupdb1, PASSWORD ggate123
EXTTRAIL /GoldenGate/fgdata/dirdat/p1
TABLE fgedu.*;

GGSCI> add extract EXT_PDB1, sourceistable
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/p1, extract EXT_PDB1
GGSCI> start EXT_PDB1

### 3. 配置源端Data Pump进程
GGSCI> edit param DP_PDB1
EXTRACT DP_PDB1
PASSTHRU
RMTHOST fgedu02, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/r1
TABLE fgedu.*;

GGSCI> add extract DP_PDB1, exttrailsource /GoldenGate/fgdata/dirdat/p1
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/r1, extract DP_PDB1
GGSCI> start DP_PDB1

### 4. 配置目标端Manager进程
GGSCI> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7900
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /GoldenGate/fgdata/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

GGSCI> start mgr

### 5. 配置目标端Replicat进程
GGSCI> edit param REP_PDB1
REPLICAT REP_PDB1
USERID c##ggate@fgedudb/fgedupdb1, PASSWORD ggate123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;

GGSCI> add replicat REP_PDB1, exttrail /GoldenGate/fgdata/dirdat/r1, checkpointtable fgedu.gg_checkpoint
GGSCI> start REP_PDB1

### 6. 验证配置
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT_PDB1 00:00:00 00:00:05
EXTRACT RUNNING DP_PDB1 00:00:00 00:00:03
REPLICAT RUNNING REP_PDB1 00:00:00 00:00:02

### 7. 配置结果
– 源端Manager进程已配置并启动
– 源端Extract进程已配置并启动
– 源端Data Pump进程已配置并启动
– 目标端Manager进程已配置并启动
– 目标端Replicat进程已配置并启动

4.3 多租户数据同步案例

以下是多租户数据同步的实战案例:

# 多租户数据同步案例

## 环境信息
源端PDB:fgedupdb1
目标端PDB:fgedupdb1
GoldenGate版本:21.3.0.0.0

## 同步步骤

### 1. 在源端插入数据
SQL> ALTER SESSION SET CONTAINER=fgedupdb1;
SQL> INSERT INTO fgedu.emp VALUES (3, ‘Charlie’, 7000);
SQL> INSERT INTO fgedu.emp VALUES (4, ‘David’, 8000);
SQL> COMMIT;

### 2. 检查源端Extract进程
GGSCI> info EXT_PDB1
EXTRACT RUNNING EXT_PDB1 00:00:00 00:00:05

GGSCI> stats EXT_PDB1
Start of Statistics at 2026-04-10 10:00:00.

Output to /GoldenGate/fgdata/dirdat/p1:

Extracting from FGEDU.EMP:

*** Current statistics since 2026-04-10 09:00:00 ***
Total inserts 4.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
Total operations 4.00

### 3. 检查源端Data Pump进程
GGSCI> info DP_PDB1
EXTRACT RUNNING DP_PDB1 00:00:00 00:00:03

GGSCI> stats DP_PDB1
Start of Statistics at 2026-04-10 10:00:00.

Output to /GoldenGate/fgdata/dirdat/r1:

Extracting from FGEDU.EMP:

*** Current statistics since 2026-04-10 09:00:00 ***
Total inserts 4.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
Total operations 4.00

### 4. 检查目标端Replicat进程
GGSCI> info REP_PDB1
REPLICAT RUNNING REP_PDB1 00:00:00 00:00:02

GGSCI> stats REP_PDB1
Start of Statistics at 2026-04-10 10:00:00.

Replicating from FGEDU.EMP to FGEDU.EMP:

*** Current statistics since 2026-04-10 09:00:00 ***
Total inserts 4.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
Total operations 4.00

### 5. 验证目标端数据
SQL> ALTER SESSION SET CONTAINER=fgedupdb1;
SQL> SELECT * FROM fgedu.emp;
ID NAME SALARY
———- ——————————————————————————– ———-
1 Alice 5000
2 Bob 6000
3 Charlie 7000
4 David 8000

### 6. 同步结果
– 源端插入的4条记录已成功同步到目标端
– 所有GoldenGate进程运行正常
– 数据同步延迟为0

Part05-风哥经验总结与分享

5.1 最佳实践

根据实际经验,总结以下最佳实践:

  • 使用最新版本:使用支持多租户特性的最新GoldenGate版本
  • 合理规划:根据业务需求合理规划CDB和PDB的数量和配置
  • 独立进程:为每个PDB配置独立的Extract和Replicat进程
  • 权限管理:在CDB级别创建GoldenGate用户,并为每个PDB授予必要的权限
  • 监控到位:监控每个PDB的同步状态,确保数据同步正常

5.2 常见问题与解决

多租户架构与配置中的常见问题及解决方案:

常见问题及解决方案:

  • 权限不足:确保GoldenGate用户在CDB和PDB级别都有适当的权限
  • 连接失败:检查连接字符串格式,确保正确指定PDB
  • 同步延迟:优化GoldenGate配置,提高同步性能
  • 数据不一致:检查 supplemental logging配置,确保数据捕获完整
  • 进程启动失败:检查进程参数文件,确保配置正确

5.3 风哥经验分享

在多次GoldenGate多租户架构配置的经验中,我总结了以下几点心得:

1. 架构规划:在实施多租户架构前,需要充分规划CDB和PDB的数量、用途和资源分配,确保架构设计合理。

2. 权限管理:多租户环境的权限管理比传统环境更复杂,需要在CDB级别和PDB级别分别配置权限,确保GoldenGate用户有适当的访问权限。

3. 性能优化:多租户环境可能会对GoldenGate性能产生影响,需要优化配置,如使用集成模式、调整并行度等,提高同步性能。

4. 监控维护:多租户环境需要更细致的监控,确保每个PDB的同步状态正常,及时发现和解决问题。

5. 故障处理:多租户环境的故障处理需要考虑PDB级别的问题,制定相应的应急方案,确保系统的可靠性。

更多学习教程公众号风哥教程itpux_com

风哥提示:多租户架构是Oracle数据库的重要特性,GoldenGate对多租户的支持也在不断增强。建议在实施多租户架构时,充分了解GoldenGate的多租户支持特性,合理配置,确保数据同步的可靠性和性能。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

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

微信号:itpux-com

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