加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle12.2新特性―Local UNDO

发布时间:2020-12-12 14:40:25 所属栏目:百科 来源:网络整理
导读:一、简介: ①:在12C R1版本中undo只支持Global Shared Undo模式,所有container共享一个UNDO表空间,目前保留这种模式只是为了升级过渡, ②:在12C R2引入了PDB Local UNDO模式,每个container都有自己的UNDO 表空间,对于RAC是每个实例每个container都有自己

一、简介:

①:在12C R1版本中undo只支持Global Shared Undo模式,所有container共享一个UNDO表空间,目前保留这种模式只是为了升级过渡,

②:在12C R2引入了PDB Local UNDO模式,每个container都有自己的UNDO 表空间,对于RAC是每个实例每个container都有自己的UNDO表空间,这也正是推荐的.在DBCA时会有local undo选项,且默认勾选。


local undo 模式的好处:

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

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

③:point-in-time recovery PDB


--注意:如果要将local UNO 转为 shared UNO,数据库必须要以upgrade方式启动,否则会报错;


二、 local undo 转 shared undo :

①:查看localundo是否开启:(默认是开启localundo,因为在安装的时候默认是勾选这个选项的)
SQL>colPROPERTY_NAMEfora25;
SQL>colPROPERTY_VALUEfora25;
SQL>selectPROPERTY_NAME,PROPERTY_VALUEfromdatabase_propertieswhereproperty_name='LOCAL_UNDO_ENABLED';
PROPERTY_NAMEPROPERTY_VALUE
--------------------------------------------------
LOCAL_UNDO_ENABLEDTRUE
注意:在Oracle12.1版本中undo只支持GlobalSharedUndo模式,不支持localundo选项
②:重启数据库,以upgrade方式启动:
SQL>shutdownimmediate
SQL>startupupgrade
SQL>alterdatabaselocalundooff;---改变localundo的模式,数据库必须以upgrade方式启动。
SQL>shutdownimmediate
SQL>startup
SQL>colPROPERTY_NAMEfora25;
SQL>selectPROPERTY_NAME,PROPERTY_VALUEfromdatabase_propertieswhereproperty_name='LOCAL_UNDO_ENABLED';
PROPERTY_NAMEPROPERTY_VALUE
--------------------------------------------------
LOCAL_UNDO_ENABLEDFALSE
---注意,从上一步查询得知,local_undo已经关闭了;
③:把pdb中的undo表空间删除:
SQL>showpdbs;
CON_IDCON_NAMEOPENMODERESTRICTED
------------------------------------------------------------
2PDB$SEEDREADONLYNO
3TESTPDBREADWRITENO
SQL>altersessionsetcontainer=testpdb;
SQL>selecttablespace_namefromdba_tablespaces;----查看现在的表空间,
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
TEST
6rowsselected.
SQL>selectnamefromv$datafilewherenamelike'%undo%';---查看可以得知,目前有两个undo表空间,一个是CDB的,一个是PDB自己的
NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/orcl/undotbs01.dbf
/opt/oracle/oradata/orcl/testpdb/undotbs01.dbf
SQL>droptablespaceUNDOTBS1includingcontentsanddatafiles;---删除pdb中的undo表空间,(一定是进入到pdb在执行这条命令)
Tablespacedropped.
SQL>selectnamefromv$datafilewherenamelike'%undo%';---此时查看undo表空间,就只剩下CDB中的一个了
NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/orcl/undotbs01.dbf
SQL>showcon_name;
CON_NAME
------------------------------
TESTPDB

二、shared undo 转 local undo :

SQL>shutdownimmediate
SQL>startupupgrade---必须以upgrade启动数据库
SQL>alterdatabaselocalundoon;----开启localundo模式
SQL>shutdownimmediate
SQL>startup
SQL>colPROPERTY_NAMEfora25;
SQL>colPROPERTY_VALUEfora25;
SQL>selectPROPERTY_NAME,PROPERTY_VALUEfromdatabase_propertieswhereproperty_name='LOCAL_UNDO_ENABLED';
PROPERTY_NAMEPROPERTY_VALUE
--------------------------------------------------
LOCAL_UNDO_ENABLEDTRUE
SQL>alterpluggabledatabasetestpdbopen;
SQL>altersessionsetcontainer=testpdb;
SQL>selectnamefromv$datafilewherenamelike'%undo%';
NAME
-----------------------------------------------------------------------------------------------------------------------------------------
/opt/oracle/oradata/orcl/testpdb/system01_i1_undo.dbf



说明:

打开loacl undo后,自动为当前的PDB创建undo表空间,同时如果以前再新创建pdb,系统将自动创建自己的undo表空间。创建表空间的名字与大小由 PDB$SEED 中的配置信息决定的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读