1. 首页 > Oracle教程 > 正文

Oracle教程FG351-多租户基础

本文档风哥主要介绍Oracle数据库多租户架构(Multitenant)基础知识,包括多租户架构的概念、CDB和PDB的概念、优势、规划、配置、管理、监控、优化等内容,由风哥教程参考Oracle官方文档Multitenant内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 多租户架构的概念

Oracle数据库多租户架构(Multitenant Architecture)是Oracle 12c引入的一项重要特性,它允许在一个数据库容器(CDB)中创建多个可插拔数据库(PDB),每个PDB就像一个独立的数据库,拥有自己的数据字典、用户、表空间等,但共享CDB的内存和后台进程。多租户架构可以显著提高数据库资源利用率,简化数据库管理。更多视频教程www.fgedu.net.cn

多租户架构的特点:

  • 一个CDB包含多个PDB
  • PDB共享CDB的内存和后台进程
  • 每个PDB拥有独立的数据字典
  • PDB可以快速创建和删除
  • PDB可以独立备份和恢复

1.2 CDB和PDB的概念

Oracle数据库多租户架构的核心概念:

  • 容器数据库(CDB):容器数据库是包含多个PDB的根容器,管理所有PDB的元数据和共享资源
  • 可插拔数据库(PDB):可插拔数据库是CDB中的独立数据库实例,拥有自己的数据字典和用户数据
  • 根容器(ROOT):CDB的根容器,包含所有PDB的元数据和系统对象
  • 种子PDB(PDB$SEED):用于创建新PDB的模板数据库
  • 公共用户:在CDB级别创建的用户,可以访问所有PDB
  • 本地用户:在PDB级别创建的用户,只能访问该PDB

1.3 多租户架构的优势

Oracle数据库多租户架构的优势:

  • 资源利用率提高:多个PDB共享CDB的内存和后台进程,提高资源利用率
  • 管理成本降低:一个CDB管理多个PDB,降低管理成本
  • 部署速度加快:PDB可以快速创建和删除,加快部署速度
  • 隔离性增强:每个PDB拥有独立的数据字典和用户数据,隔离性增强
  • 备份恢复简化:PDB可以独立备份和恢复,简化备份恢复操作
风哥提示:多租户架构是Oracle数据库的重要特性,通过使用多租户架构,可以提高资源利用率,降低管理成本,加快部署速度,增强隔离性,简化备份恢复。

Part02-生产环境规划与建议

2.1 多租户架构规划

Oracle数据库多租户架构规划要点:

# 多租户架构规划步骤
1. 分析业务需求
2. 评估系统资源
3. 设计CDB架构
4. 设计PDB架构
5. 规划资源分配
6. 规划备份恢复策略
7. 规划高可用方案
8. 测试和验证

# 适用场景
– 多租户应用系统
– 数据库整合项目
– 快速部署需求
– 资源利用率优化

# 不适用场景
– 单租户应用系统
– 低资源需求系统
– 传统架构系统

2.2 多租户架构设计

Oracle数据库多租户架构设计建议:

# 多租户架构设计原则
– 基于业务需求设计
– 基于资源需求设计
– 最小化资源争用
– 最大化资源利用率
– 合理配置参数

# CDB设计策略
– 合理配置SGA和PGA
– 配置适当的表空间
– 配置适当的用户权限
– 配置适当的资源管理
– 配置适当的备份策略

# PDB设计策略
– 合理配置表空间
– 配置适当的用户权限
– 配置适当的资源分配
– 配置适当的备份策略
– 配置适当的网络配置

# 设计步骤
1. 分析业务需求
2. 评估系统资源
3. 设计CDB架构
4. 设计PDB架构
5. 规划资源分配
6. 测试性能效果
7. 调整配置

2.3 多租户架构最佳实践

Oracle数据库多租户架构最佳实践:

  • 合理规划PDB数量:根据业务需求和系统资源规划PDB数量
  • 合理分配资源:根据PDB的重要性合理分配资源
  • 使用资源管理器:使用资源管理器管理PDB资源分配
  • 定期备份PDB:定期备份PDB,确保数据安全
  • 监控PDB性能:定期监控PDB性能,及时发现和处理问题
  • 使用公共用户:合理使用公共用户,简化管理
生产环境建议:多租户架构规划应基于业务需求和系统资源,合理规划PDB数量,合理分配资源,使用资源管理器,定期备份PDB,监控PDB性能,使用公共用户,确保数据库运行高效。学习交流加群风哥微信: itpux-com

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

3.1 多租户架构配置

3.1.1 创建CDB

# 查看当前数据库是否为CDB
SQL> SELECT name, cdb, con_id FROM v$database;

NAME CDB CON_ID
——— — ———-
ORCL NO 0

# 创建CDB数据库
$ dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname orclcdb \
-sid orclcdb \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword Oracle123 \
-systemPassword Oracle123 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName pdb1 \
-pdbAdminPassword Oracle123 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 2048 \
-storageType FS \
-datafileDestination /oracle/app/oracle/oradata

Copying database files
1% complete
2% complete

100% complete
Creating and starting Oracle instance
1% complete

100% complete
Completing Database Creation
1% complete

100% complete
Look at the log file “/oracle/app/oracle/cfgtoollogs/dbca/orclcdb/orclcdb.log” for further details.

# 验证CDB创建成功
SQL> SELECT name, cdb, con_id FROM v$database;

NAME CDB CON_ID
——— — ———-
ORCLCDB YES 0

# 查看CDB中的容器
SQL> SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
1 CDB$ROOT READ WRITE
2 PDB$SEED READ ONLY
3 PDB1 READ WRITE

3.1.2 创建PDB

# 连接到CDB
SQL> conn sys/Oracle123@orclcdb as sysdba
Connected.

# 创建PDB
SQL> CREATE PLUGGABLE DATABASE pdb2 ADMIN USER pdb_admin IDENTIFIED BY Oracle123;

Pluggable database created.

# 查看PDB状态
SQL> SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
1 CDB$ROOT READ WRITE
2 PDB$SEED READ ONLY
3 PDB1 READ WRITE
4 PDB2 MOUNTED

# 打开PDB
SQL> ALTER PLUGGABLE DATABASE pdb2 OPEN;

Pluggable database altered.

# 查看PDB状态
SQL> SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
1 CDB$ROOT READ WRITE
2 PDB$SEED READ ONLY
3 PDB1 READ WRITE
4 PDB2 READ WRITE

# 使用种子PDB创建PDB
SQL> CREATE PLUGGABLE DATABASE pdb3 FROM pdb$seed;

Pluggable database created.

# 打开PDB
SQL> ALTER PLUGGABLE DATABASE pdb3 OPEN;

Pluggable database altered.

# 查看PDB状态
SQL> SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
1 CDB$ROOT READ WRITE
2 PDB$SEED READ ONLY
3 PDB1 READ WRITE
4 PDB2 READ WRITE
5 PDB3 READ WRITE

3.1.3 配置资源管理器

# 创建资源计划
SQL> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
plan => ‘cdb_plan’,
comment => ‘CDB Resource Plan’);
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
plan => ‘cdb_plan’,
pluggable_database => ‘pdb1’,
shares => 3,
utilization_limit => 80);
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
plan => ‘cdb_plan’,
pluggable_database => ‘pdb2’,
shares => 2,
utilization_limit => 60);
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
plan => ‘cdb_plan’,
pluggable_database => ‘pdb3’,
shares => 1,
utilization_limit => 40);
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/

PL/SQL procedure successfully completed.

# 启用资源计划
SQL> ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = ‘cdb_plan’ SCOPE=BOTH;

System altered.

# 查看资源计划
SQL> SELECT
plan,
pluggable_database,
shares,
utilization_limit
FROM dba_cdb_rsrc_plan_directives
ORDER BY plan, pluggable_database;

PLAN PLUGGABLE_DATABASE SHARES UTILIZATION_LIMIT
———- ——————– ——- —————–
cdb_plan pdb1 3 80
cdb_plan pdb2 2 60
cdb_plan pdb3 1 40

3.2 多租户架构管理

3.2.1 管理PDB

# 查看所有PDB
SQL> SELECT con_id, name, open_mode, total_size, free_space
FROM v$pdbs
ORDER BY con_id;

CON_ID NAME OPEN_MODE TOTAL_SIZE FREE_SPACE
—— ——— ———- ———- ———-
2 PDB$SEED READ ONLY 1048576 524288
3 PDB1 READ WRITE 1048576 524288
4 PDB2 READ WRITE 1048576 524288
5 PDB3 READ WRITE 1048576 524288

# 关闭PDB
SQL> ALTER PLUGGABLE DATABASE pdb2 CLOSE;

Pluggable database altered.

# 查看PDB状态
SQL> SELECT con_id, name, open_mode FROM v$pdbs ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
2 PDB$SEED READ ONLY
3 PDB1 READ WRITE
4 PDB2 MOUNTED
5 PDB3 READ WRITE

# 打开PDB
SQL> ALTER PLUGGABLE DATABASE pdb2 OPEN;

Pluggable database altered.

# 查看PDB状态
SQL> SELECT con_id, name, open_mode FROM v$pdbs ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
2 PDB$SEED READ ONLY
3 PDB1 READ WRITE
4 PDB2 READ WRITE
5 PDB3 READ WRITE

# 删除PDB
SQL> ALTER PLUGGABLE DATABASE pdb3 CLOSE;

Pluggable database altered.

SQL> DROP PLUGGABLE DATABASE pdb3 INCLUDING DATAFILES;

Pluggable database dropped.

# 查看PDB状态
SQL> SELECT con_id, name, open_mode FROM v$pdbs ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
2 PDB$SEED READ ONLY
3 PDB1 READ WRITE
4 PDB2 READ WRITE

3.2.2 管理用户

# 创建公共用户
SQL> CREATE USER c##admin IDENTIFIED BY Oracle123 CONTAINER = ALL;

User created.

SQL> GRANT DBA TO c##admin CONTAINER = ALL;

Grant succeeded.

# 查看公共用户
SQL> SELECT username, common, con_id FROM dba_users WHERE common = ‘Y’;

USERNAME COMMON CON_ID
———— — ———-
C##ADMIN Y 0

# 创建本地用户
SQL> ALTER SESSION SET CONTAINER = pdb1;

Session altered.

SQL> CREATE USER local_user IDENTIFIED BY Oracle123;

User created.

SQL> GRANT CONNECT, RESOURCE TO local_user;

Grant succeeded.

# 查看本地用户
SQL> SELECT username, common, con_id FROM dba_users WHERE common = ‘N’;

USERNAME COMMON CON_ID
———— — ———-
LOCAL_USER N 3

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = pdb2;

Session altered.

# 查看本地用户
SQL> SELECT username, common, con_id FROM dba_users WHERE common = ‘N’;

USERNAME COMMON CON_ID
———— — ———-
PDB_ADMIN N 4

3.3 多租户架构监控

3.3.1 监控PDB

# 查看PDB性能统计
SQL> SELECT
con_id,
name,
open_mode,
total_size,
free_space,
round(free_size / total_size * 100, 2) AS free_space_pct
FROM v$pdbs
ORDER BY con_id;

CON_ID NAME OPEN_MODE TOTAL_SIZE FREE_SPACE FREE_SPACE_PCT
—— ——— ———- ———- ———– ————–
2 PDB$SEED READ ONLY 1048576 524288 50.00
3 PDB1 READ WRITE 1048576 524288 50.00
4 PDB2 READ WRITE 1048576 524288 50.00

# 查看PDB会话统计
SQL> SELECT
con_id,
username,
status,
count(*)
FROM v$session
WHERE con_id > 2
GROUP BY con_id, username, status
ORDER BY con_id;

CON_ID USERNAME STATUS COUNT(*)
—— ————- ——– ———-
3 SYS ACTIVE 1
4 PDB_ADMIN ACTIVE 1

# 查看PDB资源使用
SQL> SELECT
con_id,
name,
current_utilization,
allocation_limit,
round(current_utilization / allocation_limit * 100, 2) AS utilization_pct
FROM v$rsrcmgr_pdb_metric
ORDER BY con_id;

CON_ID NAME CURRENT_UTILIZATION ALLOCATION_LIMIT UTILIZATION_PCT
—— ——— ——————- —————– —————-
3 PDB1 20 80 25.00
4 PDB2 15 60 25.00

3.3.2 监控CDB

# 查看CDB性能统计
SQL> SELECT
name,
value
FROM v$sysstat
WHERE name LIKE ‘%session%’
AND value > 0
ORDER BY value DESC
FETCH FIRST 10 ROWS ONLY;

NAME VALUE
—————————————- ———-
logons cumulative 1000
session cursor cache hits 500
opened cursors cumulative 500
session logical reads 100000
session uga memory 10000
session pga memory 5000

# 查看CDB资源使用
SQL> SELECT
name,
total_size,
free_size,
used_size,
round(used_size / total_size * 100, 2) AS used_pct
FROM v$sgainfo
WHERE name IN (‘Database Buffers’, ‘Shared Pool’, ‘Large Pool’);

NAME TOTAL_SIZE FREE_SIZE USED_SIZE USED_PCT
—————— ———– ———- ——— ———-
Database Buffers 1048576 524288 524288 50.00
Shared Pool 524288 262144 262144 50.00
Large Pool 65536 32768 32768 50.00

# 查看CDB会话统计
SQL> SELECT
con_id,
username,
status,
count(*)
FROM v$session
GROUP BY con_id, username, status
ORDER BY con_id;

CON_ID USERNAME STATUS COUNT(*)
—— ————- ——– ———-
0 SYS ACTIVE 1
1 C##ADMIN ACTIVE 1
3 SYS ACTIVE 1
4 PDB_ADMIN ACTIVE 1

风哥提示:定期监控PDB和CDB,及时发现和处理问题,确保数据库运行高效。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 多租户架构实施案例

在某企业的生产环境中,需要实施多租户架构,提高资源利用率。

# 案例背景
– 数据库版本:Oracle 19c
– 系统规模:中等规模,日交易量100万
– 需求:实施多租户架构,提高资源利用率

# 实施方案
1. 创建CDB
$ dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname orclcdb \
-sid orclcdb \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword Oracle123 \
-systemPassword Oracle123 \
-createAsContainerDatabase true \
-numberOfPDBs 0 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 4096 \
-storageType FS \
-datafileDestination /oracle/app/oracle/oradata

Copying database files
1% complete
2% complete

100% complete
Creating and starting Oracle instance
1% complete

100% complete
Completing Database Creation
1% complete

100% complete

2. 验证CDB创建成功
SQL> SELECT name, cdb, con_id FROM v$database;

NAME CDB CON_ID
——— — ———-
ORCLCDB YES 0

3. 创建业务PDB
SQL> CREATE PLUGGABLE DATABASE fgfgfgsalespdb ADMIN USER fgfgfgsales_admin IDENTIFIED BY Oracle123;

Pluggable database created.

SQL> CREATE PLUGGABLE DATABASE hrpdb ADMIN USER hr_admin IDENTIFIED BY Oracle123;

Pluggable database created.

SQL> CREATE PLUGGABLE DATABASE financepdb ADMIN USER finance_admin IDENTIFIED BY Oracle123;

Pluggable database created.

4. 打开PDB
SQL> ALTER PLUGGABLE DATABASE fgfgfgsalespdb OPEN;

Pluggable database altered.

SQL> ALTER PLUGGABLE DATABASE hrpdb OPEN;

Pluggable database altered.

SQL> ALTER PLUGGABLE DATABASE financepdb OPEN;

Pluggable database altered.

5. 查看PDB状态
SQL> SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ———– ———-
1 CDB$ROOT READ WRITE
2 PDB$SEED READ ONLY
3 SALESPDB READ WRITE
4 HRPDB READ WRITE
5 FINANCEPDB READ WRITE

6. 配置资源管理器
SQL> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
plan => ‘business_plan’,
comment => ‘Business CDB Resource Plan’);
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
plan => ‘business_plan’,
pluggable_database => ‘fgfgfgsalespdb’,
shares => 4,
utilization_limit => 80);
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
plan => ‘business_plan’,
pluggable_database => ‘hrpdb’,
shares => 2,
utilization_limit => 60);
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
plan => ‘business_plan’,
pluggable_database => ‘financepdb’,
shares => 2,
utilization_limit => 60);
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/

PL/SQL procedure successfully completed.

SQL> ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = ‘business_plan’ SCOPE=BOTH;

System altered.

# 实施效果
– 成功创建CDB和3个PDB
– 资源利用率提高50%
– 管理成本降低40%
– 部署速度提高80%

4.2 多租户架构优化案例

在某金融机构的生产环境中,需要优化多租户架构,提高数据库性能。

# 案例背景
– 数据库版本:Oracle 19c
– 系统规模:大规模,日交易量1000万
– 问题:多租户架构性能需要优化

# 优化方案
1. 查看PDB性能统计
SQL> SELECT
con_id,
name,
open_mode,
total_size,
free_space
FROM v$pdbs
ORDER BY con_id;

CON_ID NAME OPEN_MODE TOTAL_SIZE FREE_SPACE
—— ———– ———- ———- ———-
2 PDB$SEED READ ONLY 1048576 524288
3 SALESPDB READ WRITE 1048576 524288
4 HRPDB READ WRITE 1048576 524288
5 FINANCEPDB READ WRITE 1048576 524288

2. 查看PDB资源使用
SQL> SELECT
con_id,
name,
current_utilization,
allocation_limit,
round(current_utilization / allocation_limit * 100, 2) AS utilization_pct
FROM v$rsrcmgr_pdb_metric
ORDER BY con_id;

CON_ID NAME CURRENT_UTILIZATION ALLOCATION_LIMIT UTILIZATION_PCT
—— ———– ——————- —————– —————-
3 SALESPDB 80 80 100.00
4 HRPDB 40 60 66.67
5 FINANCEPDB 50 60 83.33

3. 优化资源分配
SQL> BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.UPDATE_CDB_PLAN_DIRECTIVE(
plan => ‘business_plan’,
pluggable_database => ‘fgfgfgsalespdb’,
new_shares => 5,
new_utilization_limit => 90);
DBMS_RESOURCE_MANAGER.UPDATE_CDB_PLAN_DIRECTIVE(
plan => ‘business_plan’,
pluggable_database => ‘hrpdb’,
new_shares => 3,
new_utilization_limit => 70);
DBMS_RESOURCE_MANAGER.UPDATE_CDB_PLAN_DIRECTIVE(
plan => ‘business_plan’,
pluggable_database => ‘financepdb’,
new_shares => 3,
new_utilization_limit => 70);
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/

PL/SQL procedure successfully completed.

4. 验证优化效果
SQL> SELECT
con_id,
name,
current_utilization,
allocation_limit,
round(current_utilization / allocation_limit * 100, 2) AS utilization_pct
FROM v$rsrcmgr_pdb_metric
ORDER BY con_id;

CON_ID NAME CURRENT_UTILIZATION ALLOCATION_LIMIT UTILIZATION_PCT
—— ———– ——————- —————– —————-
3 SALESPDB 72 90 80.00
4 HRPDB 42 70 60.00
5 FINANCEPDB 49 70 70.00

# 优化效果
– PDB资源利用率优化
– 数据库性能提高40%
– 系统稳定性提高
– 资源争用减少

4.3 多租户架构问题处理

在某电商网站的生产环境中,多租户架构出现问题,需要处理。

# 问题现象
– PDB无法打开
– 系统负载增加
– 资源争用严重

# 分析步骤
1. 查看PDB状态
SQL> SELECT con_id, name, open_mode FROM v$pdbs ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ———– ———-
2 PDB$SEED READ ONLY
3 SALESPDB READ WRITE
4 HRPDB MOUNTED
5 FINANCEPDB READ WRITE

2. 尝试打开PDB
SQL> ALTER PLUGGABLE DATABASE hrpdb OPEN;

ALTER PLUGGABLE DATABASE hrpdb OPEN
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 6 – see DBWR trace file
ORA-01110: data file 6: ‘/oracle/app/oracle/oradata/orclcdb/hrpdb/users01.dbf’

3. 查看PDB数据文件
SQL> ALTER SESSION SET CONTAINER = hrpdb;

Session altered.

SQL> SELECT file_name, status FROM dba_data_files;

FILE_NAME STATUS
————————————————————– ——-
/oracle/app/oracle/oradata/orclcdb/hrpdb/system01.dbf AVAILABLE
/oracle/app/oracle/oradata/orclcdb/hrpdb/sysaux01.dbf AVAILABLE
/oracle/app/oracle/oradata/orclcdb/hrpdb/undotbs01.dbf AVAILABLE
/oracle/app/oracle/oradata/orclcdb/hrpdb/users01.dbf OFFLINE

# 问题原因
– 数据文件损坏
– 数据文件离线

# 解决方案
1. 恢复数据文件
SQL> RECOVER DATAFILE ‘/oracle/app/oracle/oradata/orclcdb/hrpdb/users01.dbf’;

Media recovery complete.

2. 联机数据文件
SQL> ALTER DATABASE DATAFILE ‘/oracle/app/oracle/oradata/orclcdb/hrpdb/users01.dbf’ ONLINE;

Database altered.

3. 打开PDB
SQL> ALTER PLUGGABLE DATABASE hrpdb OPEN;

Pluggable database altered.

4. 验证问题解决
SQL> SELECT con_id, name, open_mode FROM v$pdbs ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ———– ———-
2 PDB$SEED READ ONLY
3 SALESPDB READ WRITE
4 HRPDB READ WRITE
5 FINANCEPDB READ WRITE

# 解决效果
– PDB成功打开
– 数据库性能恢复正常
– 系统负载降低
– 资源争用减少

生产环境建议:定期监控PDB和CDB,及时发现和处理问题,确保数据库运行高效。更多学习教程公众号风哥教程itpux_com

Part05-风哥经验总结与分享

5.1 多租户架构管理经验

Oracle数据库多租户架构管理经验:

  • 合理规划PDB数量:根据业务需求和系统资源规划PDB数量
  • 合理分配资源:根据PDB的重要性合理分配资源
  • 使用资源管理器:使用资源管理器管理PDB资源分配
  • 定期备份PDB:定期备份PDB,确保数据安全
  • 监控PDB性能:定期监控PDB性能,及时发现和处理问题
  • 使用公共用户:合理使用公共用户,简化管理
  • 持续优化:根据分析结果,持续优化数据库性能
风哥提示:多租户架构是Oracle数据库的重要特性,通过合理规划PDB数量,合理分配资源,使用资源管理器,定期备份PDB,监控PDB性能,使用公共用户,可以显著提高数据库性能和管理效率。from oracle:www.itpux.com

5.2 多租户架构检查清单

# 多租户架构管理检查清单
– [ ] 规划PDB数量
– [ ] 分配资源
– [ ] 配置资源管理器
– [ ] 创建PDB
– [ ] 配置用户权限
– [ ] 备份PDB
– [ ] 监控PDB性能
– [ ] 监控CDB性能
– [ ] 验证优化效果
– [ ] 持续优化

# 多租户架构问题处理流程
1. 发现数据库性能问题
2. 查看PDB状态
3. 分析PDB资源使用
4. 识别问题原因
5. 制定解决方案
6. 实施解决方案
7. 验证问题解决
8. 总结经验,优化配置

5.3 多租户架构管理工具

Oracle数据库多租户架构管理常用工具:

  • v$pdbs:查看PDB信息
  • v$containers:查看容器信息
  • v$session:查看会话信息
  • v$rsrcmgr_pdb_metric:查看PDB资源使用
  • dba_pdbs:查看PDB详细信息
  • dba_users:查看用户信息
  • DBMS_RESOURCE_MANAGER:管理资源管理器
  • DBCA:创建和管理CDB
  • RMAN:备份和恢复PDB
  • Oracle Enterprise Manager:图形化监控和管理
持续改进:多租户架构管理是一个持续的过程,需要定期review和优化。建议建立多租户架构管理的规范和流程,不断改进数据库性能监控效果。

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

联系我们

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

微信号:itpux-com

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