ITPub博客

首页 > 数据库 > Oracle > 19c多租户架构下的UNDO管理-19c多租户架构下的UNDO管理- Local Undo

19c多租户架构下的UNDO管理-19c多租户架构下的UNDO管理- Local Undo

原创 Oracle 作者:xfhuangfu 时间:2025-06-03 11:30:04 0 删除 编辑

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的优点:

  • 提高性能:通过在每个PDB中隔离UNDO表空间进行管理,Local UNDO减少了多个PDB共享一个共享UNDO表空间时可能出现的争用和潜在瓶颈。
  • 增强隔离:Local Undo可确保一个PDB中的操作不会影响其他PDB的UNDO性能,从而提高稳定性和可靠性。
  • 简化管理:DBA可以在PDB级别管理UNDO表空间,根据每个PDB的特点和业务特点在PDB级设置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表空间。
-the end-


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28373936/viewspace-3086478/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Xiaofei Huangfu Oracle DBA,Oracle ACE Oracle 19c OCM12c OCM,11g OCM MySQL 5.6,5.7,8.0 OCP 18年以上IT从业经验,有丰富的数据库和开发领域经验,多年Oracle运维经验和java开发经验。

注册时间:2013-09-05

  • 博文量
    151
  • 访问量
    231217