oracle 撤销回退,Oracle 回滚(ROLLBACK)和撤销(UNDO)
五、计算UNDO表空间的大小
计算公式:
MAX(undoblks)/600 * MAX(maxquerylen)位于v$undostat
* db_block_size位于v$parameter
--创建演示环境
SQL> INSERT INTO tb_test SELECT employee_id,first_name FROM hr.employees;
107 rows created
SQL> INSERT INTO tb_test SELECT * from tb_test;
109 rows created.
--多次执行上述命令,下面是的tb_test表中的记录数
SQL> /
892928 rows created.
SQL> COMMIT;
Commit complete.
--查看当前undo表空间的大小
SQL> SELECT t.name,d.name,d.bytes/1024/1024 as TotalSize ,t.flashback_on,d.status
2FROM v$tablespace t
3JOIN v$datafile d
4USING (ts#)
5WHERE t.name LIKE 'UNDO%';
NAMENAMETOTALSIZE FLA STATUS
--------------------------------- ------------------------------------------- ---------- --- -------
UNDOTBS1/u01/app/Oracle/oradata/orcl/undotbs01.dbf30 YES ONLINE
--将undo表空间修改为RETENTION GUARANTEE及关闭自动扩展
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
Tablespace altered.
SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf' AUTOEXTEND OFF;
Database altered.
SQL> SELECT tablespace_name,contents,retention FROM dba_tablespaces
2WHERE tablespace_name LIKE 'UNDO%';
TABLESPACE_NAMECONTENTSRETENTION
------------------------------ --------- -----------
UNDOTBS1UNDOGUARANTEE
--修改保留时间为分钟
SQL> ALTER SYSTEM SET undo_retention = 120;
System altered.
--循环删除tb_test中的记录,提示undo表空间空间容量不够
SQL> BEGIN
2FOR i IN 1..1000
3LOOP
4DELETE FROM tb_test WHERE rownum < 1001;
5COMMIT;
6END LOOP;
7END;
8/
BEGIN
*
ERROR at line 1:
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'
ORA-06512: at line 4
--修改回话的时间参数
SQL> ALTER SESSION SET nls_date_format='yyyy-mm-dd HH24:MI:SS';
Session altered.
--查看v$undostat视图,获得相关信息
SQL> SELECT begin_time,end_time,undoblks,maxquerylen, ssolderrcnt,nospaceerrcnt
2FROM v$undostat;
BEGIN_TIMEEND_TIMEUNDOBLKS MAXQUERYLEN SSOLDERRCNT NOSPACEERRCNT
------------------- ------------------- ---------- ----------- ----------- -------------
2010-07-12 19:12:18 2010-07-12 19:22:186000
2010-07-12 19:02:18 2010-07-12 19:12:189000
2010-07-12 18:52:18 2010-07-12 19:02:1847000
2010-07-12 18:42:18 2010-07-12 18:52:182136001
2010-07-12 18:32:18 2010-07-12 18:42:186000
2010-07-12 18:22:18 2010-07-12 18:32:18413154100
2010-07-12 18:12:18 2010-07-12 18:22:1817993800
2010-07-12 18:02:18 2010-07-12 18:12:186000
--计算undo表空间所需的大小
SQL> SELECT (
2(SELECT MAX(undoblks)/600 * MAX(maxquerylen) FROM v$undostat) *
3(SELECT value FROM v$parameter WHERE name = 'db_block_size'))/1024/1024 as Need_Size
4FROM dual;
NEED_SIZE
----------
42.8590625
--取消撤销保留选项
SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;
Tablespace altered
六、UNDO配额
对于超长的事务或不当的SQL脚本将耗用大量的UNDO表空间,使用UNDO表空间配额可以提高资源的利用率
对于不同组的用户可以分配不同的最大UNDO表空间配额
当某个组超出了最大的资源限制,则该组不允许新的事务产生,直到当前组的UNDO表空间释放或终止
七、撤销常见的两个错误
1.ORA-1555 snapshot too old快照过旧错误的解决
配置合适的保留时间(undo_retention)
调整undo表空间的大小
考虑保证撤销保留的使用(retention guarantee)
2.ORA-30036 unable to extend segment in undo tablespace无法扩展撤销表空间内的撤销段
调整undo表空间的大小
确保大量的事务能够周期性的提交
八、UNDO涉及的几个相关视图:
V$TRANSACTION
V$SESSION
DBA_ROLLBACK_SEGS--显示所有的segments
V$ROLLSTAT
V$UNDOSTAT
V$ROLLNAME--显示当前在线的segments
关于UNDO涉及视图的更多信息,请参考oracle的在线文档
oracle 撤销回退,Oracle 回滚(ROLLBACK)和撤销(UNDO)相关推荐
- oracle一个循环中回滚继续,oracle回滚段
http://hi.baidu.com/ipeipei/blog/item/34f84316f7126d4a20a4e950.html 1. 概述 本文主要从回滚段的原理,分配和使用,以及回滚段的相关 ...
- 回滚 rollback
为了保证在应用程序.数据库或系统出现错误后,数据库能够被还原,以保证数据库的完整性,所以需要进行回滚. 回滚(rollback)就是在事务提交之前将数据库数据恢复到事务修改之前数据库数据状态. 例如, ...
- Git 回滚Rollback
Git 回滚Rollback 撤销修改 撤销修改 工作区放弃修改 use "git checkout -- <file>..." to discard changes ...
- 【Git】Git 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )
文章目录 一.查看提交记录 git log 1.查看详细提交记录 2.查看简略提交记录 二.版本回滚 git reset 1.Git 中的版本表示 HEAD~1 2.版本库代码回滚 三.撤销回滚 1. ...
- oracle按照时间点回退,【Oracle】查看事务回滚的时间
首先,我是做BI的,在工作中偶尔会出现一些特殊情况,比如突然在某天ETL日增量调度的时候一个简单的插入操作卡住不动几小时都过不去,平时可能30分钟左右. 可能是资源征用导致DataStage资源分配不 ...
- oracle 事务未正常回滚,Spring事务没有回滚异常(Oracle JNDI数据源)
我在 Spring MVC 3.1项目中使用基于注释的事务,并且在抛出异常时我的事务没有被回滚. 这是我的服务代码 @Service public class ImportService { @Aut ...
- 事件回滚 rollback
Connection. rollback方法-事务回滚 LDBZXD 2015-12-09 16:33:53 4266 收藏 文章标签: DB 事务 数据库 版权声明:本文为博主原创文章,遵循CC 4 ...
- Git reset(回滚) 和 revert(撤销)(图文详解)
1.序 在利用GIT实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法. reset:删除直到XXX ...
- android studio怎么回退,如何回滚已经commit的代码(Android Studio)
01 项目开发中,时常会遇到这样一种情况,代码已经commit(非push)上去了,但此时发现有误,不想提交了,如何回滚? 这点对于新手git的开发者还是比较陌生的. 今天和大家分享这个知识点,如果你 ...
最新文章
- TENSORFLOW变量作用域(VARIABLE SCOPE)
- 渡鸦创始人离职百度后的下一个“真相”
- 【构造】CF12E Start of the season(神奇的构造)难度⭐⭐⭐
- 数据库系统概论:第十一章 并发控制
- 最优化理论与方法(part5)--函数和微分
- static和瞬态_具有瞬态属性的视图对象的钝化和激活
- C#格式化字符串净化代码的方法
- 如约而至 Nexus 6 的 Android 7.1.1 已经上线
- 【随笔】About QWERTY
- c语言能让制表符空9个字符码,C语言入门9-1-分类函数
- [技术分享]【DLI跨源】当DLI遇见MongoDB
- 《『若水新闻』客户端开发教程》——04.设计新闻分类UI(2)
- 20164317《网络对抗技术》Exp3 免杀原理与实践
- mysql 主从的几个参数
- 人人网登陆(selenium、PtantomJS结合)
- kotlin学习---Field
- 弱占优策略--Weakly Dominant Strategy
- 最近自己安装CDH5.X版本时发现,CM包和parcels包无法下载了。
- 做程序员10年有感,程序员必须要懂的---转自java诺曼底_kleen
- 图灵机的逻辑等价形式——lambda演算简介