Oracle Database 12c(12.1)引入了多租户特性,数据库实现了容器化,多租户架构下实现可插拔。一个CDB中可以有0个或多个PDB。在同一个CDB中所有PDB共享一个UNDO表空间。 在Oracle Database 19c中,对UNDO的管理有一个重要增强是支持 Local Undo,允许每个PDB独立管理自己的UNDO表空间。此特性增强了多租户环境中的性能、隔离性和可管理性。

Oracle 12.1 中 UNDO是共享模式

Oracle 19c中支持共享UNDO和Local Undo
Lolcal UNDO的优点:
为什么在19c中建议使用Local Undo?
本地撤销模式是使用hot cloning, PDB relocation, and PDB proxying这些特性的前提。
CDB架构PDB的UNDO表空间管理
1、连接到根容器
[oracle@19cdb01 ~]$ sqlplus / as sysdba SQL\*Plus: Release 19.0.0.0.0 - Production on Sun May 11 05:57:33 2025 Version 19.27.0.0.0 Copyright (c) 1982, 2024, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.27.0.0.0 CONNAME ---------------------------------------------------------------------- CDB$ROOT SYS@cdb19c(CDB$ROOT)>
2、检查CDB中UNDO表空间的使用
SYS@cdb19c(CDB$ROOT)> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 HRPDB READ WRITE NO SYS@cdb19c(CDB$ROOT)> show con_id con_name CON_ID ------------------------------ 1 CON\_NAME ------------------------------ CDB$ROOT SYS@cdb19c(CDB$ROOT)> SYS@cdb19c(CDB$ROOT)> SELECT file#, ts.name, ts.ts#, ts.con_id FROM v$datafile d, v$tablespace ts WHERE d.ts#=ts.ts# AND d.con_id=ts.con_id AND ts.name like 'UNDO%'; 2 3 4 5 FILE# NAME TS# CON_ID ---------- ------------------------------ ---------- ---------- 4 UNDOTBS1 2 1 8 UNDOTBS1 2 2 11 UNDOTBS1 2 3 每个PDB都有自己的UNDO表空间 SYS@cdb19c(CDB$ROOT)> select a.con_id, b.name, tablespace_name from cdb_tablespaces a, v$pdbs b where a.con_id=b.con_id and contents = 'UNDO' order by con_id; 2 3 4 CON_ID NAME TABLESPACE_NAME---------- -------------------- ------------------------------ 3 HRPDB UNDOTBS1 SYS@cdb19c(CDB$ROOT)> HRPDB的UNDO表空间是UNDOTBS1
3、验证是否开启Local Undo
SYS@cdb19c(CDB$ROOT)> col property_name for a20 SYS@cdb19c(CDB$ROOT)> col property_value for a15 SYS@cdb19c(CDB$ROOT)> SELECT property_name, property_value FROM database_properties WHERE property_name = 'LOCAL_UNDO_ENABLED'; PROPERTY_NAME PROPERTY_VALUE -------------------- --------------- LOCAL_UNDO_ENABLED TRUE SYS@cdb19c(CDB$ROOT)>
LOCAL_UNDO_ENABLED是true,该环境开启了Local Undo模式,CDB中每个PDB都有自己的UNDO表空间。19c RAC 多租户环境下,如果开启Local Undo模式,每个PDB也是在每个节点有自己的UNDO表空间。
------------------------------------------------------------------------------------------------------------------------------------
**MyBologs:**
https://www.myhfxf.com
https://www.xiaofeihuangfu.com
CSDN: https://blog.csdn.net/xfhuangfu
ITPUB: https://blog.itpub.net/28373936/
微信公众号:xfhuangfu
------------------------------------------------------------------------------------------------------------------------------------
