Undo Management

1.undo 表空间大小的确定
    a>:UR undo_retention in seconds
     
      select * from v$parameter [undo_retention]\
      

   b>:UPS Number of undo data blocks generated per second
    
     select max(undoblks/(end_time-begin_time)*24*3600 from  v$undostat

   c>:DBS db_block_size
     
      select * from v$parameter [db_block_size]
      

2.设置较大事务使用最高的undo的限额
undo_pool:a resource manager directive,defines the amount of space allowed for a resource group
3.ora-01555的理解,数据库怎么保证了数据的读的一致性

   a.当数据库发出了一个数据修改的操作的请求的时候,数据库会将磁盘里的块做一个标记,标记为这个数据库已经处于修改的状态,同时会将这个数据写入到undo表空间,保存了这个数据块修改之前的记录。
   b.此时如果当一个用户发出请求进行查询操作,数据库会给这个查询语句分配一个scn,数据库会到数据块里去查询他符合要求的数据,这些数据的scn号都是小于这个sql的scn.
  c.当查询语句查询到的数据库的标记为更改的状态的时候,此时他会根据对应关系去undo表空间里去查找保存在保存的修改之前的记录。最终读出数据块。这样就保证了,事务没有比较之前,数据的读一致性。
   d.此时undo_retention就起到了一个被保存在undo表空间里的数据块至少需要的保存的时间数,如果超过了这个时间,这个数据块有可能被撤出撤销表空间。
   e.因此,当查询语句的发出的请求的数据块标记为修改的状态,同时这个数据块在undo表空间保存的时间已经超出了undo_retion,此时undo表空间的空间不足,恰好这个数据库被swap出undo表空间,此时query语句就在数据表空间和undo表空间都没找到对应的块.此时数据就raise the ora-01555的错误。
   f.也不晓得说得详细不,还忘路过的同仁纠正。呵呵

4.重要的动态性能视图 
   a:dba_rollback_segs
   b:v$undostat
   c:v$transaction
   d:v$session
   e:v$rollname
        the view list the name of the online rollback segment
   f:v&rollstat

你可能感兴趣的:(sql,C++,c,C#,F#)