Undo自动管理与手动管理

undo段自动管理
SQL> show parameter undo_management

将undo段改为手工管理
SQL> alter system set undo_management=manual scope=spfile;
SQL> startup force;

SQL> show parameter undo
SQL> select * from v$rollname;

SQL> create undo tablespace undotbs2 datafile '/u01/app/oracle/oradata/orcl/undotbs2.dbf' size 5m;
SQL> create rollback segment u1 tablespace undotbs2;
SQL> alter rollback segment u1 online;

SQL> select * from v$rollname;

SQL> set transaction use rollback segment u1;

监视还原

空间不足

SQL> create table big_t as select * from dba_objects;
SQL> insert into big_t select * from big_t;
/
/
SQL> commit;

SQL> select name from v$tablespace;
SQL> alter system set undo_tablespace='UNDOTBS2';

SQL> show user

SQL> delete big_t;

快照太旧

快照太旧错误实验:

当undo空间不足的时候,会覆盖commit事务所占用的undo数据,当进行查询的时候,会报ORA-1555,例如:

conn /as sysdba
grant select on dba_objects to scott;
grant select on v_$transaction to scott;
grant select on v_$session to scott;
grant select on v_$mystat to scott;
grant select on v_$database to scott;

将undo表空间的大小resize到30M

create undo tablespace undotbs3 datafile '/u01/app/oracle/oradata/orcl/undotbs3.dbf' size 30M;

alter system set undo_tablespace=undotbs3;

计算一下30M的undo表空间undo块的数量:

select (30*1024*1024)/8192 undo_num from dual;

UNDO_NUM
-----------------
3840

conn scott/tiger
create table t1 as select * from dba_objects;

查看当前系统的scn号:

select current_scn from v$database;

在696246时刻,t1表中的数量为:

select count(*) from t1;

将t1表中的数据删除:

delete t1;--------------先不要提交

查看当前会话的delete操作生成的undo块的数量:

select used_ublk from v$transaction where addr = (select taddr from v$session where sid = (select sid from v$mystat where rownum = 1));

commit;

这个时候,通过闪回查询来查看1127829这一点的数据:

select count(*) from t1 as of scn 1127829;

再开一个会话:

conn scott/tiger

create table t2 as select * from dba_objects;

delete t2;

查看当前会话的delete操作生成的undo块的数量:

select used_ublk from v$transaction where addr = (select taddr from v$session where sid = (select sid from v$mystat where rownum = 1));

commit;

这个时候,通过闪回查询来查看1127829这一点的数据:

先清一下内存:

conn / as sysdba

alter system flush buffer_cache;

alter system flush shared_pool;

查看1127829这一点的数据:

select count(*) from t1 as of scn 1127829;
*
ERROR at line 1:
ORA-01555: snapshot too old: rollback segment number 2 with name
"_SYSSMU2_967517682$" too small

报错,由于undo表空间太小,第一个会话中的undo数据被覆盖,所以报快照太旧错误

undo_retention

1、对于UNDO表空间的数据文件属性为autoextensible,则undo_retenion参数必须设置
UNDO信息将至少保留至undo_retention参数设定的值内,但UNDO表空间将会自动扩展

2、对于固定UNDO表空间,将会通过表空间的剩余空间来最大限度保留UNDO信息。如果FIXED UNDO
表空间没有对保留时间作GUARANTEE(alter tablespace xxx retention guarantee;),则undo_retention
参数将不会起作用(警告:如果设置UNDO表空间为retention guarantee,则未过期的数据不会被复写,如
果表空间不够则会导致DML操作失败或者transation挂起)

Guaranteeing Undo Retention
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;

观察undo数据块信息,业务高峰期时的数据
alter session set nsl_date_format='yyyy-mm-dd hh24:mi:ss';
select begin_time,end_time,undoblks from v$undostat;

UNDO:

不能直接查询undo块,可以查询CR块
操作块+Undo块=CR块(读一致性块)

grant select on v$database to scott;
conn scott/tiger;

create table t(id number);
insert into d values(1);
select * from d;
select current_scn from v$database;

insert into d values(2);
select * from d;
select * from d as of scn 1604457;

conn / as sysdba;
select tablespace_name, contents from dba_tablespaces;

conn scott/tiger;
create table tt tablespace undotbs1 as select * from dept;--error

conn / as sysdba;
show parameter undo_retention

OCA读书笔记(10) - 管理UNDO数据的更多相关文章

  1. OCA读书笔记(9) - 管理数据同步

    9.Managing Data Concurrency 描述锁机制以及oracle如何管理数据一致性监控和解决锁冲突 管理数据的并发--管理锁数据的不一致:脏读更改丢失幻影读 脏读:数据是指事务T2修 ...

  2. OCA读书笔记(7) - 管理数据库存储结构

    7.Managing Database Storage Structures 逻辑结构 数据库的存储结构有物理结构和逻辑结构组成的 物理结构:物理上,oracle是由一些操作系统文件组成的 SQL&g ...

  3. OCA读书笔记(8) - 管理用户安全

    创建用户:create user +用户 default tablespace + 表空间名 identified + 验证方式 SQL> create user easthome profil ...

  4. OCA读书笔记(5) - 管理ASM实例

    Objectives:Describe the benefits of using ASMManage the ASM instanceCreate and drop ASM disk groupsE ...

  5. OCA读书笔记(4) - 管理数据库实例

    Objectives: •Start and stop the Oracle database and components •Use Oracle Enterprise Manager •Acces ...

  6. 强化学习读书笔记 - 10 - on-policy控制的近似方法

    强化学习读书笔记 - 10 - on-policy控制的近似方法 学习笔记: Reinforcement Learning: An Introduction, Richard S. Sutton an ...

  7. OCP读书笔记(10) - 使用闪回技术I

    使用闪回技术查询数据 闪回查询:就是查询表在过去某个时间点的数据,所用到的技术就是undo数据 SQL> conn scott/tiger 创建测试表 SQL> create table ...

  8. 《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理

    1.表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的.每个B树或者堆,在sysindexes里面都有一条记录相对应.SQL Server2005以 ...

  9. 数据段描述符和代码段描述符(一)——《x86汇编语言:从实模式到保护模式》读书笔记10

    一.段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符.80X86中有各种各样的段描述符,下图展示了它们的分类. 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住 ...

随机推荐

  1. 2014年国内经常使用移动client推送服务介绍和比較

    经过5年移动互联网的迅速发展,如今推送服务方面国内已经出现了非常多产品,比如极光推送,个推,一推,百度推送,友盟推送等,我们在选择推送服务时,首先排除了付费的推送服务,重点调查了免费的推送服务.   ...

  2. RedHat Linux 5.5安装JDK+Tomcat并部署Java项目

    与大家分享下RedHat Linux 5.5安装JDK+Tomcat并部署Java项目的步骤,希望对大家有用. 1.下载并安装jdk 虚拟机中安装RedHat Linux 5.5 64位企业版, 这里 ...

  3. android的JNI标准 android的NDK

    转载的! Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) ...

  4. winform利用代码将控件置于顶端底端

    有时,我们可能动态的添加控件,并准备将其置于对顶层或最底层.实现的方法有两个: 一种方法是在WinForm窗体中使用Controls控件集的SetChildIndex方法,该方法将子控件设定为指定的索 ...

  5. hdu4712 Hamming Distance

    Hamming Distance Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) To ...

  6. LA 3942 Remember the Word(前缀树&树上DP)

    3942 - Remember the Word Neal is very curious about combinatorial problems, and now here comes a pro ...

  7. HTML学习笔记(七)

    1.       假设想让div中的内容(content)垂直居中,能够将line-height的值设置与div的高度相等来实现. 2.       超伪类链接的四种形式: watermark/2/t ...

  8. bootbox api

    bootbox是boostrap集成的弹窗,基本能完成后台系统的需求,下面是一些使用方法 1.bootbox.alert bootbox.alert使用方法主要有三种 直接传内容 bootbox.al ...

  9. 软考之路(四)---软件project一 概念模型,逻辑模型,物理模型

    自从接触到数据库到如今这三个概念大家理解的还有些不清楚,今天来为大家解答疑惑,共同提高,结合生活理解 概念模型        概念模型就是在了解了用户的需求,用户的业务领域工作情况以后,经过分析和总结 ...

  10. 关于CopyU!的常见问题解答

    拷优(CopyU!)常见问题解答 本常见问题解答列举了一些常见的疑问及其解释,如果您对CopyU!有任何问题,请您首先查看本解答! 本解答将会保持随时更新! 一.使用篇:     1.问:我的杀毒软件 ...