千家信息网

oracle 12.2将共享undo转为local undo的方法

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,本文主要讲述了:1.关于undo表空间share和local的看法2.修改undo为local undo的方法3.修改PDB$SEED属性的方法4.关于local undo转为share undo一.
千家信息网最后更新 2025年02月07日oracle 12.2将共享undo转为local undo的方法

本文主要讲述了:

1.关于undo表空间share和local的看法

2.修改undo为local undo的方法

3.修改PDB$SEED属性的方法

4.关于local undo转为share undo

一.概述

数据库从12.2版本开始,实现了undo表空间在cdb和pdb层面的隔离;并且local undo也是一些新特征性的基础,比如pdb refresh和pdb闪回。12.1版本还无法实现。不过这种资源的隔离是不可避免的发展方向。undo在实现隔离之后,下一步redo的隔离也是有可能的。

cdb是local undo模式的时候,open的cdb和pdb都会有属于自己的undo表空间。当从一个share undo的cdb中拔插一个pdb到local undo模式的cdb中的时候,在这个pdb open的时候,会为这个pdb自动创建undo表空间。

二.修改undo为local undo的方法

数据库版本

SYS@cdbtest1(CDB$ROOT)> select banner from v$version where rownum=1;

BANNER

--------------------------------------------------------------------------------

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

查询当前数据库undo信息

SYS@cdbtest1(CDB$ROOT)> col PROPERTY_NAME for a25

SYS@cdbtest1(CDB$ROOT)> col PROPERTY_VALUE for a30

SYS@cdbtest1(CDB$ROOT)> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where property_name='LOCAL_UNDO_ENABLED';

PROPERTY_NAME PROPERTY_VALUE

------------------------- ------------------------------

LOCAL_UNDO_ENABLED FALSE

SYS@cdbtest1(CDB$ROOT)> set line 200

SYS@cdbtest1(CDB$ROOT)> col FILE_NAME for a50

SYS@cdbtest1(CDB$ROOT)> select a.con_id,a.tablespace_name,b.file_name from cdb_tablespaces a,CDB_DATA_FILES b where a.TABLESPACE_NAME=b.TABLESPACE_NAME and a.con_id=b.con_id and a.CONTENTS='UNDO';

CON_ID TABLESPACE_NAME FILE_NAME

---------- ------------------------------ --------------------------------------------------

1 UNDOTBS1 /oradata/cdb/CDBTEST1/datafile/o1_mf_undotbs1_f7nz

8sl3_.dbf

可以看到当前undo还是共享的,只在cdb中存在一个undo表空间。

大致步骤

1.关闭cdb实例

2.打开pdb到upgrade模式,startup upgrade

3.在CDB$ROOT中执行:ALTER DATABASE LOCAL UNDO ON;

4.关闭cdb实例,然后重启

下面是操作过程:

SYS@cdbtest1(CDB$ROOT)> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@cdbtest1(CDB$ROOT)> startup upgrade

ORACLE instance started.

Total System Global Area 2214592512 bytes

Fixed Size 8795040 bytes

Variable Size 1845496928 bytes

Database Buffers 352321536 bytes

Redo Buffers 7979008 bytes

Database mounted.

Database opened.

SYS@cdbtest1(CDB$ROOT)> sho pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED MIGRATE YES

3 CLONEMING MOUNTED

4 MING MOUNTED

SYS@cdbtest1(CDB$ROOT)> alter database local undo on;

Database altered.

SYS@cdbtest1(CDB$ROOT)> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@cdbtest1(CDB$ROOT)> startup

ORACLE instance started.

Total System Global Area 2214592512 bytes

Fixed Size 8795040 bytes

Variable Size 1845496928 bytes

Database Buffers 352321536 bytes

Redo Buffers 7979008 bytes

Database mounted.

Database opened.

SYS@cdbtest1(CDB$ROOT)> col PROPERTY_NAME for a25

SYS@cdbtest1(CDB$ROOT)> col PROPERTY_VALUE for a30

SYS@cdbtest1(CDB$ROOT)> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where property_name='LOCAL_UNDO_ENABLED';

PROPERTY_NAME PROPERTY_VALUE

------------------------- ------------------------------

LOCAL_UNDO_ENABLED TRUE

SYS@cdbtest1(CDB$ROOT)> select a.con_id,a.tablespace_name,b.file_name,b.bytes/1024/1024 M from cdb_tablespaces a,CDB_DATA_FILES b where a.TABLESPACE_NAME=b.TABLESPACE_NAME and a.con_id=b.con_id and a.CONTENTS='UNDO';

CON_ID TABLESPACE_NAME FILE_NAME M

---------- ------------------------------ -------------------------------------------------- ----------

1 UNDOTBS1 /oradata/cdb/CDBTEST1/datafile/o1_mf_undotbs1_f7nz 835

8sl3_.dbf

3 UNDO_1 /oradata/cdb/CDBTEST1/64B070B959B22CC9E053023DA8C0 300

935F/datafile/o1_mf_undo_1_fxv9cmnl_.dbf

4 UNDO_1 /oradata/cdb/CDBTEST1/64AE1A20BB9C1B5FE053023DA8C0 300

6963/datafile/o1_mf_undo_1_fxv9cvrd_.dbf

三.修改PDB$SEED属性的方法

最开始的时候就提过了,当从一个share undo的cdb中拔插一个pdb到local undo模式的cdb中的时候,在这个pdb open的时候,会为这个pdb自动创建undo表空间。这里有两个pdb是自动开启的,所以为这两个pdb自动创建了undo表空间。300M的大小是跟随PDB$SEED中pdb的大小。如果想控制创建的undo表空间的配置,比如大小,可以在pdb$seed中修改undo表空间。

方法如下:

1. cdb$root中执行:

alter session set "_oracle_script"=true; --修改隐含参数,就可以避免ORA-65017: seed pluggable database may not be dropped or altered

ALTER PLUGGABLE DATABASE PDB$SEED OPEN READ WRITE FORCE ;

CON_ID CON_NAME OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED READ WRITE NO

2. 切换到种子pdb

ALTER SESSION SET CONTAINER=PDB$SEED;

3. 修改undo表空间

alter database datafile '/oradata/cdb/CDBTEST1/6498843CCFAD2D1FE053023DA8C0AC32/datafile/o1_mf_undotbs1_f7nz8x0z_.dbf' resize 300m;

之前是210M,修改成300M。

4. 再将PDB$SEED修改回只读模式

SYS@cdbtest1(CDB$ROOT)> alter session set "_oracle_script"=true;

Session altered.

SYS@cdbtest1(CDB$ROOT)> alter pluggable database "pdb$seed" close immediate;

Pluggable database altered.

SYS@cdbtest1(CDB$ROOT)> sho pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED MOUNTED

3 CLONEMING READ WRITE NO

4 MING READ WRITE NO

SYS@cdbtest1(CDB$ROOT)> alter pluggable database "pdb$seed" open read only;

Pluggable database altered.

SYS@cdbtest1(CDB$ROOT)> sho pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED READ ONLY NO

3 CLONEMING READ WRITE NO

4 MING READ WRITE NO

四.关于local undo转为share undo

以上是oracle如何将共享undo变为local undo的方法。local undo转为共享undo不符合发展潮流,方法大同小异,无非是之前命令改动成alter database local undo off,详细过程就不介绍了。但要注意的是当oracle变成共享undo模式的时候,它会忽略之前local模式时创建的本地udno表空间,oracle建议直接删除这些local undo tablespace。


空间 方法 时候 模式 隔离 大小 数据 数据库 版本 两个 实例 属性 过程 发展 大同小异 不可避免 信息 参数 发展方向 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 内蒙古软件开发人月标准 增强网络安全保护意识 安全播出网络安全领导小组 中国互联网金融科技发展元年 我的世界服务器破坏上锁箱子 计算机三级网络技术考什么吗 黑龙江集中套料软件开发商 服务器被攻击怎么解决 零编码软件开发平台 服务器账号密码能查到吗 网络安全教育大会讲话 软件开发进阶系列分解淘宝 聊城亿企搜网络技术有限公司 岳阳优质的数据库 软件开发成功后怎么做账 动感单车视频软件开发 中国古代墓志数据库 计算机网络技术历年真题 网络技术和数字技术的发展 315曝光的网络安全事件 学习网络技术书籍推荐 软件开发加密狗是啥 生态 公开数据库 数据库索引的类型与使用场景 武汉华聚创盈网络技术 数据库原理软件工程专业课后答案 网络安全小知识教你如何避坑 网络安全管理的swot 2021三级网络技术题库 网络安全初级培训心得体会
0