Local undo and Shared undo

官方文档链接:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/admin/administering-a-cdb-with-sql-plus.html#GUID-24EA5811-94F0-4EEC-864F-23AEF48F2D51

 

一、介绍

12C R2中增加了local undo模式,12C R1中只存在shared undo模式。

启用local undo 模式,单个实例配置中的每个容器都有自己的undo表空间;对于Oracle RAC CDB,每个PDB在其打开的每个节点中都有自己的undo表空间。当禁用local undo时,当当前容器是PDB时,Oracle数据库将静默地忽略撤消表空间和回滚段操作。

shared undo模式意味着单实例CDB有一个活动的undo表空间;对于Oracle RAC CDB,每个实例都有一个活动的undo表空间。此模式主要仅用于升级和过渡目的。

 

二、Local undo的好处

尽管与shared undo相比,local undo会产生较小的开销,但local undo的优势在大多数环境中更为可取。

local undo使得拔插操作方便,减少undo表空间争用,可以快速恢复时间点(point in time recovery)。

Relocating a PDB,Flashing Back a PDB,Refresh PDB ,( Hot Clone, Relocate PDB in open read/write mode)这些新功能只有在启用local undo 才能使用

 

三、local undo 和shared undo相互转换

1. local undo转换shared undo

查看local undo是否开启,默认是开启的

SELECT PROPERTY_NAME, PROPERTY_VALUE

FROM   DATABASE_PROPERTIES

WHERE  PROPERTY_NAME = 'LOCAL_UNDO_ENABLED';

12C R2 Local undo and Shared undo 

upgrade模式重启数据库

1)Shut down the CDB instance if it is open.

SQL> shutdown immediate;

2)Start up the CDB instance in OPEN UPGRADE mode

SQL> startup upgrade;

3)ensure that the current container is the CDB root

SQL> show con_name;

4)禁用local undo

SQL> alter database local undo off;

5)Shut down and restart the CDB instance.

SQL> shutdown immediate;

SQL> startup;

SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES

WHERE PROPERTY_NAME = 'LOCAL_UNDO_ENABLED';

12C R2 Local undo and Shared undo 

当处于shared undo模式时,CDB将忽略任何在local undo模式下创建的本地undo表空间。 Oracle建议您删除这些本地undo表空间。

drop tablespace UNDOTBS1 including contents and datafiles;(在PDB执行)

12C R2 Local undo and Shared undo 12C R2 Local undo and Shared undo

 

 

2. shared undo 转成 local undo

由于上面实验我们把local undo默认启动禁用了,下面转换local undo需要开启

1)Shut down the CDB instance if it is open.

SQL> shutdown immediate;

2)Start up the CDB instance in OPEN UPGRADE mode

SQL> startup upgrade;

3)ensure that the current container is the CDB root

SQL> show con_name;

4)启动local undo

SQL> alter database local undo on;

5)Shut down and restart the CDB instance.

SQL> shutdown immediate;

SQL> startup;

SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES

WHERE PROPERTY_NAME = 'LOCAL_UNDO_ENABLED';

12C R2 Local undo and Shared undo 

PDB数据库开启后自动创建undob表空间

12C R2 Local undo and Shared undo 

后台日志可以看到创建语句

12C R2 Local undo and Shared undo 

官方文档中提到如果你想通过手动创建undo表空间来控制undo表空间的大小和配置。为确保从CDB root创建的PDB使用手动创建的undo表空间而不是自动创建的undo表空间,必须将UNDO_TABLESPACE初始化参数设置为manually,才能创建的undo表空间,或者删除自动创建的undo表空间。

12C R2 Local undo and Shared undo 

 

相关文章:

  • 2022-03-10
  • 2021-11-06
  • 2021-08-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-13
  • 2022-12-23
  • 2021-09-07
  • 2021-12-31
  • 2022-12-23
  • 2021-10-21
  • 2021-08-27
相关资源
相似解决方案