Local undo and Shared undo
官方文档链接:
一、介绍
在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';
以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';
当处于shared undo模式时,CDB将忽略任何在local undo模式下创建的本地undo表空间。 Oracle建议您删除这些本地undo表空间。 drop tablespace UNDOTBS1 including contents and datafiles;(在PDB执行)
|
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';
PDB数据库开启后自动创建undob表空间
后台日志可以看到创建语句
官方文档中提到如果你想通过手动创建undo表空间来控制undo表空间的大小和配置。为确保从CDB root创建的PDB使用手动创建的undo表空间而不是自动创建的undo表空间,必须将UNDO_TABLESPACE初始化参数设置为manually,才能创建的undo表空间,或者删除自动创建的undo表空间。
|