您当前的位置: 首页 >  oracle

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

发布时间:2018-11-08 11:22:55 ,浏览量:0

在 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 模式上。

1    转换为共享 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>

2    切换为共享 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 模式上了。

3    切换为本地 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/,如需转载,请注明出处,否则将追究法律责任。

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0505s