`
collinsxu
  • 浏览: 22381 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

oracle undo 表空间

阅读更多
undo 表空间


ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS1;

show parameter undo_tablespace

SELECT a.name,b.status FROM   v$rollname a, v$rollstat b WHERE  a.name IN ( SELECT segment_name FROM   dba_segments WHERE  tablespace_name = 'UNDOTBS2' ) AND a.usn = b.usn;(查看当前Undo表空间)

drop tablespace undotbs2 including contents and datafiles;




select tablespace_name from dba_tablespaces where contents='UNDO';

查看所有undo tablespace

drop tablespace undotbs1 including contents and datafiles;

删除undo tablespace

SELECT a.name,b.status FROM   v$rollname a, v$rollstat b WHERE  a.name IN ( SELECT segment_name FROM   dba_segments WHERE  tablespace_name = 'UNDOTBS1' ) AND a.usn = b.usn;

查看旧的undo文件是否还在使用.


更换temp表空间(以前temp现在改为temp2)

alter database default temporary tablespace temp2;

查询新建的temp表空间是否在使用
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';


drop tablespace temp including contents and datafiles;





UNDO表空间用于存放UNDO数据,当执行DML操作(insert、update、delete)的时候,oracle会将这些操作的旧数据写入到UNDO段。

UNDO数据也称为回滚数据,用于确保数据的一致性。作用包括:
1、回退事务
2、读一致性
3、事务恢复
4、闪回查询



9i开始,管理UNDO数据可以使用UNDO表空间,也可以使用回滚段。10g开始,oracle已经放弃使用回滚段。

用于undo管理的参数:
1、UNDO_MANAGEMENT
用于指定undo数据的管理方式。如果使用自动管理,必须设置为AUTO;如果手动管理,必须设置为MANUAL。
使用自动管理的时候,oracle会使用UNDO表空间管理UNDO数据;使用手动管理时,oracle会使用回滚段管理UNDO数据。
如果使用自动管理模式,必须建立UNDO表空间,并且配置UNDO_TABLESPACE参数,否则oracle会使用SYSTEM回滚段存放UNDO纪录,并在警告日志中纪录提示。

2、UNDO_TABLESPACE
用于指定例程所要使用的UNDO表空间。设置的时候,必须保证该表空间存在,否则会导致例程启动失败。
使用RAC的时候,因为一个UNDO不能由多个例程同时使用,所以必须为每个例程配置一个独立的UNDO表空间。

3、UNDO_RETENTION
用于控制UNDO数据的最大保留时间,其默认值为900秒。从9i开始,通过配置该初始化参数,可以指定UNDO数据的保留时间,从而确定闪回查询可以查看到的最早时间点。

建立UNDO表空间
1、使用CREATE DATABASE命令建立UNDO表空间
如果使用的是UNDO管理模式,但是没有指定UNDO TABLESPACE,那么建立数据库的时候oracle会自动生成名称为SYS_UNDOTBS的UNDO表空间。

2、使用CREATE UNDO TABLESPACE 命令建立UNDO表空间
建立数据库以后,可以使用该命令建立UNDO表空间。

修改UNDO表空间
当事务用尽UNDO表空间后,增加数据文件:
ALTER TABLESPACE ... ADD DATAFILE;

当UNDO表空间所在磁盘填满时,移动数据文件到其他磁盘:
ALTER TABLESPACE ...RENAME DATAFILE;

当在OPEN状态下移动UNDO表空间时,可以使表空间脱机/联机:
ALTER TABLESPACE ... OFFLINE/ONLINE;

当数据库处于归档模式时,备份UNDO表空间:
ALTER TABLESPACE ... BEGIN BACKUP/END BACKUP

切换UNDO表空间
启动并打开oracle数据库后,同一时刻只能使用一个UNDO表空间。可以切换UNDO表空间:
ALTER SYSTEM SET undo_tablespace=undotbs02;

删除UNDO表空间
当前使用的UNDO表空间不能被删除,如果要删除当前实例使用的UNDO,需要先切换,然后删除:
DROP TABLESPACE undotbs01 including contents and datafiles;

监控UNDO表空间的使用:
1、确定当前正在使用的undo表空间:
show parameter undo_tablespace
NAME                                 TYPE    VALUE                                
------------------------------------ --------------------------------   ------------------------------       
undo_tablespace                      string    UNDOTBS1       
                          
2、显示数据库的所有UNDO表空间:
SQL> select tablespace_name from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME
------------------------------
UNDOTBS1

3、显示UNDO表空间统计信息:
SQL> select to_char(begin_time,'hh24:mi:ss') begin_time,to_char(end_time,'hh24:mi:ss') end_time,undoblks from v$undostat where rownum < 4;
BEGIN_TIME                                                                  END_TIME  UNDOBLKS
--------------------------------------------------------------------------- --------------------------------------------------------------------------- ----------
14:52:52                                                                    14:54:56  1
14:42:52                                                                    14:52:52 61
14:32:52                                                                    14:42:52 27

4、显示UNDO段统计信息:
使用自动管理模式时,oracle会在UNDO表空间上自动建立10个UNDO段。通过查询动态性能视图V$ROLLNAME,可以显示所有联机UNDO的名称;通过查询动态性能视图V$ROLLSTAT可以显示UNDO段的统计信息。
SQL> select a.name,b.xacts,b.writes,b.extents from v$rollname a,v$rollstat b where a.usn = b.usn;

NAME                                XACTS     WRITES    EXTENTS
------------------------------ ---------- ---------- ----------
SYSTEM                                  0     176730          6
_SYSSMU1$                               0  524055286          6
_SYSSMU2$                               0  555250470          3
_SYSSMU3$                               0 1477369722          6
_SYSSMU4$                               0  281773370          5
_SYSSMU5$                               0  149888652          2
_SYSSMU6$                               0  101947936          2
_SYSSMU7$                               0  158121686          2
_SYSSMU8$                               0  203385052          3
_SYSSMU9$                               0   84385448          3
_SYSSMU10$                              0  426643090          4

xacts用于标示undo段所包含的活动事务个数,writes用于标示undo段上所写入的字节数,extents用于标示undo段的区个数。

5、显示活动事务信息:
SQL> select a.username,b.name,c.used_ublk from v$session a,v$rollname b,v$transaction c where a.saddr=c.ses_addr and b.usn = c.xidusn;

6、显示UNDO区信息:
SQL> select extent_id,bytes,status from dba_undo_extents where segment_name='_SYSSMU10$';

EXTENT_ID      BYTES STATUS
---------- ---------- ---------
         0      65536 UNEXPIRED
         1      65536 UNEXPIRED
         2    1048576 EXPIRED
         3    1048576 UNEXPIRED
分享到:
评论

相关推荐

    oracle Undo表空间管理

    oracle Undo表空间管理,oracle 学习人员必看的不可缺少的资料。

    脚本-Oracle释放过度使用的Undo表空间

    ### 关于Oracle释放过度使用的Undo表空间的知识点 在Oracle数据库管理中,Undo表空间扮演着极其重要的角色。它主要用于存储事务处理过程中产生的Undo记录,这些记录对于事务回滚、一致性读取以及恢复操作至关重要。...

    Oracle的Temp表空间和UNDO表空间的处理

    ### Oracle的Temp表空间与UNDO表空间处理详解 #### 一、Temp表空间处理 在Oracle数据库中,Temp表空间主要用于存储临时对象,如排序、分组等操作产生的临时数据。这些操作可能会导致Temp表空间迅速增大。然而,...

    oracle 收缩undo表空间

    ### Oracle收缩Undo表空间 #### 一、概述 在Oracle数据库管理中,有时需要对Undo表空间进行管理和优化。特别是当Undo表空间因为历史数据积累而变得过大时,可能会影响数据库性能。本文将详细介绍如何通过新建一个...

    收缩Oracle数据库的undo表空间

    演示如何收缩Oracle数据库的undo表空间

    地震前兆Oracle数据库UNDO表空间持续增长修复.pdf

    接着,当日志错误排除后,发现UNDO表空间仍在增长,通过v$transaction视图发现SMON进程(System Monitor进程)在长时间执行事务,消耗大量UNDO空间。尝试通过ALTER SESSION命令结束SMON会话无效,且考虑到数据库安全...

    Oracle中重做undo表空间

    当事务开始时,系统会为事务分配一段undo空间来记录它的更改。当事务提交或回滚时,这些记录的undo信息会根据需要保留一定时间,这个时间段称为UNDO_RETENTION参数定义的保留期。 2. **重做日志与回滚操作** 重做...

    oracle 9i UNDO表空间数据文件丢失恢复

    ### Oracle 9i UNDO 表空间数据文件丢失恢复知识点详解 #### 一、概述 在Oracle数据库管理中,UNDO表空间是非常重要的组成部分之一,主要用于存储事务处理期间的回滚信息。当UNDO表空间的数据文件丢失时,可能会...

    数据库undo表空间问题集锦

    在Oracle数据库系统中,"undo表空间"是一个至关重要的组成部分,它主要负责存储事务的回滚(rollback)信息。本文将深入探讨undo表空间的概念、作用、管理以及常见问题的处理,帮助你全面理解并有效地解决数据库undo...

    ORACLE的UNDO表空间

    ORACLE的UNDO表空间 ORACLE的UNDO表空间是Oracle数据库中一个非常重要的组件,playing a crucial role in maintaining data consistency and providing a way to undo changes made to the database. 在本节中,...

    Oracle临时表空间满的解决步骤

    解决 Oracle 临时表空间满的问题需要通过查看当前数据库的默认临时表空间、查看当前临时表空间的大小、创建新的临时表空间、将新建的临时表空间设置为数据库的默认临时表空间、删除原来的临时表空间、创建新的临时表...

    oracle undo

    undo 段急剧增大是指 undo 段的空间急剧增加,从而导致 undo 表空间的扩展问题。这种问题的原因是由于事务没有提交,或者是undo_retention 时间设置不当,导致 undo 块不能被重用。 解决 undo 段急剧增大问题的方法...

    undo表空间恢复

    标题和描述均提到了“undo表空间恢复”,这在Oracle数据库管理中是一个关键主题,尤其对于数据恢复和事务处理有着重要影响。以下是对这一知识点的深入解析: ### 一、Undo表空间概述 Undo表空间是Oracle数据库中...

    oracle undo详解

    Oracle提供自动Undo管理,通过设置UNDO_MANAGEMENT=AUTO和UNDO_TABLESPACE=UNDOTBS1,数据库将自动处理Undo空间的管理。这样可以减少DBA的维护工作,但仍然需要根据系统负载和事务特性来合理调整Undo表空间的大小,...

    Oracle 12c中的表空间管理、用户和角色、临时Undo.pdf

    在Oracle 12c数据库中,表空间管理、用户和角色、临时Undo是数据库管理的关键组成部分。以下是对这些内容的详细解释和操作方法: 一、创建表空间 在Oracle 12c中,创建表空间主要涉及到声明一个新的逻辑区域,用于...

    如何计算自动管理的UNDO表空间大小

     一定要意识到,如果 undo 表空间中存在空间压力时,我们不保证前镜像一定会保留这么长时间。  因此,以下公式可用于计算佳 undo 表空间大小:  从 Oracle 10g 开始,您可以选择使用 GUARANTEE 选项,以确保在...

    oracle创建表空间用户等

    ### Oracle 创建表空间、用户及分配权限详解 在Oracle数据库管理中,创建表空间和用户是常见的基础操作之一。本文将详细介绍如何在Oracle数据库中创建表空间、创建用户并分配相应的权限,以及如何设置表空间的自...

    相克军 ORACLE 讲座 深度剖析UNDO段 笔记.doc

    UNDO表空间用来存放改变前的旧值。里面也有段区块,ORACLE自动建立生成、自动使用UNDO段。 作为高级别的DBA是需要知道ORACLE如何使用UNDO段的。 1 Undo表空间及管理方式 ORACLE开始一个事务的时候,会用到表空间。...

    管理undo表空间全面分析详解

    通过对DML语句与undo的关系、undo的作用及其管理方式的深入探讨,我们可以清楚地认识到undo表空间在Oracle数据库中的重要性。无论是提供一致性读、支持事务回滚还是实例恢复,undo表空间都是保证数据完整性和系统...

Global site tag (gtag.js) - Google Analytics