Oracle 12C R2新特性-本地UNDO模式(LOCAL_UNDO_ENABLED)



Oracle 12.1 中,在一个实例中的所有 PDB 只能共享同一个 UNDO 表空间 称之为 Global Shared Undo 模式 即共享 Undo 模式 。目前保留 共享 Undo 模式 只是为了升级过渡 Oracle 12.2 引入了 PDB Local UNDO 模式 每个 PDB 都有各自的 undo 表空间。对于 RAC 是每个实例每个 container 都有自己的 UNDO 表空间 , 这也正是推荐的 这种新的管理机制就叫做本地 undo 模式。本地 undo 模式为新建数据库的默认模式。在 DBCA 时会有 local undo 选项,且默认勾选。

 

本地 undo 模式的好处:

1. 减少 undo 表空间的争用,同时方便拔插

2. 只有使用 local undo 才支持下面的新特性 :Refresh PDB,Flashback PDB ,( Hot Clone,Relocate PDB in open read/write mode

3.point-in-time recovery PDB

 

查看数据库是否开启 local undo 如果 PROPERTY_VALUE true 表示已经开启。

col PROPERTY_NAME for a25;

col PROPERTY_VALUE for a25;

select PROPERTY_NAME,PROPERTY_VALUE from database_properties where property_name='LOCAL_UNDO_ENABLED';

查看 ROOT 和自己定义的 pdb 对应的 undo 表空间

SELECT CON_ID,NAME FROM V$TABLESPACE A WHERE A.NAME  LIKE 'UNDO%' ORDER BY CON_ID,TS# ;

 

1 local undo shared undo 的步骤:

SHUTDOWN IMMEDIATE;

STARTUP UPGRADE;

ALTER DATABASE LOCAL UNDO OFF;

SHUTDOWN IMMEDIATE;

STARTUP;

在转换完成之后, 之前存在的 undo 表空间不会自动删除。如果碍事, 需要进入每个 PDB 里进行 手动删除。

alter session set container=pdblhr1;

DROP TABLESPACE undotbs1;

 

1 shared undo local undo 的步骤:

SHUTDOWN IMMEDIATE;

STARTUP UPGRADE;

ALTER DATABASE LOCAL UNDO O N ;

SHUTDOWN IMMEDIATE;

STARTUP;

Oracle 自动为 每个 PDB 创建了一个 undo 表空间 在切换为本地 Undo 模式后, 新创建的数据库也是运行在本地 undo 模式上。



  转换为共享 undo 模式

1.1     查询当前的模式:


SQL>COLUMN property_name FORMAT A30
SQL>COLUMN property_value FORMAT A30
SQL>SELECT property_name, property_value
FROM   database_properties
WHERE  property_name = 'LOCAL_UNDO_ENABLED';
PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED             TRUE
SQL>


1.2     查看 ROOT 和自己定义的 pdb 对应的 undo 表空间


SELECT con_id, tablespace_name
FROM   cdb_tablespaces
WHERE  tablespace_name LIKE 'UNDO%'
ORDER BY con_id;
 
    CON_ID TABLESPACE_NAME
---------- ------------------------------
         1 UNDOTBS1
         3 UNDOTBS1
SQL>


  切换为共享 undo 模式


SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP UPGRADE;
ORACLE instance started.
Total System Global Area 1308622848 bytes
Fixed Size	    8792440 bytes
Variable Size	  822085256 bytes
Database Buffers	  469762048 bytes
Redo Buffers	    7983104 bytes
Database mounted.
Database opened.
SQL> ALTER DATABASE LOCAL UNDO OFF;
 
Database altered.
SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP;
ORACLE instance started.
Total System Global Area 1308622848 bytes
Fixed Size	    8792440 bytes
Variable Size	  822085256 bytes
Database Buffers	  469762048 bytes
Redo Buffers	    7983104 bytes
Database mounted.
Database opened.
SQL>



2.1     验证


SQL>COLUMN property_name FORMAT A30
SQL>COLUMN property_value FORMAT A30
SQL>SELECT property_name, property_value
FROM   database_properties
WHERE  property_name = 'LOCAL_UNDO_ENABLED';
 
PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED             FALSE
SQL>


虽然已经不是本地 undo 模式了,但是之前存在的 undo 表空间不会自动删除。如果碍事,要手动删除。


SQL>SELECT con_id, tablespace_name
FROM   cdb_tablespaces
WHERE  tablespace_name LIKE 'UNDO%'
ORDER BY con_id;
 
    CON_ID TABLESPACE_NAME
---------- ------------------------------
         1 UNDOTBS1
         3 UNDOTBS1
SQL>


-- 删除多余的 undo 表空间


SQL>ALTER SESSION SET CONTAINER = pdb1;
SQL>SELECT file_name
FROM   dba_data_files
WHERE  tablespace_name = 'UNDOTBS1';
----------------------------------------------------------------------------------------------------
/u02/app/oracle/oradata/cdb1/pdb1/undotbs01.dbf
SQL>
SQL>DROP TABLESPACE undotbs1;
Tablespace dropped.
SQL>



随着所有老的 undo 表空间被移除了,现在该实例就是运行在共享 undo 模式上了。

  切换为本地 undo 模式

利用上面的环境,重新切换回去。

查询:可以看到是运行在共享 undo 模式上,而且只有一个 undo 表空间。


SQL>SELECT property_name, property_value
FROM   database_properties
WHERE  property_name = 'LOCAL_UNDO_ENABLED';
PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED             FALSE
SQL>SELECT con_id, tablespace_name
FROM   cdb_tablespaces
WHERE  tablespace_name LIKE 'UNDO%'
ORDER BY con_id;
    CON_ID TABLESPACE_NAME
---------- ------------------------------
         1 UNDOTBS1
SQL>


3.1     切换为本地 undo 模式

和切换为共享 undo 模式步骤相同。


SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP UPGRADE;
ORACLE instance started.
Total System Global Area 1308622848 bytes
Fixed Size	    8792440 bytes
Variable Size	  822085256 bytes
Database Buffers	  469762048 bytes
Redo Buffers	    7983104 bytes
Database mounted.
Database opened.
SQL> ALTER DATABASE LOCAL UNDO ON;
Database altered.
SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP;
ORACLE instance started.
Total System Global Area 1308622848 bytes
Fixed Size	    8792440 bytes
Variable Size	  822085256 bytes
Database Buffers	  469762048 bytes
Redo Buffers	    7983104 bytes
Database mounted.
Database opened.
SQL>



3.2     验证



SQL>COLUMN property_name FORMAT A30
SQL>COLUMN property_value FORMAT A30
SQL>SELECT property_name, property_value
FROM   database_properties
WHERE  property_name = 'LOCAL_UNDO_ENABLED';
PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED             TRUE


-- 可以看到 Oracle 自动为 PDB 创建了一个 undo 表空间


SQL>SELECT con_id, tablespace_name
FROM   cdb_tablespaces
WHERE  tablespace_name LIKE 'UNDO%'
ORDER BY con_id;
    CON_ID TABLESPACE_NAME
---------- ------------------------------
         1 UNDOTBS1
         3 UNDO_1
SQL>


3.3     新创建一个数据库

可以看到新创建的数据库也是运行在本地 undo 模式上。


SQL>CREATE PLUGGABLE DATABASE pdb2 ADMIN USER pdb_adm IDENTIFIED BY Password1;
SQL>ALTER PLUGGABLE DATABASE pdb2 SAVE STATE;
SQL>SELECT con_id, tablespace_name
FROM   cdb_tablespaces
WHERE  tablespace_name LIKE 'UNDO%'
ORDER BY con_id;
    CON_ID TABLESPACE_NAME
---------- ------------------------------
         1 UNDOTBS1
         3 UNDO_1
         4 UNDOTBS1
SQL>





About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub( http://blog.itpub.net/26736162 )、博客园( http://www.cnblogs.com/lhrbest )和个人weixin公众号( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 (满) 、618766405

● weixin群:可加我weixin,我拉大家进群,非诚勿扰

● 联系我请加QQ好友 646634621 ,注明添加缘由

● 于 2018-11-01 06:00 ~ 2018-11-31 24:00 在魔都完成

● 最新修改时间:2018-11-01 06:00 ~ 2018-11-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店 https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书 http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班 http://blog.itpub.net/26736162/viewspace-2148098/

小麦苗腾讯课堂主页 https://lhr.ke.qq.com/

........................................................................................................................

使用 weixin客户端 扫描下面的二维码来关注小麦苗的weixin公众号( xiaomaimiaolhr )及QQ群(DBA宝典)、添加小麦苗weixin, 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

 

 



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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值