DBAtlas · 数据库运维图谱

二进制补丁后使用 datapatch -verbose 更新 SQL 层

Oracle补丁与生命周期

命令

# 1) After the binary patch (opatch apply), start the DB; all PDBs must be open:
sqlplus / as sysdba <<EOF
STARTUP;
ALTER PLUGGABLE DATABASE ALL OPEN;
EXIT;
EOF

# 2) Check only first, then apply:
cd $ORACLE_HOME/OPatch
./datapatch -prereq
./datapatch -verbose
# For specific PDBs: ./datapatch -verbose -pdbs PDB1,PDB2

# 3) Recompile invalid objects:
sqlplus / as sysdba @?/rdbms/admin/utlrp.sql

# Logs: $ORACLE_BASE/cfgtoollogs/sqlpatch/

作用

datapatch 将 Oracle Home 中二进制补丁的 SQL/PL-SQL 组件(数据字典、程序包)应用到 CDB root、PDB$SEED 和所有已打开的 PDB,并将结果记录在 DBA_REGISTRY_SQLPATCH 中。它也会回退已回滚补丁的 SQL 部分。

适用场景

每次 RU/RUR/one-off 二进制补丁或回滚之后;对于迁移到或 unplug/plug 到新打补丁 home 的 PDB;以及当 DBA_REGISTRY_SQLPATCH 显示 WITH ERRORS 时重新运行。

注意

已关闭或 MOUNTED 的 PDB 不会被打补丁,并可能以 RESTRICTED 模式打开;请先打开所有 PDB。不要在高负载下运行(数据字典锁、程序包失效)。在 RAC 上只需从一个节点运行一次。使用 Data Guard 时只在主库上运行 datapatch;变更通过 redo 传到备库(先为备库二进制文件打补丁)。

在 DBAtlas 中打开 →

相关内容