1. 首页 > Oracle教程 > 正文

Oracle教程FG383-PDB服务管理

本文档风哥主要介绍Oracle数据库PDB服务管理相关知识,包括PDB服务管理的概念、方法、要求、规划、配置、验证等内容,由风哥教程参考Oracle官方文档Multitenant内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 PDB服务管理的概念

Oracle数据库PDB服务管理是指在多租户容器数据库(CDB)中对PDB级别的服务进行配置和管理,包括服务创建、服务修改、服务删除、服务监控等。PDB服务管理可以实现PDB级别的服务管理,提高系统可用性。PDB服务管理包括服务创建、服务修改、服务删除、服务监控、服务调优等组件。更多视频教程www.fgedu.net.cn

PDB服务管理的特点:

  • 支持PDB级别的服务管理
  • 支持服务创建
  • 支持服务修改
  • 支持服务监控
  • 提高系统可用性

1.2 PDB服务管理的方法

Oracle数据库PDB服务管理的方法:

  • 服务创建:创建PDB服务
  • 服务修改:修改PDB服务
  • 服务删除:删除PDB服务
  • 服务监控:监控PDB服务
  • 服务调优:调优PDB服务

1.3 PDB服务管理的要求

Oracle数据库PDB服务管理的要求:

  • PDB架构:必须在PDB架构中管理服务
  • 系统资源:足够的CPU、内存和磁盘空间
  • 权限:需要PDB的SYSDBA权限
  • 兼容性:Oracle数据库版本必须支持PDB服务管理
  • 配置:需要配置适当的参数和选项
风哥提示:PDB服务管理是Oracle数据库多租户架构的核心功能,通过PDB服务管理,可以实现PDB级别的服务管理,提高系统可用性。

Part02-生产环境规划与建议

2.1 PDB服务管理规划

Oracle数据库PDB服务管理规划要点:

# PDB服务管理规划步骤
1. 分析业务需求
2. 评估系统资源
3. 设计PDB服务管理方案
4. 规划PDB服务管理架构
5. 规划服务创建策略
6. 规划服务监控策略
7. 测试和验证

# 适用场景
– 多租户数据库
– 需要PDB级别服务管理的系统
– 需要服务创建的系统
– 需要服务监控的系统
– 需要提高可用性的系统

# 不适用场景
– 单租户数据库
– PDB服务管理需求简单的系统
– 低管理需求系统

2.2 PDB服务管理设计

Oracle数据库PDB服务管理设计建议:

# PDB服务管理设计原则
– 基于业务需求设计
– 基于资源需求设计
– 最小化服务开销
– 最大化系统可用性
– 合理配置参数

# PDB服务管理设计策略
– 合理规划PDB服务管理架构
– 配置适当的服务创建
– 配置适当的服务修改
– 配置适当的服务监控
– 配置适当的服务调优

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

2.3 PDB服务管理最佳实践

Oracle数据库PDB服务管理最佳实践:

  • 规划PDB服务管理架构:根据业务需求规划PDB服务管理架构,最小化服务开销
  • 配置服务创建:为PDB配置合理的服务创建
  • 监控服务运行:监控PDB服务运行,及时发现和处理问题
  • 定期调优:定期调优PDB服务,确保系统性能
  • 设置服务告警:设置服务告警,及时发现服务问题
  • 定期review:定期review服务配置,优化管理策略
生产环境建议:PDB服务管理规划应基于业务需求和系统资源,规划PDB服务管理架构,配置服务创建,监控服务运行,定期调优,设置服务告警,定期review,确保系统可用性。学习交流加群风哥微信: itpux-com

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

3.1 PDB服务管理实施

3.1.1 查看PDB服务

# 查看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服务

# 切换到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 配置服务属性

# 切换到PDB
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 配置服务监控

# 切换到PDB
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 验证服务创建

# 切换到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
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 验证服务监控

# 切换到PDB
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

# 验证服务监控成功

风哥提示:验证PDB服务管理是否成功,需要检查服务创建、服务修改、服务删除、服务监控等,确保数据库运行正常。学习交流加群风哥QQ113257174

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

# 解决效果
– 服务创建成功
– 服务启动成功
– 服务连接正常
– 系统性能恢复

生产环境建议:配置PDB服务管理前,需要分析业务需求和系统资源,确保服务配置合理。更多学习教程公众号风哥教程itpux_com

Part05-风哥经验总结与分享

5.1 PDB服务管理经验

Oracle数据库PDB服务管理经验:

  • 规划PDB服务管理架构:根据业务需求规划PDB服务管理架构,最小化服务开销
  • 配置服务创建:为PDB配置合理的服务创建
  • 监控服务运行:监控PDB服务运行,及时发现和处理问题
  • 定期调优:定期调优PDB服务,确保系统性能
  • 设置服务告警:设置服务告警,及时发现服务问题
  • 定期review:定期review服务配置,优化管理策略
风哥提示:PDB服务管理是Oracle数据库多租户架构的核心功能,通过规划PDB服务管理架构,配置服务创建,监控服务运行,定期调优,设置服务告警,定期review,可以显著提高系统可用性和数据库管理效率。from oracle:www.itpux.com

5.2 PDB服务管理检查清单

# 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:会话视图,用于查看会话信息
持续改进:PDB服务管理是一个持续的过程,需要定期review和优化。建议建立PDB服务管理的规范和流程,不断改进系统可用性和数据库管理效率。

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

联系我们

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

微信号:itpux-com

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