本文档风哥主要介绍Oracle数据库PDB服务管理相关知识,包括PDB服务管理的概念、方法、要求、规划、配置、验证等内容,由风哥教程参考Oracle官方文档Multitenant内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 PDB服务管理的概念
Oracle数据库PDB服务管理是指在多租户容器数据库(CDB)中对PDB级别的服务进行配置和管理,包括服务创建、服务修改、服务删除、服务监控等。PDB服务管理可以实现PDB级别的服务管理,提高系统可用性。PDB服务管理包括服务创建、服务修改、服务删除、服务监控、服务调优等组件。更多视频教程www.fgedu.net.cn
- 支持PDB级别的服务管理
- 支持服务创建
- 支持服务修改
- 支持服务监控
- 提高系统可用性
1.2 PDB服务管理的方法
Oracle数据库PDB服务管理的方法:
- 服务创建:创建PDB服务
- 服务修改:修改PDB服务
- 服务删除:删除PDB服务
- 服务监控:监控PDB服务
- 服务调优:调优PDB服务
1.3 PDB服务管理的要求
Oracle数据库PDB服务管理的要求:
- PDB架构:必须在PDB架构中管理服务
- 系统资源:足够的CPU、内存和磁盘空间
- 权限:需要PDB的SYSDBA权限
- 兼容性:Oracle数据库版本必须支持PDB服务管理
- 配置:需要配置适当的参数和选项
Part02-生产环境规划与建议
2.1 PDB服务管理规划
Oracle数据库PDB服务管理规划要点:
1. 分析业务需求
2. 评估系统资源
3. 设计PDB服务管理方案
4. 规划PDB服务管理架构
5. 规划服务创建策略
6. 规划服务监控策略
7. 测试和验证
# 适用场景
– 多租户数据库
– 需要PDB级别服务管理的系统
– 需要服务创建的系统
– 需要服务监控的系统
– 需要提高可用性的系统
# 不适用场景
– 单租户数据库
– PDB服务管理需求简单的系统
– 低管理需求系统
2.2 PDB服务管理设计
Oracle数据库PDB服务管理设计建议:
– 基于业务需求设计
– 基于资源需求设计
– 最小化服务开销
– 最大化系统可用性
– 合理配置参数
# PDB服务管理设计策略
– 合理规划PDB服务管理架构
– 配置适当的服务创建
– 配置适当的服务修改
– 配置适当的服务监控
– 配置适当的服务调优
# 设计步骤
1. 分析业务需求
2. 评估系统资源
3. 设计PDB服务管理方案
4. 规划PDB服务管理架构
5. 测试PDB服务管理效果
6. 调整配置
2.3 PDB服务管理最佳实践
Oracle数据库PDB服务管理最佳实践:
- 规划PDB服务管理架构:根据业务需求规划PDB服务管理架构,最小化服务开销
- 配置服务创建:为PDB配置合理的服务创建
- 监控服务运行:监控PDB服务运行,及时发现和处理问题
- 定期调优:定期调优PDB服务,确保系统性能
- 设置服务告警:设置服务告警,及时发现服务问题
- 定期review:定期review服务配置,优化管理策略
Part03-生产环境项目实施方案
3.1 PDB服务管理实施
3.1.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 READ WRITE
5 APP_ROOT READ WRITE
6 APP_PDB1 READ WRITE
# 切换到CDB
SQL> ALTER SESSION SET CONTAINER = cdb$root;
Session altered.
# 查看PDB服务
SQL> SELECT service_id, name, network_name, pdb, con_id, creation_date
FROM dba_services
ORDER BY con_id, name;
SERVICE_ID NAME NETWORK_NAME PDB CON_ID CREATION_DATE
———- —————– —————– ———— —— —————–
1 SYS$USERS sys$users CDB$ROOT 1 31-MAR-26
2 orclcdb orclcdb CDB$ROOT 1 31-MAR-26
3 orclcdbXDB orclcdbXDB CDB$ROOT 1 31-MAR-26
4 fgfgfgsalespdb fgfgfgsalespdb SALESPDB 3 31-MAR-26
5 fgfgfgsalespdb_ro fgfgfgsalespdb_ro SALESPDB 3 31-MAR-26
6 hrpdb hrpdb HRPDB 4 31-MAR-26
7 hrpdb_ro hrpdb_ro HRPDB 4 31-MAR-26
# 验证PDB服务查看成功
3.1.2 创建PDB服务
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;
Session altered.
# 创建PDB服务
SQL> BEGIN
DBMS_SERVICE.CREATE_SERVICE(
service_name => ‘SALES_APP’,
network_name => ‘SALES_APP’
);
END;
/
PL/SQL procedure successfully completed.
# 启动PDB服务
SQL> BEGIN
DBMS_SERVICE.START_SERVICE(
service_name => ‘SALES_APP’
);
END;
/
PL/SQL procedure successfully completed.
# 验证PDB服务创建成功
3.2 PDB服务管理配置
3.2.1 配置服务属性
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;
Session altered.
# 配置服务属性
SQL> BEGIN
DBMS_SERVICE.MODIFY_SERVICE(
service_name => ‘SALES_APP’,
goal => DBMS_SERVICE.GOAL_SERVICE_TIME,
clb_goal => DBMS_SERVICE.CLB_GOAL_SERVICE_TIME,
taf_policy => DBMS_SERVICE.TAF_POLICY_BASIC
);
END;
/
PL/SQL procedure successfully completed.
# 查看服务属性
SQL> SELECT name, goal, clb_goal, taf_policy
FROM dba_services
WHERE name = ‘SALES_APP’
AND con_id = 3;
NAME GOAL CLB_GOAL TAF_POLICY
————- ————– ————– —————-
SALES_APP SERVICE_TIME SERVICE_TIME BASIC
# 验证服务属性配置成功
3.2.2 配置服务监控
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;
Session altered.
# 查看服务状态
SQL> SELECT name, status, failover_method, failover_type, failover_retries, failover_delay
FROM dba_services
WHERE name = ‘SALES_APP’
AND con_id = 3;
NAME STATUS FAILOVER_METHOD FAILOVER_TYPE FAILOVER_RETRIES FAILOVER_DELAY
————- ——– ————— ————- —————– ————–
SALES_APP ACTIVE NONE NONE 0 0
# 查看服务连接
SQL> SELECT service_name, count(*) connection_count
FROM v$session
WHERE service_name = ‘SALES_APP’
AND con_id = 3
GROUP BY service_name;
SERVICE_NAME CONNECTION_COUNT
————- —————-
SALES_APP 5
# 验证服务监控配置成功
3.3 PDB服务管理验证
3.3.1 验证服务创建
SQL> ALTER SESSION SET CONTAINER = cdb$root;
Session altered.
# 查看PDB服务
SQL> SELECT service_id, name, network_name, pdb, con_id, creation_date
FROM dba_services
WHERE name = ‘SALES_APP’
ORDER BY con_id, name;
SERVICE_ID NAME NETWORK_NAME PDB CON_ID CREATION_DATE
———- ———— ———— ———— —— —————-
8 SALES_APP SALES_APP SALESPDB 3 31-MAR-26
# 测试服务连接
SQL> CONNECT sys/oracle@SALES_APP AS SYSDBA;
Connected.
SQL> SHOW CON_NAME
CON_NAME
——————————
SALESPDB
# 验证服务创建成功
3.3.2 验证服务监控
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;
Session altered.
# 查看服务状态
SQL> SELECT name, status, failover_method, failover_type, failover_retries, failover_delay
FROM dba_services
WHERE name = ‘SALES_APP’
AND con_id = 3;
NAME STATUS FAILOVER_METHOD FAILOVER_TYPE FAILOVER_RETRIES FAILOVER_DELAY
————- ——– ————— ————- —————– ————–
SALES_APP ACTIVE NONE NONE 0 0
# 查看服务性能
SQL> SELECT service_name, count(*) session_count,
SUM(physical_reads) physical_reads,
SUM(logical_reads) logical_reads
FROM v$sessstat s, v$session se, v$statname n
WHERE s.statistic# = n.statistic#
AND s.sid = se.sid
AND n.name IN (‘physical reads’, ‘logical reads’)
AND se.service_name = ‘SALES_APP’
AND se.con_id = 3
GROUP BY service_name;
SERVICE_NAME SESSION_COUNT PHYSICAL_READS LOGICAL_READS
————- ————- ————– ————-
SALES_APP 5 500 5000
# 验证服务监控成功
Part04-生产案例与实战讲解
4.1 PDB服务管理案例
在某企业的生产环境中,需要配置PDB服务管理。
– 数据库版本:Oracle 19c
– 系统规模:中等规模,日交易量100万
– 需求:配置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 READ WRITE
5 APP_ROOT READ WRITE
6 APP_PDB1 READ WRITE
2. 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;
Session altered.
3. 创建PDB服务
SQL> BEGIN
DBMS_SERVICE.CREATE_SERVICE(
service_name => ‘SALES_APP’,
network_name => ‘SALES_APP’
);
END;
/
PL/SQL procedure successfully completed.
4. 启动PDB服务
SQL> BEGIN
DBMS_SERVICE.START_SERVICE(
service_name => ‘SALES_APP’
);
END;
/
PL/SQL procedure successfully completed.
5. 验证服务配置
SQL> SELECT name, status
FROM dba_services
WHERE name = ‘SALES_APP’
AND con_id = 3;
NAME STATUS
————- ——–
SALES_APP ACTIVE
# 实施效果
– 成功配置PDB服务管理
– 服务创建正常
– 服务启动正常
– 服务监控正常
– 系统可用性提高
4.2 PDB服务管理优化案例
在某金融机构的生产环境中,需要优化PDB服务管理,提高服务性能。
– 数据库版本:Oracle 19c
– 系统规模:大规模,日交易量1000万
– 问题:PDB服务管理需要优化
# 优化方案
1. 查看服务配置
SQL> SELECT name, goal, clb_goal, taf_policy
FROM dba_services
WHERE name = ‘SALES_APP’
AND con_id = 3;
NAME GOAL CLB_GOAL TAF_POLICY
————- ————– ————– —————-
SALES_APP SERVICE_TIME SERVICE_TIME BASIC
2. 优化服务配置
SQL> BEGIN
DBMS_SERVICE.MODIFY_SERVICE(
service_name => ‘SALES_APP’,
goal => DBMS_SERVICE.GOAL_THROUGHPUT,
clb_goal => DBMS_SERVICE.CLB_GOAL_LONG,
taf_policy => DBMS_SERVICE.TAF_POLICY_NONE
);
END;
/
PL/SQL procedure successfully completed.
3. 配置服务负载均衡
SQL> BEGIN
DBMS_SERVICE.MODIFY_SERVICE(
service_name => ‘SALES_APP’,
clb_goal => DBMS_SERVICE.CLB_GOAL_SHORT
);
END;
/
PL/SQL procedure successfully completed.
4. 验证优化效果
SQL> SELECT name, goal, clb_goal, taf_policy
FROM dba_services
WHERE name = ‘SALES_APP’
AND con_id = 3;
NAME GOAL CLB_GOAL TAF_POLICY
————- ————– ————– —————-
SALES_APP THROUGHPUT SHORT NONE
# 优化效果
– 服务配置优化
– 服务负载均衡优化
– 服务性能提高
– 系统性能提高
4.3 PDB服务管理问题处理
在某电商网站的生产环境中,PDB服务管理出现问题,需要处理。
– PDB服务启动失败
– 服务连接失败
– 服务性能下降
# 分析步骤
1. 查看服务状态
SQL> SELECT name, status
FROM dba_services
WHERE name = ‘SALES_APP’
AND con_id = 3;
NAME STATUS
————- ——–
SALES_APP UNKNOWN
2. 尝试启动服务
SQL> BEGIN
DBMS_SERVICE.START_SERVICE(
service_name => ‘SALES_APP’
);
END;
/
BEGIN
*
ERROR at line 1:
ORA-44303: service SALES_APP does not exist
3. 查看服务配置
SQL> SELECT name, network_name, pdb
FROM dba_services
WHERE name = ‘SALES_APP’
AND con_id = 3;
no rows selected
# 问题原因
– 服务不存在
– 服务配置错误
– 服务权限问题
# 解决方案
1. 创建服务
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;
Session altered.
SQL> BEGIN
DBMS_SERVICE.CREATE_SERVICE(
service_name => ‘SALES_APP’,
network_name => ‘SALES_APP’
);
END;
/
PL/SQL procedure successfully completed.
2. 启动服务
SQL> BEGIN
DBMS_SERVICE.START_SERVICE(
service_name => ‘SALES_APP’
);
END;
/
PL/SQL procedure successfully completed.
3. 验证解决效果
SQL> SELECT name, status
FROM dba_services
WHERE name = ‘SALES_APP’
AND con_id = 3;
NAME STATUS
————- ——–
SALES_APP ACTIVE
# 解决效果
– 服务创建成功
– 服务启动成功
– 服务连接正常
– 系统性能恢复
Part05-风哥经验总结与分享
5.1 PDB服务管理经验
Oracle数据库PDB服务管理经验:
- 规划PDB服务管理架构:根据业务需求规划PDB服务管理架构,最小化服务开销
- 配置服务创建:为PDB配置合理的服务创建
- 监控服务运行:监控PDB服务运行,及时发现和处理问题
- 定期调优:定期调优PDB服务,确保系统性能
- 设置服务告警:设置服务告警,及时发现服务问题
- 定期review:定期review服务配置,优化管理策略
5.2 PDB服务管理检查清单
– [ ] 检查系统资源
– [ ] 检查PDB架构
– [ ] 检查服务需求
– [ ] 检查服务配置
– [ ] 检查服务创建
– [ ] 检查服务监控
– [ ] 规划PDB服务管理架构
– [ ] 配置服务创建
– [ ] 配置服务修改
– [ ] 验证服务功能
# PDB服务管理问题处理流程
1. 检查系统资源
2. 检查PDB架构
3. 检查服务需求
4. 规划PDB服务管理架构
5. 配置服务创建
6. 配置服务修改
7. 验证服务功能
8. 处理服务问题
9. 优化配置
10. 监控服务使用情况
5.3 PDB服务管理工具
Oracle数据库PDB服务管理常用工具:
- SQL*Plus:SQL命令行工具,用于执行SQL命令
- Oracle Enterprise Manager:图形化管理工具,用于监控和管理数据库
- SQL Developer:SQL开发工具,用于开发和调试SQL
- DBMS_SERVICE:PL/SQL包,用于管理服务
- dba_services:服务视图,用于查看服务信息
- v$session:会话视图,用于查看会话信息
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
