UNDO segment深入解析

Undo Segment深入解析

  在undo自动管理时,设置了undo_retention以后,undo块就存在四种状态。

Active:表示正在使用该undo的事务还没有提交或回滚。
Inactive:表示该undo上没有活动的事务,该状态的undo可以被其他事务覆盖。
Expired:表示该undo持续inactive的时间超过undo_retention所指定的时间。
Freed:表示该undo块内容是空的,从来没有被使用过

Undo Retention

     After a transaction is committed, undo data is no longer needed for rollback or transaction recovery purposes. However, for consistent read purposes, long-running queries may require this old undo information for producing older images of data blocks. Furthermore, the success of several Oracle Flashback features can also depend upon the availability of older undo information. For these reasons, it is desirable to retain the old undo information for as long as possible.
When automatic undo management is enabled, there is always a current undo retention period, which is the minimum amount of time that Oracle Database attempts to retain old undo information before overwriting it. Old (committed) undo information that is older than the current undo retention period is said to be expired. Old undo information with an age that is less than the current undo retention period is said to be unexpired.
Oracle Database automatically tunes the undo retention period based on undo tablespace size and system activity. You can specify a minimum undo retention period (in seconds) by setting the UNDO_RETENTION initialization parameter. The database makes its best effort to honor the specified minimum undo retention period, provided that the undo tablespace has space available for new transactions. When available space for new transactions becomes short, the database begins to overwrite expired undo. If the undo tablespace has no space for new transactions after all expired undo is overwritten, the database may begin overwriting unexpired undo information. If any of this overwritten undo information is required for consistent read in a current long-running query, the query could fail with the snapshot too old error message.
The following points explain the exact impact of the UNDO_RETENTION parameter on undo retention:
The UNDO_RETENTION parameter is ignored for a fixed size undo tablespace. The database may overwrite unexpired undo information when tablespace space becomes low.
For an undo tablespace with the AUTOEXTEND option enabled, the database attempts to honor the minimum retention period specified by UNDO_RETENTION. When space is low, instead of overwriting unexpired undo information, the tablespace auto-extends. If the MAXSIZE clause is specified for an auto-extending undo tablespace, when the maximum size is reached, the database may begin to overwrite unexpired undo information.
Automatic Tuning of Undo Retention
Oracle Database automatically tunes the undo retention period based on how the undo tablespace is configured.
If the undo tablespace is fixed size, the database tunes the retention period for the best possible undo retention for that tablespace size and the current system load. This tuned retention period can be significantly greater than the specified minimum retention period.
If the undo tablespace is configured with the AUTOEXTEND option, the database tunes the undo retention period to be somewhat longer than the longest-running query on the system at that time. Again, this tuned retention period can be greater than the specified minimum retention period.
Note:
Automatic tuning of undo retention is not supported for LOBs. This is because undo information for LOBs is stored in the segment itself and not in the undo tablespace. For LOBs, the database attempts to honor the minimum undo retention period specified by UNDO_RETENTION. However, if space becomes low, unexpired LOB undo information may be overwritten.
You can determine the current retention period by querying the TUNED_UNDORETENTION column of the V$UNDOSTAT view. This view contains one row for each 10-minute statistics collection interval over the last 4 days. (Beyond 4 days, the data is available in the DBA_HIST_UNDOSTAT view.) TUNED_UNDORETENTION is given in seconds.
select to_char(begin_time, ‘DD-MON-RR HH24:MI‘) begin_time,
to_char(end_time, ‘DD-MON-RR HH24:MI‘) end_time, tuned_undoretention
from v$undostat order by end_time;
BEGIN_TIME      END_TIME        TUNED_UNDORETENTION
--------------- --------------- -------------------
04-FEB-05 00:01 04-FEB-05 00:11               12100
      ...                                          
07-FEB-05 23:21 07-FEB-05 23:31               86700
07-FEB-05 23:31 07-FEB-05 23:41               86700
07-FEB-05 23:41 07-FEB-05 23:51               86700
07-FEB-05 23:51 07-FEB-05 23:52               86700
576 rows selected.

   回滚段自动管理模式下UNDO block分配算法:

1、如果当前extent有空闲的数据块,则使用当前extent

2、如果当前extent的下一个extent已经处于过期(expired)状态,那么环绕(wrap)到一个extent,然后使用该extent的第一个数据块。

3、如果下一个extent没有expired,则从undo tablespace中分配空间。如果有剩余空间则使用新分配extent的第一个数据块。此时undo tablespace的使用率开始增加。

4、如果没有剩余空闲的extent,则从offline状态的回滚段中偷取(steal)过期的extent,加入当前回滚段,并使用第一个数据块。

5、如果offline状态的回滚段中没有expired extent,则从online状态的回滚段中偷取(steal)过期区加入到当前的回滚段中,并使用extent中的第一个数据块。

6、如果undo tablespace可以扩展,则扩展undo tablespace,并将新extent加入到当前的回滚段中,同时使用第一个数据块,此时undo所占的操作系统空间开始增加。

7、如果undo tablespace 不能扩展,则自动调整(下降幅度为10%)回滚段的保留时间,然后偷取在更短保留时间下的未过期的extent,如果还未找到过期的extent,则继续以10%的速度减少回滚段的保留时间,重复几次。

8、随机从其他offline状态的回滚段中偷取未过期(unexpired)的extent。

9、尝试使用当前回滚段中未过期的extent,如果所有的区都为ACTIVE状态,则进入下一步。

10、如果以上所有的尝试都失败,则报ORA-30036的错误。

[[email protected] ~]$ oerr ora 30036
30036, 00000, "unable to extend segment by %s in undo tablespace ‘%s‘"
// *Cause:   the specified undo tablespace has no more space available.
// *Action:  Add more space to the undo tablespace before retrying
//           the operation. An alternative is to wait until active
//           transactions to commit.

案例:

10:34:45 [email protected] prod>select tablespace_name,contents from dba_tablespaces;

TABLESPACE_NAME                CONTENTS
------------------------------ ---------
SYSTEM                         PERMANENT
SYSAUX                         PERMANENT
TEMP                           TEMPORARY
USERS                          PERMANENT
UNDOTBS2                       UNDO
EXAMPLE                        PERMANENT
TBS1                           PERMANENT

7 rows selected.

Elapsed: 00:00:00.03
10:34:56 [email protected] prod>create undo tablespace undotbs1
10:35:15   2  datafile ‘/u01/app/oracle/oradata/prod/undotbs1.dbf‘ size 1m;

Tablespace created.

Elapsed: 00:00:01.38
10:35:40 [email protected] prod>show parameter undo

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

10:35:49 [email protected] prod>alter system set undo_tablespace=undotbs1;

System altered.

Elapsed: 00:00:00.13
10:36:03 [email protected] prod>

10:36:03 [email protected] prod>select s.sid,s.serial#,s.username,u.segment_name,count(u.extent_id) "Extent count",
10:37:37   2  t.used_ublk,t.used_urec,s.program
10:38:00   3   from v$session s,v$transaction t,dba_undo_extents u
10:38:24   4  where s.taddr=t.addr and u.segment_name like ‘_SYSSMU‘||t.xidusn||‘_%$‘ and u.status=‘ACTIVE‘
10:39:50   5  GROUP BY s.sid,s.serial#,s.username,u.segment_name,t.used_ublk,t.used_urec,s.program
10:40:37   6  order by t.used_ublk desc,t.used_urec desc,s.sid,s.serial#,s.username,s.program;

开启新的session,执行DML:

10:41:45 [email protected] prod>conn scott/tiger
Connected.
10:42:45 [email protected] prod>insert into t1 select * from t1 where rownum <1000;

999 rows created.

查看undo tablespace 使用情况:

10:43:29 [email protected] prod> select s.sid,s.serial#,s.username,u.segment_name,count(u.extent_id) "Extent count",
  2  t.used_ublk,t.used_urec,s.program
  3   from v$session s,v$transaction t,dba_undo_extents u
  4  where s.taddr=t.addr and u.segment_name like ‘_SYSSMU‘||t.xidusn||‘_%$‘ and u.status=‘ACTIVE‘
  5  GROUP BY s.sid,s.serial#,s.username,u.segment_name,t.used_ublk,t.used_urec,s.program
  6* order by t.used_ublk desc,t.used_urec desc,s.sid,s.serial#,s.username,s.program

       SID    SERIAL# USERNAME   SEGMENT_NAME         Extent count  USED_UBLK  USED_UREC PROGRAM
---------- ---------- ---------- -------------------- ------------ ---------- ---------- ----------
        37         36 SCOTT      _SYSSMU12_2144756092            1          1         11 [email protected]
                                 $                                                       6 (TNS V1-
                                                                                         V3)
Elapsed: 00:00:00.20

10:45:01 [email protected] prod>insert into t1 select * from t1 where rownum <20000;

19999 rows created.

Elapsed: 00:00:00.07

10:44:52 [email protected] prod>select s.sid,s.serial#,s.username,u.segment_name,count(u.extent_id) "Extent count",
  2  t.used_ublk,t.used_urec,s.program
  3   from v$session s,v$transaction t,dba_undo_extents u
  4  where s.taddr=t.addr and u.segment_name like ‘_SYSSMU‘||t.xidusn||‘_%$‘ and u.status=‘ACTIVE‘
  5  GROUP BY s.sid,s.serial#,s.username,u.segment_name,t.used_ublk,t.used_urec,s.program
  6* order by t.used_ublk desc,t.used_urec desc,s.sid,s.serial#,s.username,s.program

       SID    SERIAL# USERNAME   SEGMENT_NAME         Extent count  USED_UBLK  USED_UREC PROGRAM
---------- ---------- ---------- -------------------- ------------ ---------- ---------- ----------
        37         36 SCOTT      _SYSSMU16_2726800344            2          7        109 [email protected]
                                 $                                                       6 (TNS V1-
                                                                                         V3)

Elapsed: 00:00:00.01
10:45:13 [email protected] prod>

10:48:16 [email protected] prod>select a.usn,a.name,b.xacts,b.extents,b.status from v$rollname a,v$rollstat b
10:49:01   2  where a.usn=b.usn;

       USN NAME                                XACTS    EXTENTS STATUS
---------- ------------------------------ ---------- ---------- ---------------
         0 SYSTEM                                  0          6 ONLINE
        11 _SYSSMU11_2517864848$                   0          2 ONLINE
        12 _SYSSMU12_2144756092$                   0          2 ONLINE
        13 _SYSSMU13_527038519$                    0          3 ONLINE
        14 _SYSSMU14_2951869305$                   0          2 ONLINE
        15 _SYSSMU15_2206823906$                   0          2 ONLINE
        16 _SYSSMU16_2726800344$                   1          2 ONLINE
        17 _SYSSMU17_2098084560$                   0          2 ONLINE
        
 10:50:45 [email protected] prod>select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,STATUS from dba_undo_extents

SEGMENT_NAME              TABLESPACE_NAME                 EXTENT_ID STATUS
------------------------- ------------------------------ ---------- ---------
_SYSSMU17_2098084560$     UNDOTBS1                                0 UNEXPIRED
_SYSSMU17_2098084560$     UNDOTBS1                                1 UNEXPIRED
_SYSSMU16_2726800344$     UNDOTBS1                                0 ACTIVE
_SYSSMU16_2726800344$     UNDOTBS1                                1 ACTIVE
_SYSSMU15_2206823906$     UNDOTBS1                                0 UNEXPIRED
_SYSSMU15_2206823906$     UNDOTBS1                                1 UNEXPIRED
_SYSSMU14_2951869305$     UNDOTBS1                                0 UNEXPIRED
_SYSSMU14_2951869305$     UNDOTBS1                                1 UNEXPIRED
_SYSSMU13_527038519$      UNDOTBS1                                0 UNEXPIRED
_SYSSMU13_527038519$      UNDOTBS1                                1 UNEXPIRED
_SYSSMU13_527038519$      UNDOTBS1                                2 UNEXPIRED
_SYSSMU12_2144756092$     UNDOTBS1                                0 UNEXPIRED
_SYSSMU12_2144756092$     UNDOTBS1                                1 UNEXPIRED
_SYSSMU11_2517864848$     UNDOTBS1                                0 UNEXPIRED
_SYSSMU11_2517864848$     UNDOTBS1                                1 UNEXPIRED
_SYSSMU30_1737877121$     UNDOTBS2                                0 EXPIRED
_SYSSMU30_1737877121$     UNDOTBS2                                1 UNEXPIRED

SEGMENT_NAME              TABLESPACE_NAME                 EXTENT_ID STATUS
------------------------- ------------------------------ ---------- ---------
_SYSSMU30_1737877121$     UNDOTBS2                                2 EXPIRED
_SYSSMU29_2754652023$     UNDOTBS2                                0 EXPIRED
_SYSSMU29_2754652023$     UNDOTBS2                                1 EXPIRED
_SYSSMU29_2754652023$     UNDOTBS2                                2 EXPIRED
_SYSSMU29_2754652023$     UNDOTBS2                                3 UNEXPIRED
_SYSSMU28_707429450$      UNDOTBS2                                0 UNEXPIRED
_SYSSMU28_707429450$      UNDOTBS2                                1 EXPIRED
_SYSSMU28_707429450$      UNDOTBS2                                2 EXPIRED
_SYSSMU27_3269963619$     UNDOTBS2                                0 EXPIRED
_SYSSMU27_3269963619$     UNDOTBS2                                1 EXPIRED
_SYSSMU27_3269963619$     UNDOTBS2                                2 EXPIRED
_SYSSMU27_3269963619$     UNDOTBS2                                3 UNEXPIRED
_SYSSMU27_3269963619$     UNDOTBS2                                4 EXPIRED
_SYSSMU27_3269963619$     UNDOTBS2                                5 EXPIRED
_SYSSMU26_2968904537$     UNDOTBS2                                0 EXPIRED
_SYSSMU26_2968904537$     UNDOTBS2                                1 EXPIRED
_SYSSMU26_2968904537$     UNDOTBS2                                2 EXPIRED

SEGMENT_NAME              TABLESPACE_NAME                 EXTENT_ID STATUS
------------------------- ------------------------------ ---------- ---------
_SYSSMU26_2968904537$     UNDOTBS2                                3 EXPIRED
_SYSSMU26_2968904537$     UNDOTBS2                                4 UNEXPIRED
_SYSSMU26_2968904537$     UNDOTBS2                                5 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                0 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                1 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                2 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                3 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                4 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                5 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                6 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                7 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                8 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                                9 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               10 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               11 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               12 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               13 EXPIRED

SEGMENT_NAME              TABLESPACE_NAME                 EXTENT_ID STATUS
------------------------- ------------------------------ ---------- ---------
_SYSSMU25_2810228709$     UNDOTBS2                               14 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               15 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               16 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               17 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               18 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               19 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               20 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               21 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               22 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               23 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               24 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               25 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               26 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               27 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               28 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               29 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               30 EXPIRED

SEGMENT_NAME              TABLESPACE_NAME                 EXTENT_ID STATUS
------------------------- ------------------------------ ---------- ---------
_SYSSMU25_2810228709$     UNDOTBS2                               31 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               32 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               33 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               34 EXPIRED
_SYSSMU25_2810228709$     UNDOTBS2                               35 UNEXPIRED
_SYSSMU24_386518199$      UNDOTBS2                                0 EXPIRED
_SYSSMU24_386518199$      UNDOTBS2                                1 UNEXPIRED
_SYSSMU24_386518199$      UNDOTBS2                                2 EXPIRED
_SYSSMU23_4084707454$     UNDOTBS2                                0 EXPIRED
_SYSSMU23_4084707454$     UNDOTBS2                                1 UNEXPIRED
_SYSSMU23_4084707454$     UNDOTBS2                                2 EXPIRED
_SYSSMU22_3375463809$     UNDOTBS2                                0 UNEXPIRED
_SYSSMU22_3375463809$     UNDOTBS2                                1 UNEXPIRED
_SYSSMU22_3375463809$     UNDOTBS2                                2 EXPIRED
_SYSSMU22_3375463809$     UNDOTBS2                                3 EXPIRED
_SYSSMU21_2312338076$     UNDOTBS2                                0 EXPIRED
_SYSSMU21_2312338076$     UNDOTBS2                                1 EXPIRED

SEGMENT_NAME              TABLESPACE_NAME                 EXTENT_ID STATUS
------------------------- ------------------------------ ---------- ---------
_SYSSMU21_2312338076$     UNDOTBS2                                2 UNEXPIRED

86 rows selected.

Elapsed: 00:00:00.06

10:52:33 [email protected] prod>alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss‘;

Session altered.

Elapsed: 00:00:00.02
10:53:03 [email protected] prod>select BEGIN_TIME,END_TIME,UNDOTSN,UNDOBLKS,TUNED_UNDORETENTION from v$undostat;

BEGIN_TIME          END_TIME               UNDOTSN   UNDOBLKS TUNED_UNDORETENTION
------------------- ------------------- ---------- ---------- -------------------
2014-07-01 10:52:51 2014-07-01 10:53:08          2          0                 921
2014-07-01 10:42:51 2014-07-01 10:52:51          2         74                 921
2014-07-01 10:32:51 2014-07-01 10:42:51          2         43                1260

估算undo tablespace 的大小:

UndoTablesapce = UR * (UPS * DBS)

UR: undo_retention 
UPS:在业务高峰期每秒产生的undo blocks的数量
DBS:undo tablespace的数据库的大小

10:53:08 [email protected] prod>select (UR * (UPS * DBS)) AS "BYTES"
10:56:12   2  from (select value AS UR from v$parameter where name=‘undo_retention‘),
10:57:04   3       (select undoblks/((end_time-begin_time)*900) as UPS
10:58:39   4       FROM v$undostat
10:58:50   5       where undoblks=(select max(undoblks) from v$undostat)),
10:59:29   6       (select block_size as DBS    
10:59:51   7       FROM dba_tablespaces
11:00:01   8      where tablespace_name=(select upper(value) from v$parameter where name=‘undo_tablespace‘));

     BYTES
----------
  87293952

Elapsed: 00:00:00.07
11:00:45 [email protected] prod>

11:00:45 [email protected] prod>select (UR * (UPS * DBS))/1024/1024 AS "BYTES"
11:01:42   2   from (select value AS UR from v$parameter where name=‘undo_retention‘),
11:01:42   3        (select undoblks/((end_time-begin_time)*900) as UPS
11:01:42   4        FROM v$undostat
11:01:42   5        where undoblks=(select max(undoblks) from v$undostat)),
11:01:42   6        (select block_size as DBS    
11:01:42   7        FROM dba_tablespaces
11:01:42   8       where tablespace_name=(select upper(value) from v$parameter where name=‘undo_tablespace‘));

     BYTES
----------
     83.25

Elapsed: 00:00:00.10
11:01:44 [email protected] prod>

以上部分内容参考了《Oracle DBA实战攻略》书中的内容,这里表示感谢!

UNDO segment深入解析,布布扣,bubuko.com

时间: 2024-10-22 05:37:03

UNDO segment深入解析的相关文章

racle undo 解析

racle undo 解析 声明一下:关于oracle的文章基于boobooke小布老师视频,在我学习的过程中,每有体会拿来分享,虽然从理解到整理分享很耗时,但我想这样的学习是扎实的. Undo是干嘛用的?                                         在介绍undo之前先说一下另外一个东西 transaction ,翻译成交易或事务.我们在进行一个事务的过程中需要申请许多资源,一个复杂的事务也需要很多步来完成.那么一个复杂的事务是只有两个结果,要么成功,要么失

(转载)Oracle AWR报告指标全解析

Oracle AWR报告指标全解析 2014-10-16 14:48:04 分类: Oracle [性能调优]Oracle AWR报告指标全解析 2013/08/31 BY MACLEAN LIU 26条评论 [性能调优]Oracle AWR报告指标全解析 开Oracle调优鹰眼,深入理解AWR性能报告:http://www.askmaclean.com/archives/awr-hawk-eyes-training.html 开Oracle调优鹰眼,深入理解AWR性能报告 第二讲: http:

Oracle AWR报告指标解析一例

啥是AWR? ===================================================================================================== AWR (Automatic Workload Repository) 一堆历史性能数据,放在SYSAUX表空间上, AWR和SYSAUX都是10g出现的,是Oracle调优的关键特性: 大约1999年左右开始开发,已经有15年历史 默认快照间隔1小时,10g保存7天.11g保存8

oracle_事务与undo块

1.事务(transaction) 1.1事务的概念    事务是若干操作的集合,集合中的操作看作程一个整体,要么都完成,要么都取消.1.2事务的属性    Atomicity(原子性) 事务是一个整体,一起完成,一起取消.    Consistency(一致性) 事务将数据从一种一致状态转变为下一种一致状态.(指的是修改前与修改后吗?留疑)    Isolation(隔离性) 一个事物的影响在该事物提交前对其他事务都不可见.(由undo表空间完成)    Durability(永久性) 事务一

bin log、redo log、undo log和MVVC

logs innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它们都算是用来恢复的日志: redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置).mysql中使用了大量缓存,缓存存在于内存中,修改操作时会直接修改内存,而不是立刻修改磁盘,当

说说MySQL中的Redo log Undo log都在干啥

阅读目录(Content) 1 undo 1.1 undo是啥 1.2 undo参数 1.3 undo空间管理 2 redo 2.1 redo是啥 2.2 redo 参数 2.3 redo 空间管理 3 undo及redo如何记录事务 3.1 Undo + Redo事务的简化过程 3.2  IO影响 3.3 恢复 在数据库系统中,既有存放数据的文件,也有存放日志的文件.日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件. MySQL中的日志文件,

oracle undo回滚段详解

1.Undo是干嘛用的?   在介绍undo之前先说一下另外一个东西 transaction ,翻译成交易或事务.我们在进行一个事务的过程中需要申请许多资源,一个复杂的事务也需要很多步来完成.那么一个复杂的事务是只有两个结果,要么成功,要么失败(相当于从来没发生过). 一个很典型的列子,银行转账,其实其需要两步操作,第一步先将你账户上的钱减去,第二步把被转账户的钱加上,(先减后加,出了问题银行不吃亏.呵呵!)这样就是一个完整的事务.如果执行了一半,你的钱减了,被转账户的钱没加上,这个时候事务就要

17_Oracle_Admin_表空间的管理方式以及UNDO和临时表空间

一.表空间的管理   数据库表空间的管理主要分为两种: 1.数据字典的表空间管理--当空闲的extents释放了,数据字典中的表会做相应的调整,它相当于中央控制,对全局进行管理 2.本地表空间的管理--tablespace自身来管理空闲的extents:Bitmap位图用来记录extents空闲与否,每一个extent对应位图上的一位,其中1表示extent被占用,0表示没有被占用. 如果SYSTEM是本地管理的,那么该数据库将不支持表空间的数据字典管理方式. 使用数据字典进行中央管理,需要定期

undo回滚异常导致实例奔溃,无法正常open

接到地市反馈某一个数据库打不开了 1.登陆主机,查看数据库告警日志 最早数据库出现问题时的日志是在2014年6月7日 数据库在切换redo时异常关闭,之后数据库一直为开启使用 2.数据库在2014年6月8日 OPEN后,有recovery的进程报错 目前已经找不到这些文件,无法核实当时的异常信息源,接着往下看日志 3.数据库在2014年6月9日11:36:45时又异常关闭 4.同样的现象出现在2014年8月11日13:26:07,数据库异常关闭 5.数据库在2014年8月11日13:18:46再