1. 首页 > Oracle教程 > 正文

Oracle教程FG387-PDB补丁

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

Part01-基础概念与理论知识

1.1 PDB补丁的概念

Oracle数据库PDB补丁是指在多租户容器数据库(CDB)中对PDB进行补丁管理,包括PDB补丁、PDB补丁集、PDB补丁验证等。PDB补丁可以实现PDB级别的补丁管理,提高系统安全性和稳定性。PDB补丁包括PDB补丁、PDB补丁集、PDB补丁验证、PDB补丁回退、PDB补丁监控等组件。更多视频教程www.fgedu.net.cn

PDB补丁的特点:

  • 支持PDB级别的补丁管理
  • 支持PDB补丁
  • 支持PDB补丁集
  • 支持PDB补丁验证
  • 提高系统安全性和稳定性

1.2 PDB补丁的方法

Oracle数据库PDB补丁的方法:

  • PDB补丁:应用PDB补丁
  • PDB补丁集:应用PDB补丁集
  • PDB补丁验证:验证PDB补丁
  • PDB补丁回退:回退PDB补丁
  • PDB补丁监控:监控PDB补丁

1.3 PDB补丁的要求

Oracle数据库PDB补丁的要求:

  • PDB架构:必须在PDB架构中进行补丁
  • 系统资源:足够的CPU、内存和磁盘空间
  • 权限:需要PDB的SYSDBA权限
  • 兼容性:Oracle数据库版本必须支持PDB补丁
  • 备份:必须备份PDB数据
风哥提示:PDB补丁是Oracle数据库多租户架构的核心功能,通过PDB补丁,可以实现PDB级别的补丁管理,提高系统安全性和稳定性。

Part02-生产环境规划与建议

2.1 PDB补丁规划

Oracle数据库PDB补丁规划要点:

# PDB补丁规划步骤
1. 分析业务需求
2. 评估系统资源
3. 设计PDB补丁方案
4. 规划PDB补丁架构
5. 规划PDB补丁策略
6. 规划PDB回退策略
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补丁兼容性
  • 测试补丁:在测试环境测试补丁过程
  • 验证补丁:补丁后验证PDB功能
  • 准备回退:准备补丁回退方案
生产环境建议:PDB补丁规划应基于业务需求和系统资源,规划PDB补丁架构,备份PDB数据,检查补丁兼容性,测试补丁,验证补丁,准备回退,确保系统稳定性。学习交流加群风哥微信: 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.

# 查看补丁历史
SQL> SELECT con_id, name, action, action_time, description
FROM dba_registry_history
ORDER BY action_time DESC;

CON_ID NAME ACTION ACTION_TIME DESCRIPTION
—— ——— ———– —————– ——————————
1 CDB$ROOT APPLY 31-MAR-26 10:00 Patch Set Update 19.24.0.0.0
1 CDB$ROOT APPLY 01-JAN-26 10:00 Patch Set Update 19.23.0.0.0

# 查看PDB补丁状态
SQL> SELECT con_id, name, status, version
FROM dba_pdbs
ORDER BY con_id;

CON_ID NAME STATUS VERSION
—— ——— ———- ———-
2 PDB$SEED NORMAL 19.0.0.0.0
3 SALESPDB NORMAL 19.0.0.0.0
4 HRPDB NORMAL 19.0.0.0.0
5 APP_ROOT NORMAL 19.0.0.0.0
6 APP_PDB1 NORMAL 19.0.0.0.0

# 验证PDB补丁状态查看成功

3.1.2 备份PDB数据

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

Session altered.

# 查看PDB表空间
SQL> SELECT tablespace_name, status, contents
FROM dba_tablespaces
ORDER BY tablespace_name;

TABLESPACE_NAME STATUS CONTENTS
—————————— ——— ———
SYSTEM ONLINE PERMANENT
SYSAUX ONLINE PERMANENT
UNDOTBS1 ONLINE UNDO
TEMP ONLINE TEMPORARY
USERS ONLINE PERMANENT

# 备份PDB
SQL> ALTER PLUGGABLE DATABASE fgfgfgsalespdb CLOSE IMMEDIATE;

Pluggable database altered.

SQL> ALTER PLUGGABLE DATABASE fgfgfgsalespdb OPEN READ ONLY;

Pluggable database altered.

# 使用RMAN备份PDB
$ rman target /

Recovery Manager: Release 19.0.0.0.0 – Production on Mon Mar 31 10:00:00 2026
Version 19.24.0.0.0

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

connected to target database: ORCLCDB (DBID=1234567890)

RMAN> BACKUP PLUGGABLE DATABASE fgfgfgsalespdb;

Starting backup at 31-MAR-26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=123 instance=orclcdb device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00006 name=/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb/system01.dbf
input datafile file number=00007 name=/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb/sysaux01.dbf
input datafile file number=00008 name=/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb/undotbs01.dbf
input datafile file number=00009 name=/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb/users01.dbf
channel ORA_DISK_1: starting piece 1 at 31-MAR-26
channel ORA_DISK_1: finished piece 1 at 31-MAR-26
piece handle=/oracle/app/oracle/backup/fgfgfgsalespdb_20260331_01.bak tag=TAG20260331T100000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:10:00
Finished backup at 31-MAR-26

RMAN> EXIT

# 验证PDB备份成功

3.2 PDB补丁配置

3.2.1 下载补丁

# 下载补丁
$ cd /oracle/app/oracle/patches

$ wget https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=12345678

# 解压补丁
$ unzip p12345678_190000_Linux-x86-64.zip

# 查看补丁信息
$ cd 12345678

$ cat README.txt

Patch Description: Patch Set Update 19.24.0.0.0
Patch Release Date: 01-MAR-2026
Patch Type: PSU
Patch Size: 500MB

# 验证补丁下载成功

3.2.2 应用补丁

# 停止数据库
$ sqlplus / as sysdba

SQL> SHUTDOWN IMMEDIATE;

Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> EXIT

# 应用补丁
$ cd /oracle/app/oracle/patches/12345678

$ ./opatch apply

Oracle Interim Patch Installer version 19.24.0.0.0
Copyright (c) 2024, Oracle Corporation. All rights reserved.

Oracle Home : /oracle/app/oracle/product/19c
Central Inventory : /oracle/app/oraInventory
from : /oracle/app/oracle/product/19c/oraInst.loc
OPatch version : 19.24.0.0.0
OUI version : 19.24.0.0.0
Log file location : /oracle/app/oracle/cfgtoollogs/opatch/opatch2026-03-31_10-00-00AM_1.log

Verifying environment and performing prerequisite checks…
OPatch continues with these patches: 12345678

Do you want to proceed? [y|n]
y

User Responded with: Y

All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = ‘/oracle/app/oracle/product/19c’)

Are you ready to proceed? [y|n]
y

User Responded with: Y

Patching component oracle.rdbms, 19.0.0.0.0…
Patching component oracle.rdbms.rsf, 19.0.0.0.0…
Patching component oracle.rdbms.dbscripts, 19.0.0.0.0…

Patch 12345678 successfully applied.

Log file location: /oracle/app/oracle/cfgtoollogs/opatch/opatch2026-03-31_10-00-00AM_1.log

OPatch succeeded.

# 启动数据库
$ sqlplus / as sysdba

SQL> STARTUP;

ORACLE instance started.

Total System Global Area 8388608000 bytes
Fixed Size 9147264 bytes
Variable Size 2147483648 bytes
Database Buffers 6227702528 bytes
Redo Buffers 4277536 bytes
Database mounted.
Database opened.

SQL> ALTER PLUGGABLE DATABASE ALL OPEN;

Pluggable database altered.

# 验证补丁应用成功

3.3 PDB补丁验证

3.3.1 验证补丁状态

# 切换到CDB
SQL> ALTER SESSION SET CONTAINER = cdb$root;

Session altered.

# 查看补丁历史
SQL> SELECT con_id, name, action, action_time, description
FROM dba_registry_history
ORDER BY action_time DESC;

CON_ID NAME ACTION ACTION_TIME DESCRIPTION
—— ——— ———– —————– ——————————
1 CDB$ROOT APPLY 31-MAR-26 10:00 Patch Set Update 19.24.0.0.0
1 CDB$ROOT APPLY 01-JAN-26 10:00 Patch Set Update 19.23.0.0.0

# 查看补丁版本
SQL> SELECT * FROM dba_registry_sqlpatch;

PATCH_ID PATCH_UID PATCH_TYPE ACTION_TIME ACTION DESCRIPTION
————— ————— ————— —————– ———– ——————————
12345678 12345678 PSU 31-MAR-26 10:00 APPLY Patch Set Update 19.24.0.0.0

# 验证补丁状态成功

3.3.2 验证PDB功能

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

Session altered.

# 测试PDB功能
SQL> SELECT COUNT(*) FROM fgfgfgsales.orders;

COUNT(*)
———-
1000000

SQL> SELECT * FROM fgfgfgsales.orders WHERE order_id = 1;

ORDER_ID ORDER_DATE CUSTOMER_ID TOTAL_AMOUNT
——— ———- ———— ————
1 31-MAR-26 1 1000.00

# 测试PDB性能
SQL> SET TIMING ON

SQL> SELECT COUNT(*) FROM fgfgfgsales.orders;

COUNT(*)
———-
1000000

Elapsed: 00:00:01.50

# 验证PDB功能成功

风哥提示:验证PDB补丁是否成功,需要检查补丁状态、补丁版本、PDB功能、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 PLUGGABLE DATABASE fgfgfgsalespdb CLOSE IMMEDIATE;

Pluggable database altered.

SQL> ALTER PLUGGABLE DATABASE fgfgfgsalespdb OPEN READ ONLY;

Pluggable database altered.

$ rman target /

RMAN> BACKUP PLUGGABLE DATABASE fgfgfgsalespdb;

Starting backup at 31-MAR-26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=123 instance=orclcdb device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00006 name=/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb/system01.dbf
input datafile file number=00007 name=/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb/sysaux01.dbf
input datafile file number=00008 name=/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb/undotbs01.dbf
input datafile file number=00009 name=/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb/users01.dbf
channel ORA_DISK_1: starting piece 1 at 31-MAR-26
channel ORA_DISK_1: finished piece 1 at 31-MAR-26
piece handle=/oracle/app/oracle/backup/fgfgfgsalespdb_20260331_01.bak tag=TAG20260331T100000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:10:00
Finished backup at 31-MAR-26

3. 应用补丁
$ sqlplus / as sysdba

SQL> SHUTDOWN IMMEDIATE;

Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> EXIT

$ cd /oracle/app/oracle/patches/12345678

$ ./opatch apply

Oracle Interim Patch Installer version 19.24.0.0.0
Copyright (c) 2024, Oracle Corporation. All rights reserved.

Oracle Home : /oracle/app/oracle/product/19c
Central Inventory : /oracle/app/oraInventory
from : /oracle/app/oracle/product/19c/oraInst.loc
OPatch version : 19.24.0.0.0
OUI version : 19.24.0.0.0
Log file location : /oracle/app/oracle/cfgtoollogs/opatch/opatch2026-03-31_10-00-00AM_1.log

Verifying environment and performing prerequisite checks…
OPatch continues with these patches: 12345678

Do you want to proceed? [y|n]
y

User Responded with: Y

All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = ‘/oracle/app/oracle/product/19c’)

Are you ready to proceed? [y|n]
y

User Responded with: Y

Patching component oracle.rdbms, 19.0.0.0.0…
Patching component oracle.rdbms.rsf, 19.0.0.0.0…
Patching component oracle.rdbms.dbscripts, 19.0.0.0.0…

Patch 12345678 successfully applied.

Log file location: /oracle/app/oracle/cfgtoollogs/opatch/opatch2026-03-31_10-00-00AM_1.log

OPatch succeeded.

4. 启动数据库
$ sqlplus / as sysdba

SQL> STARTUP;

ORACLE instance started.

Total System Global Area 8388608000 bytes
Fixed Size 9147264 bytes
Variable Size 2147483648 bytes
Database Buffers 6227702528 bytes
Redo Buffers 4277536 bytes
Database mounted.
Database opened.

SQL> ALTER PLUGGABLE DATABASE ALL OPEN;

Pluggable database altered.

5. 验证补丁
SQL> SELECT * FROM dba_registry_sqlpatch;

PATCH_ID PATCH_UID PATCH_TYPE ACTION_TIME ACTION DESCRIPTION
————— ————— ————— —————– ———– ——————————
12345678 12345678 PSU 31-MAR-26 10:00 APPLY Patch Set Update 19.24.0.0.0

# 实施效果
– 成功应用PDB补丁
– PDB备份正常
– 补丁应用正常
– PDB功能正常
– 系统安全性提高

4.2 PDB补丁优化案例

在某金融机构的生产环境中,需要优化PDB补丁,提高补丁效率。

# 案例背景
– 数据库版本:Oracle 19c
– 系统规模:大规模,日交易量1000万
– 问题:PDB补丁需要优化

# 优化方案
1. 查看补丁配置
SQL> SELECT * FROM dba_registry_sqlpatch;

PATCH_ID PATCH_UID PATCH_TYPE ACTION_TIME ACTION DESCRIPTION
————— ————— ————— —————– ———– ——————————
12345678 12345678 PSU 31-MAR-26 10:00 APPLY Patch Set Update 19.24.0.0.0

2. 优化补丁配置
SQL> ALTER SYSTEM SET job_queue_processes = 100 SCOPE = BOTH;

System altered.

SQL> ALTER SYSTEM SET parallel_max_servers = 16 SCOPE = BOTH;

System altered.

SQL> ALTER SYSTEM SET db_block_checksum = TRUE SCOPE = BOTH;

System altered.

3. 执行优化补丁
$ sqlplus / as sysdba

SQL> SHUTDOWN IMMEDIATE;

Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> EXIT

$ cd /oracle/app/oracle/patches/12345678

$ ./opatch apply -silent

Oracle Interim Patch Installer version 19.24.0.0.0
Copyright (c) 2024, Oracle Corporation. All rights reserved.

Oracle Home : /oracle/app/oracle/product/19c
Central Inventory : /oracle/app/oraInventory
from : /oracle/app/oracle/product/19c/oraInst.loc
OPatch version : 19.24.0.0.0
OUI version : 19.24.0.0.0
Log file location : /oracle/app/oracle/cfgtoollogs/opatch/opatch2026-03-31_10-00-00AM_1.log

Verifying environment and performing prerequisite checks…
OPatch continues with these patches: 12345678

All checks passed.

Patching component oracle.rdbms, 19.0.0.0.0…
Patching component oracle.rdbms.rsf, 19.0.0.0.0…
Patching component oracle.rdbms.dbscripts, 19.0.0.0.0…

Patch 12345678 successfully applied.

Log file location: /oracle/app/oracle/cfgtoollogs/opatch/opatch2026-03-31_10-00-00AM_1.log

OPatch succeeded.

4. 验证优化效果
SQL> SELECT * FROM dba_registry_sqlpatch;

PATCH_ID PATCH_UID PATCH_TYPE ACTION_TIME ACTION DESCRIPTION
————— ————— ————— —————– ———– ——————————
12345678 12345678 PSU 31-MAR-26 10:00 APPLY Patch Set Update 19.24.0.0.0

# 优化效果
– 补丁配置优化
– 补丁参数优化
– 补丁效率提高
– 系统安全性提高

4.3 PDB补丁问题处理

在某电商网站的生产环境中,PDB补丁出现问题,需要处理。

# 问题现象
– PDB补丁失败
– PDB无法打开
– PDB功能异常

# 分析步骤
1. 查看PDB状态
SQL> SELECT name, open_mode, status, restricted
FROM v$pdbs
WHERE name = ‘SALESPDB’;

NAME OPEN_MODE STATUS RESTRICTED
——— ———- ——— ———-
SALESPDB MOUNTED MOUNTED NO

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

ALTER PLUGGABLE DATABASE fgfgfgsalespdb OPEN
*
ERROR at line 1:
ORA-04020: deadlock detected while trying to lock dictionary objects

3. 查看错误日志
$ tail -50 /oracle/app/oracle/diag/rdbms/orclcdb/orclcdb/trace/alert_orclcdb.log

Errors in file /oracle/app/oracle/diag/rdbms/orclcdb/orclcdb/trace/alert_orclcdb.log:
ORA-04020: deadlock detected while trying to lock dictionary objects

# 问题原因
– PDB补丁失败
– 字典对象锁定
– 补丁参数错误

# 解决方案
1. 关闭PDB
SQL> ALTER PLUGGABLE DATABASE fgfgfgsalespdb CLOSE IMMEDIATE;

Pluggable database altered.

2. 清理PDB
SQL> ALTER PLUGGABLE DATABASE fgfgfgsalespdb UNPLUG INTO ‘/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb.xml’;

Pluggable database altered.

3. 重新插入PDB
SQL> CREATE PLUGGABLE DATABASE fgfgfgsalespdb USING ‘/oracle/app/oracle/oradata/orclcdb/fgfgfgsalespdb.xml’;

Pluggable database created.

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

Pluggable database altered.

5. 验证解决效果
SQL> SELECT name, open_mode, status
FROM v$pdbs
WHERE name = ‘SALESPDB’;

NAME OPEN_MODE STATUS
——— ———- ———
SALESPDB READ WRITE NORMAL

# 解决效果
– PDB补丁成功
– 字典对象锁定解决
– PDB打开成功
– 系统安全性恢复

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

Part05-风哥经验总结与分享

5.1 PDB补丁经验

Oracle数据库PDB补丁经验:

  • 规划PDB补丁架构:根据业务需求规划PDB补丁架构,最小化补丁开销
  • 备份PDB数据:补丁前必须备份PDB数据
  • 检查补丁兼容性:补丁前检查PDB补丁兼容性
  • 测试补丁:在测试环境测试补丁过程
  • 验证补丁:补丁后验证PDB功能
  • 准备回退:准备补丁回退方案
风哥提示:PDB补丁是Oracle数据库多租户架构的核心功能,通过规划PDB补丁架构,备份PDB数据,检查补丁兼容性,测试补丁,验证补丁,准备回退,可以显著提高系统安全性和数据库管理效率。from oracle:www.itpux.com

5.2 PDB补丁检查清单

# PDB补丁检查清单
– [ ] 检查系统资源
– [ ] 检查PDB架构
– [ ] 检查补丁需求
– [ ] 检查补丁配置
– [ ] 检查备份状态
– [ ] 检查补丁兼容性
– [ ] 规划PDB补丁架构
– [ ] 备份PDB数据
– [ ] 检查补丁兼容性
– [ ] 验证补丁功能

# PDB补丁问题处理流程
1. 检查系统资源
2. 检查PDB架构
3. 检查补丁需求
4. 规划PDB补丁架构
5. 备份PDB数据
6. 检查补丁兼容性
7. 验证补丁功能
8. 处理补丁问题
9. 优化配置
10. 监控补丁使用情况

5.3 PDB补丁工具

Oracle数据库PDB补丁常用工具:

  • SQL*Plus:SQL命令行工具,用于执行SQL命令
  • Oracle Enterprise Manager:图形化管理工具,用于监控和管理数据库
  • SQL Developer:SQL开发工具,用于开发和调试SQL
  • OPatch:Oracle补丁工具,用于应用补丁
  • RMAN:恢复管理器,用于备份和恢复数据库
  • Data Pump:数据泵,用于数据导入导出
持续改进:PDB补丁是一个持续的过程,需要定期review和优化。建议建立PDB补丁的规范和流程,不断改进系统安全性和数据库管理效率。

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

联系我们

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

微信号:itpux-com

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