网站首页 > 技术文章 正文
【七】管理undo
7.1 Undo作用
使用undo tablespace 存放从数据缓存区读出的数据块的前镜像。
提供以下四种情况所需要的信息:
1)回滚事务:rollback
2)读一致性:正在做DML操作的数据块,事务结束前,其他用户读undo里面的数据前镜像
3)实例的恢复:instance recover(undo -->rollback)
4)闪回技术 :flashback query、flashback table等。
7.2 Undo的参数
7.2.1三个基本参数
SYS>show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
7.2.2参数说明
1)undo_management
①manaual 仅在维护时使用
②auto 使用undo tablespace管理undo
2)undo_retention 指定保留期,希望在这个期间commit的undo数据不要覆盖
3)undo_tablespace 当前使用的Undo表空间
7.2.3 建立一个undo表空间
可以建立多个undo表空间,但只有一个是使用中的undo使用中的undo tablespace 不能offline 和 drop,建立一个新的undo表空间:
SQL>create undo tablespace undotbs2 datafile '/u01/oradata/prod/undotbs02.dbf' size 50m autoextend on;
查看undo tablespace
SQL> select tablespace_name,status,contents from dba_tablespaces;
查看当前正在使用的undo tablespace回滚段
SQL> select * from v$rollname;
USN NAME
---------- ------------------------------
0 SYSTEM
1 _SYSSMU1_1363316212$
2 _SYSSMU2_1363316212$
3 _SYSSMU3_1363316212$
4 _SYSSMU4_1363316212$
5 _SYSSMU5_1363316212$
6 _SYSSMU6_1363316212$
7 _SYSSMU7_1363316212$
8 _SYSSMU8_1363316212$
9 _SYSSMU9_1363316212$
10 _SYSSMU10_1363316212$
7.2.4切换undo
SQL> alter system set undo_tablespace=undotbs2; 动态参数,修改立即生效
SQL> select * from v$rollname;
USN NAME
---------- ------------------------------
0 SYSTEM
11 _SYSSMU11_1357956213$
12 _SYSSMU12_1357956213$
13 _SYSSMU13_1357956213$
14 _SYSSMU14_1357956213$
15 _SYSSMU15_1357956213$
16 _SYSSMU16_1357956213$
17 _SYSSMU17_1357956213$
18 _SYSSMU18_1357956213$
19 _SYSSMU19_1357956213$
20 _SYSSMU20_1357956213$
SQL> drop tablespace undotbs1 including contents and datafiles; 删除未激活undo
7.3 Undo空间重用机制
undo 数据的4种状态
①active:
表示transaction还没有commit,不可覆盖,
②unexpired:
由已经commit或rollback的数据转换而来的状态, 在保留期内,尽量不覆盖(非强制)
③expired:
由unexpired转换而来,其中的数据是超过undo保留期的,随时可以再分配(覆盖)。
④free:
分配了但未使用过。一般是undo最初创建和扩展时出现,它不是一个常态的。
undo的状态转换体现了undo空间的循环使用原理:分配---》冻结--->回收---》再分配
7.4关于AUM
1)什么是AUM
Oracle10gR2以后引入了一个新的自动调整undo retention的特性,目的是尽量避免两个Undo错误:
ora-30036错误---空间不足
ora-01555错误---快照太旧
11g缺省设置为AUM(Auto Undo Management)
AUM下current undo retention是自动调整的
SYS@ prod>select begin_time,tuned_undoretention from v$undostat;
BEGIN_TIME TUNED_UNDORETENTION
------------------- -------------------
2015-10-11 20:17:20 1784
2015-10-11 20:07:20 1723
2015-10-11 19:57:20 1119
2)AUM的两种工作方式
①autoextend off下, 忽略undo_retention参数,TUNED_UNDORETENTION参照undo表空间大小和undo统计信息。
缺点:空间给定不合理时,产生UNDO告警,不能完全避免ora-30036,ora-01555,若UNDO增加尺寸,又可能造成TUNED_UNDORETENTION增加。
②autoextend on下, 参考undo_retention作为下限值,TUNED_UNDORETENTION期内,以扩展空间代替覆盖unexpired,基本避免了ora-30036,ora-01555
缺点:表空间可能过度膨胀。
3)关闭AUT模式(Oracle不推荐)
如果要关闭undo自动调优,可以使用隐含参数,设置隐含参数_undo_autotune=false
4)Undo的guarantee属性
通常情况下,unexpired数据并不绝对保证在retention期内不会覆盖,必要时可考虑设置在保留期强制不覆盖的guarantee属性,同时应该使undo autoextend on
SQL> select tablespace_name,status,contents,retention from dba_tablespaces;
缺省配置下undo retention是 noguarantee
guarantee属性可以修改
SQL> alter tablespace undotbs2 retention guarantee; 保证在retention 期间不允许被覆盖
SQL> alter tablespace undotbs2 retention noguarantee;
7.5 undo 信息的查询
1) v$session 查看用户建立的session
2) v$transaction 当前的事务
3) v$rollname undo段的名称
4) v$rollstat undo段的状态
5) v$undostat 查看每10分钟的统计数据
6) dba_undo_extents 查看undo段中不同状态的空间占用
7) dba_rollback_segs 数据字典里记录的undo段状态
the end !!!
@jackman 共筑美好!
猜你喜欢
- 2024-10-18 ORACLE数据库启停概述 oracle数据库启动和停止
- 2024-10-18 Oracle 12c 的安装 oracle12c的安装实验存在的问题和解决方法
- 2024-10-18 关于oracle数据库物理结构(文件)的一些总结
- 2024-10-18 数据库笔试面试24——Oracle实例启动和关闭的信息记载到
- 2024-10-18 Oracle语法-死锁、事务、启动与关机
- 2024-10-18 ORACLE DG 主备库开启与关闭顺序 oracle主备部署
- 2024-10-18 Oracle体系结构之数据库启停(一)--概念及指令
- 2024-10-18 Linux 解决 oracle ORA-12537: TNS:connection closed 问题
- 2024-10-18 服务器异常关机导致Oracle启动失败
- 2024-10-18 Linux新手入门系列:linux下oracle随系统关机自动关闭配置
你 发表评论:
欢迎- 591℃几个Oracle空值处理函数 oracle处理null值的函数
- 584℃Oracle分析函数之Lag和Lead()使用
- 571℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 569℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 565℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 557℃【数据统计分析】详解Oracle分组函数之CUBE
- 542℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 537℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)