阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle 12c中性能优化&功能增强新特性之临时undo

422次阅读
没有评论

共计 3577 个字符,预计需要花费 9 分钟才能阅读完成。

临时表最有意思的特点之一是 undo 段也存储在常规 undo 表空间中,而它们的 undo 反过来被 redo 保护,这会导致一些问题。

1)  写 undo 表空间需要数据库以读写模式打开,因此,只读数据库和物理备库中不能用临时表。

2)  临时表中存储的是临时数据,恢复数据库时不需要恢复它们,因此,浪费 redo 来保护它们没必要。

3)  临时表的 undo 占用满足 undo 保留时间的表空间。

Oracle12c 中,允许将临时表的 undo 数据存储在临时表空间中,这使得临时表可以用于物理备库和只读库中,因为临时表没必要产生 redo。

1.  启用 / 禁用临时 undo

Oracle12c 中,临时表的 undo 段默认还是通过常规 undo 表空间管理。临时 undo 通过 TEMP_UNDO_ENABLED 参数在会话或系统级别启用或禁用。

— 会话级别

ALTER SESSION SETTEMP_UNDO_ENABLED = TRUE;

ALTER SESSION SETTEMP_UNDO_ENABLED = FALSE;

 

— 系统级别

CONN sys@pdb1 AS SYSDBA

 

ALTER SYSTEM SETTEMP_UNDO_ENABLED = TRUE;

ALTER SYSTEM SETTEMP_UNDO_ENABLED = FALSE;

以下为临时 undo 的注意事项。

1)  临时 undo 功能仅在 COMPATIBLE 参数设置为 12.0.0 或更高时才可用。

2)  一旦会话创建了一些临时 undo,无论用常规还是临时 undo,怎么设置 TEMP_UNDO_ENABLED 参数也是无济于事的,除非退出会话,期间,也不会有什么报错。

3)  临时 undo 在备库上是默认的设置,因此,无论在备库上怎么设置 TEMP_UNDO_ENABLED 参数,都没什么作用。

2.  监控临时 undo

常规 undo 活动通过 V$UNDOSTAT 视图监控。Oracle12c 中,增加了 V$TEMPUNDOSTAT 视图来监控临时 undo 活动。下面通过创建一个临时表来测试。

CONN test/test@pdb1

 

DROP TABLE g_t_tab PURGE;

 

CREATE GLOBAL TEMPORARY TABLEg_t_tab (

  c1          NUMBER,

  c2 VARCHAR2(20)

)

ON COMMIT DELETE ROWS;

确信用户可以访问 V$TEMPUNDOSTAT 视图。

CONN sys@pdb1 AS SYSDBA

 

GRANT SELECT ONv_$tempundostat TO test;

下面的测试创建一个会话,往临时表里加载一些数据,然后,检查 redo 和 undo 的使用变化。下例中没有用到临时 undo。

CONN test/test@pdb1

SET AUTOTRACE ON STATISTICS;

 

– 加载数据

INSERT INTO g_t_tab

WITH data AS (

  SELECT 1 AS c1

  FROM  dual

  CONNECT BY level < 10000

)

SELECT rownum,TO_CHAR(rownum)

FROM  data a, data b

WHERE  rownum <= 1000000;

 

1000000 rows created.

 

Statistics

———————————————————-

        46 recursive calls

      15346 db block gets

      2379 consistent gets

        16 physical reads

    2944564 redo size

        855 bytes sent via SQL*Net to client

        986 bytes received via SQL*Net from client

          3 SQL*Net roundtrips to/from client

          5 sorts (memory)

          0 sorts (disk)

    1000000 rows processed

 

SQL>

 

SET AUTOTRACE OFF

 

— 检查该事务产生的 undo

SELECT t.used_ublk,

      t.used_urec

FROM  v$transaction t,

      v$session s

WHERE  s.saddr = t.ses_addr

AND    s.audsid = SYS_CONTEXT(‘USERENV’,’SESSIONID’);

 

 USED_UBLK USED_UREC

———- ———-

      302      6238

 

SQL>

我们可以看到该操作产生了 302 个 undo 块,这就是统计信息显式产生了 2.9M redo 的原因,是为了保护这些 undo 块。

下例创建一个会话,开启临时 undo,往临时表中加载一些数据,再检查 redo 和 undo 使用变化,即通过 V$TEMPUNDOSTAT 视图来检查产生的 undo。

CONN test/test@pdb1

 

— 打开临时 undo

ALTER SESSION SETTEMP_UNDO_ENABLED = TRUE;

 

SET AUTOTRACE ON STATISTICS;

 

— 加载数据

INSERT INTO g_t_tab

WITH data AS (

  SELECT 1 AS c1

  FROM  dual

  CONNECT BY level < 10000

)

SELECT rownum,TO_CHAR(rownum)

FROM  data a, data b

WHERE  rownum <= 1000000;

 

1000000 rows created.

 

Statistics

———————————————————-

        25 recursive calls

      15369 db block gets

      2348 consistent gets

        16 physical reads

      1004 redo size

        853 bytes sent via SQL*Net to client

        986 bytes received via SQL*Net from client

          3 SQL*Net roundtrips to/from client

          3 sorts (memory)

          0 sorts (disk)

    1000000 rows processed

 

SQL>

 

SET AUTOTRACE OFF

 

— 检查该事务产生的 undo

SELECT t.used_ublk,

      t.used_urec

FROM  v$transaction t,

      v$session s

WHERE  s.saddr = t.ses_addr

AND    s.audsid = SYS_CONTEXT(‘USERENV’,’SESSIONID’);

 

 USED_UBLK USED_UREC

———- ———-

        1          1

 

SQL>

 

– 检查产生的临时 undo

SET LINESIZE 200

ALTER SESSION SETNLS_DATE_FORMAT=’DD-MON-YYYY HH24:MI:SS’;

 

SELECT *

FROM  v$tempundostat

WHERE  end_time >= SYSDATE – INTERVAL ‘1’ MINUTE;

 

BEGIN_TIME          END_TIME                UNDOTSN  TXNCOUNT MAXCONCURRENCY MAXQUERYLENMAXQUERYID    UNDOBLKCNT    EXTCNT  USCOUNT SSOLDERRCNT NOSPACEERRCNT  CON_ID

—————————————- ———- ———- ————– ———————— ———- ———- ———- ———– ———————–

24-NOV-2014 15:11:0923-NOV-2014 15:17:30          3          2              0          0                      321          4        1          0          0          0

 

SQL>

该例中,看到仅产生了少量的常规 undo,导致产生了 1K 的 redo。V$TEMPUNDOSTAT 视图显示产生了 321 个临时 undo 块。

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-01/140020.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3577字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7804164
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...