本文小编为大家详细介绍“Oracle本地UNDO模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Oracle本地UNDO模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1 转换为共享undo模式1.1 查询当前的模式:

SQL>COLUMNproperty_nameFORMATA30SQL>COLUMNproperty_valueFORMATA30SQL>SELECTproperty_name,property_valueFROMdatabase_propertiesWHEREproperty_name='LOCAL_UNDO_ENABLED';PROPERTY_NAMEPROPERTY_VALUE------------------------------------------------------------LOCAL_UNDO_ENABLEDTRUE1.2 查看ROOT和自己定义的pdb对应的undo表空间

SELECTcon_id,tablespace_nameFROMcdb_tablespacesWHEREtablespace_nameLIKE'UNDO%'ORDERBYcon_id;CON_IDTABLESPACE_NAME----------------------------------------1UNDOTBS13UNDOTBS12 切换为共享undo模式

SQL>SHUTDOWNIMMEDIATE;SQL>STARTUPUPGRADE;SQL>ALTERDATABASELOCALUNDOOFF;SQL>SHUTDOWNIMMEDIATE;SQL>STARTUP;2.1 验证

SQL>COLUMNproperty_nameFORMATA30SQL>COLUMNproperty_valueFORMATA30SQL>SELECTproperty_name,property_valueFROMdatabase_propertiesWHEREproperty_name='LOCAL_UNDO_ENABLED';PROPERTY_NAMEPROPERTY_VALUE-----------------------------------------------------------LOCAL_UNDO_ENABLEDFALSE

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

SQL>SELECTcon_id,tablespace_nameFROMcdb_tablespacesWHEREtablespace_nameLIKE'UNDO%'ORDERBYcon_id;CON_IDTABLESPACE_NAME----------------------------------------1UNDOTBS13UNDOTBS1

–删除多余的undo表空间

SQL>ALTERSESSIONSETCONTAINER=pdb1;SQL>SELECTfile_nameFROMdba_data_filesWHEREtablespace_name='UNDOTBS1';----------------------------------------------------------------------------------------------------/u02/app/oracle/oradata/cdb1/pdb1/undotbs01.dbfSQL>DROPTABLESPACEundotbs1;Tablespacedropped.

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

3 切换为本地undo模式

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

查询

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

SQL>SELECTproperty_name,property_valueFROMdatabase_propertiesWHEREproperty_name='LOCAL_UNDO_ENABLED';PROPERTY_NAMEPROPERTY_VALUE------------------------------------------------------------LOCAL_UNDO_ENABLEDFALSESQL>SELECTcon_id,tablespace_nameFROMcdb_tablespacesWHEREtablespace_nameLIKE'UNDO%'ORDERBYcon_id;CON_IDTABLESPACE_NAME----------------------------------------1UNDOTBS13.1 切换为本地undo模式

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

SQL>SHUTDOWNIMMEDIATE;SQL>STARTUPUPGRADE;SQL>ALTERDATABASELOCALUNDOON;SQL>SHUTDOWNIMMEDIATE;SQL>STARTUP;3.2 验证

SQL>COLUMNproperty_nameFORMATA30SQL>COLUMNproperty_valueFORMATA30SQL>SELECTproperty_name,property_valueFROMdatabase_propertiesWHEREproperty_name='LOCAL_UNDO_ENABLED';PROPERTY_NAMEPROPERTY_VALUE------------------------------------------------------------LOCAL_UNDO_ENABLEDTRUE

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

SQL>SELECTcon_id,tablespace_nameFROMcdb_tablespacesWHEREtablespace_nameLIKE'UNDO%'ORDERBYcon_id;CON_IDTABLESPACE_NAME----------------------------------------1UNDOTBS13UNDO_13.3 新创建一个数据库

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

SQL>CREATEPLUGGABLEDATABASEpdb2ADMINUSERpdb_admIDENTIFIEDBYPassword1;SQL>ALTERPLUGGABLEDATABASEpdb2SAVESTATE;SQL>SELECTcon_id,tablespace_nameFROMcdb_tablespacesWHEREtablespace_nameLIKE'UNDO%'ORDERBYcon_id;CON_IDTABLESPACE_NAME----------------------------------------1UNDOTBS13UNDO_14UNDOTBS1

读到这里,这篇“Oracle本地UNDO模式怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。