首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >回滚段undo

回滚段undo

作者头像
职场亮哥
发布于 2020-10-10 02:53:50
发布于 2020-10-10 02:53:50
2K00
代码可运行
举报
文章被收录于专栏:职场亮哥职场亮哥
运行总次数:0
代码可运行
Undo的作用
  • 数据的回滚
  • 一致性读
  • 表的闪回(事务,查询的闪回..)
  • 失败会话的恢复

回滚rollback操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> archive log list;
ORA-01031: 权限不足
SQL> conn /as sysdba
已连接。
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     45
下一个存档日志序列   47
当前日志序列           47
SQL> create table t1(id int);

表已创建。

SQL> select * from t1;

未选定行

SQL> insert into t1 values('1');

已创建 1 行。

SQL> insert into t1 values('2');

已创建 1 行。

SQL> rollback;

回退已完成。

SQL> select * from t1;

未选定行

SQL> desc t1;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------

 ID                                                 NUMBER(38)

SQL> select * from t1;

未选定行

SQL> insert into t1 values(1);

已创建 1 行。

SQL> insert into t1 values(2);

已创建 1 行。

SQL> select * from t1;

        ID
----------
         1
         2

SQL> rollback;

回退已完成。

SQL> select * from t1;

未选定行

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     45
下一个存档日志序列   47
当前日志序列           47
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 3307048960 bytes
Fixed Size                  2180264 bytes
Variable Size            1828719448 bytes
Database Buffers         1459617792 bytes
Redo Buffers               16531456 bytes
数据库装载完毕。
SQL> alter database noarchivelog;
alter database noarchivelog
*1 行出现错误:
ORA-38774: 无法禁用介质恢复 - 闪回数据库已启用


SQL> alter database flashback off;

数据库已更改。

SQL>
SQL> alter database noarchivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> archive log list;
数据库日志模式             非存档模式
自动存档             禁用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     45
当前日志序列           47
SQL> select * from t1;

未选定行

SQL> insert into t1 values(1);

已创建 1 行。

SQL> insert into t1 values(2);

已创建 1 行。

SQL> select * from t1;

        ID
----------
         1
         2

SQL> rollback;

回退已完成。

SQL> select * from t1;

未选定行

SQL> insert into t1 values(1);

已创建 1 行。

SQL> insert into t1 values(2);

已创建 1 行。

SQL> commit;

提交完成。

SQL> rollback;

回退已完成。

SQL> select * from t1;

        ID
----------
         1
         2

可见rollback操作和当前数据库 归档模式并没有关系,只和commit操作有关,一旦commit就无法回滚。

如果没有指定 rollback 到哪一个保存点savepoint上,就意味着全部Rollback,而不是只是rollback一条操作。

关于savepoint的操作见下面的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> drop table t1;

表已删除。

SQL> select * from t1;
select * from t1
              *1 行出现错误:
ORA-00942: 表或视图不存在


SQL> create table t1(id int);

表已创建。

SQL> insert into t1 values(1);

已创建 1 行。

SQL> savepoint s1;

保存点已创建。

SQL> insert into t1 values(2);

已创建 1 行。

SQL> insert into t1 values(3);

已创建 1 行。

SQL> rollback to s1;

回退已完成。

SQL> select * from t1;

        ID
----------
         1

虽然可以rollback到保存点,但是一旦commit,所有的保存点就都没用了。

undo的逻辑结构

回滚段的空间是可以循环利用的,就像是分块的圆盘,这个圆盘可以增加块,也可以回收块。

undo的空间使用机制-增长

如图中所示,块4填满后需要继续向前填充,虽然块2是inactive的,但是中间隔着一个active的块1,所以不能向前覆盖。这个时候空间就必须要增长了,则会加入新的块5,然后就可以继续向块5中写入undo信息。

undo的空间使用机制-回收

当块4块5块6连续并且都是inactive的时候,此时空间回收机制,可以将这几个块合并成单独的块,块6。

一致性读

回滚段解决了写操作不会阻塞读操作的问题。

一致性读并非总要去读回滚段。

实现的一致性读产生的代价——ORA-01555

ORA-01555: “snapshot too old: rollback segment number string with name “string” too small”

Cause: rollback records needed by a reader for consistent read are overwritten by other writers;

Action: if in Automatic Undo Management mode, increase undo_retention setting.otherwise,use larger rollback segments.

快照太久,回滚段太小,回滚记录被覆盖

具体可以参见:ORA-01555 原因与解决

自动管理Undo-AUM

Automatic Undo Management

查看undo配置信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1

Undo配置参数含义

-DNDO_MANAGEMENT undo的管理模式,分自动和手动

-UNDO_TABLESPACE 当前正在被使用的undo表

-UNDO_RETENTION 规定多长时间内,数据不能被覆盖。

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

AUTO 表示undo 为自动管理模式。

900 表示在900秒内,undo上的数据不能被覆盖。

UNDOTBS1 是当前正在使用的undo表空间。

注意:undo_retention是一个动态调整的参数,同时,Oracle无法保证在这个保留时间内的undo数据不被覆盖,当undo空间不足时,Oracle将覆盖即使未过保留期的数据以释放空间。

强制保留undo_retention时间内的数据

  • 设置undo tablespace guarantee属性
  • 设置该属性之后也可以取消
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> alter tablespace undotbs1 retention guarantee;

表空间已更改。

SQL> alter tablespace undotbs1 retention noguarantee;

表空间已更改。

Undo调优

Undo的设置取决于我们实际的生产系统。如何设置undo更合理地为我们工作呢?

Undo表空间的大小

  我们在创建一个undo表空间的使用,就指定了它的大小,这个大小一旦创建是不可变更的。设置过大,是一种浪费,设置过小,例如删除100万条记录,这些删除的记录都要临时存放到undo表空间中,如果undo的大小不能存储100万条记录,那么就会出问题。

Undo数据的存放时间

  也就是undo_retention 参数所对应的时间,undo上有数据存放时间与undo大小的密切关系。存放时间越长,需要的表空间越大。就像理发师的数量与理发师的效率的关系一样。理发师效率很高,一秒钟解决一个客户,那么就不需要太多的理发师傅。

Undo表空间的历史信息

如何合理设置undo表空间的大小和存放时间呢?那么就需要参考历史记录

关于如何设置undo表空间的大小可以参见:

【技术分享】如何确定或调整undo表空间的大小

关于如何设置undo表空间的存放时间可以参见:

undo_retention:确定最优的撤销保留时间

参考资料:oracle undo 解析

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
积分平台管理系统解决方案:具有个性化功能的积分商城对企业来说有哪些价值?
如今,互联网上使用积分的企业随处可见,积分是产品内的一种虚拟货币,可用来激励用户,是企业为了刺激用户购买力进行的一种变相营销手段或者运营策略。作为会员福利的一种,积分平台管理系统可以帮助企业提升用户粘性,增加商城页面的停留时间,具有较高的应用价值。
数商云
2023/01/03
8870
积分平台管理系统解决方案:具有个性化功能的积分商城对企业来说有哪些价值?
解决方案分享:数商云S2B2C系统如何赋能医药企业实现深度营销数字化
营销是企业的关键一环,对驱动企业经营业绩增长具有重要意义。现阶段,面对带量采购与疫情带来的双重压力与挑战,越来越多医药企业开始数字化转型实践,用有限的资源投入实现营销效果最大化,这其中,大型跨国医药企业与创新型医药企业的数字化转型需求更为迫切。
数商云市场营销总监
2022/12/14
8660
独家:行业最全小程序功能组件分析报告出炉!
企鹅号小编
2017/12/27
3.6K0
独家:行业最全小程序功能组件分析报告出炉!
开源免费的一个企业级商城系统
ShopXO: 是一款企业级免费开源商城系统,具备可视化DIY拖拽装修功能,包含以下功能特性:支持PC端、H5、多端小程序(微信、支付宝、百度、头条&抖音、QQ、快手),APP支持,多仓库管理,多商户管理,多门店管理,IM客服功能,进销存管理。
人不走空
2024/08/03
5280
开源免费的一个企业级商城系统
购物中心大数据精准营销
来源:君创工作室 “无数据,不管理!”利用数据进行精细化运营管理是购物中心的长久生存之道。未来商业竞争,业态容易照搬、商家品牌可以分享、推广活动没有什么难度,真正学不来的是数据的处理、分析和挖掘,如何
IT阅读排行榜
2018/08/13
2.6K0
购物中心大数据精准营销
如何评价员工福利积分商城平台?
一年一度的“双十一”购物狂欢节临近,各大电商在“互相争宠”的同时,各路买家也在忙着“大杀四方”,抢的“不亦乐乎”。电商平台的竞争愈发激烈,行业竞争压力激增。
数商云网络科技
2022/11/18
1.2K0
如何评价员工福利积分商城平台?
如何搭建会员系统?
前两年,受疫情影响,国内外消费品行业都受到了巨大冲击;尤其是国内,最新的统计表明2022年比2021年的消费降低了2万亿。但随着疫情的影响逐渐减弱,随着政府的各项政策引导,相信2023年的第二季度开始会迎来消费复苏。各大消费品品牌也在尝试通过数字化、全渠道整合,构建全渠道会员系统。
博阳SCRM系统
2023/03/22
2.5K0
如何搭建会员系统?
企业员工福利积分商城系统:深耕福利场景,解锁福利采购新玩法!
近年来,经济结构升级,福利待遇增长明显,单靠高薪已较难留住公司的优秀人才。如何为企业员工提供更具吸引力的员工福利计划,逐渐成为许多企业人力资源管理战略的重要环节。
数商云
2022/11/21
1.1K0
企业员工福利积分商城系统:深耕福利场景,解锁福利采购新玩法!
B2B2C多用户系统,PC+移动+APP+应用领域主流渠道融合
B2B2C多用户商城系统开发营销模式多样化,多用户系统设计为“平台自营+供应商入驻”的电商运营模式。该B2B2C系统支持佣金结算、团购、限时抢购、实时物流、售后服务、退款原路退回等基础功能,这里我们来全面解析B2B2C多用户商城平台,从渠道、产品功能、特色功能以及方案部署几个方面分析:
数商云市场营销总监
2021/02/04
6670
干货|揭秘2020年最新的24招小程序运营玩法
小程序面世三年,在电商方面,为企业创造了超过100亿的gmv,而商家们该如何落地布局,抢占小程序电商红利呢?今天,新爷从我们服务过的众多商户中,总结出了24招高流量、高裂变、高转化、高复购的最新运营玩法,给电商企业以借鉴,让你赢在2020!
云店加小程序分享
2020/04/30
2.4K0
生鲜物流行业电商平台数字化转型解决方案
我国生鲜食品电子商务市场发展迅速。2018年,生鲜食品市场交易规模2000亿元。2016-2017年市场虽迎来洗牌期,大量中小型生鲜电商活倒闭或被并购,市场处于预冷阶段。与此同时,阿里巴巴京东等电子商务巨头纷纷入驻该局,加大供应链、物流等基础设施投资,带来线上线下一体化的新零售模式。2019年以来,生鲜新零售模式逐渐归于评级,从疯狂扩张步入展现收缩调整阶段,与此同时前置仓、社区团购等模式发展较为火热,未来随着生鲜电商模式的城市,网购生鲜用户覆盖数量愈发广泛以及技术成熟、生鲜电商供应链的升级,生鲜电商行业仍旧保持快速发展。
数商云网络科技
2022/03/23
1.7K0
生鲜物流行业电商平台数字化转型解决方案
从小白做起怎样运营好你的小程序商城
如今小程序+社交电商已经成为电商行业的标配,也成为各大公众号平台实现变现的新型方式。而CRMEB全新推出小程序社交电商解决方案,就是为了帮助商家搭建以“小程序+公众号”核心的商城营销系统,同时从4个维度帮助商家快速聚合粉丝流量,实现精准变现。
知道
2019/07/04
1.3K0
从小白做起怎样运营好你的小程序商城
积分商城系统开发方式_注意事项_源码借鉴_OctShop源码
互联网的快速发展,特别是各种移动上网设备的普及,使移动互联网得到了非常强劲迅速的发展,随之出现了各种很有趣味性好玩的新型商业模式,同时也涌现出了很多商家营销渠道,让商家与消费者粉丝建立起强关系,使商家与粉丝活跃起来以达到更折的销售,而开发一套完善的积分商城系统是一个比较好的选择,它可以更好的助力 企业进行产品销售,提高销售业绩。
OctShop大型商城源码
2022/05/30
6250
积分商城系统开发方式_注意事项_源码借鉴_OctShop源码
积分的区块链Token化方案
中心化积分方案就是以关系数据库RDBMS为基础,将用户的积分情况记录到数据库中的一种传统方案;而相对来说区块链积分方案是将积分Token话,并使用区块链技术去中心化,去信任化和不可篡改的特点来实现积分。以下从几个方向对中心化积分的方案和区块链积分方案进行对比:
深蓝studyzy
2022/06/16
1.3K0
积分的区块链Token化方案
如何在一天内帮助蛋糕店快速装修电商小程序?
作为小程序开发商,你最怕听到客户说什么?“这个真的太难了,我们不会用啊。”或是“这个操作也太复杂了吧,得耽误不少事情。”于是我们在不断简化操作,给客户提供个性化服务的道路上越走越远,越走越用心。
微盛网络
2019/09/16
1.2K0
如何在一天内帮助蛋糕店快速装修电商小程序?
除了做梦,传统商家如何让10亿用户帮忙卖货?
分销是电商业务运营环节中的重要链条,而小程序分销采用了灵活且强大的裂变式、多级分销的模式,背靠10亿级庞大的用户量,可以帮助商家以最低的成本、最快的速度吸引更多的用户成为自己的分销商帮忙卖货,让分销商把自己的产品迅速地占领朋友圈及各种社交平台,大规模提升自己的销量。
极乐君
2019/04/19
5270
数商云S2B2C商城分销功能详解,赋能美妆行业分销渠道管理更便捷!
近年来,我国美妆行业市场发展蓬勃,根据前瞻产业研究院发布数据显示,到2022年,我国美妆行业市场规模将达到5000亿元。而伴随着云计算、5G、大数据等新技术的发展,全球美妆企业不断通过数字化打造市场竞争力,我国美妆行业市场竞争日益激烈,如何加快数字化转型升级,已成为美妆企业面临的重要挑战。
数商云市场营销总监
2022/10/25
5920
零伽壹链改案例:区块链赋能供应链应用 新电商逆袭成长
近十年来,全球电子商务迎来了历史性的迅猛增长,无数人共同参与及见证了这场史无前例的“大跃进”,并且势头仍在持续。利用网络实现商务交易等业务,跨境电商、境内电商、B2B、B2C、细分品类商城、社交电商……等,丰富且便利了人们的多元化消费生活。
用户7573724
2021/06/30
2.2K0
零伽壹链改案例:区块链赋能供应链应用 新电商逆袭成长
交易赋能,数字化助力渠道模式新升级 | 爱分析报告
“人、货、场”,一直以来都是消费品零售的核心要素,尤其是“人”的数字化转型相对较难。营销一体化、私域运营,分别从数据、承接转化角度,对“人”进行了升级;与此同时,渠道数字化则通过关键角色的交易赋能,更多聚焦于“货”的升级,而门店,则同时运用营销一体化工具和私域运营工具等手段,兼顾“人、货、场”要素的升级。
爱分析ifenxi
2022/12/27
1.1K0
小程序商城系统源码_多用户小程序商城开发多少钱_OctShop源码
电商行业不断的发展壮大,市场份额越来越大的形势下,越来越多的企业开始开发自己的商城系统,搭建自己的电商平台,而这其中的一些大中型企业直接就开发像京东淘宝类似的多用户商城系统或多用户商城小程序,来实现将自己的交易业务搬到线上平台,并且可以让行业合作伙伴、商家一起入驻自己的电商平台,开通店铺不同类别的店铺,进行线上交易。B2BC+O2O融合式的多用户商城系统,打通企业或商家线上下线全场景交易渠道。
OctShop大型商城源码
2022/06/01
3.4K0
小程序商城系统源码_多用户小程序商城开发多少钱_OctShop源码
推荐阅读
相关推荐
积分平台管理系统解决方案:具有个性化功能的积分商城对企业来说有哪些价值?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验