Oracle 9i Redo的增强: 在Oracle 9iR2中,Oracle通过LOG_PARALLELISM定义Oracle中redo allocation的并发级别。如果定义LOG_PARALLELISM大于1,那么数据库将分配多个共享的Redo Log Buffer区域,每个共享Buffer都有独立的Redo Allocation Latch进行保护,从而提高了Redo的并发性能,多个Redo Log Buffer可以被看作是Redo Log Buffer的子池,与Shared Pool的多SubPool原理类似。多Redo Log Buffer机制又被称为Public Redolo[......]
Redo与Latch
Redo与Latch: 在一个多用户的并发系统中,大量用户进程都需要向Redo Log Buffer写入重做数据,Oracle通过Latch来保护和协调Redo Log Buffer的工作。同Redo相关的Latch主要有Redo Copy Lacth、Redo Allocation Latch等,Redo Allocation Latch用于管理Log Buffer内存空间的分配,Redo Copy Lacth则用于写Redo内容到Redo Log Buffer过程的保护。 一个进程在修改数据时产生Redo,Redo首先在PGA中保存,当进程需要将Redo信息Copy进入Redo Log[......]
Redo的原理
Redo的原理: 我们知道,用户数据通常在Buffer Cache中修改,Oracle通过高速缓存来提高数据操作的性能。当用户在Buffer Cache中修改数据时,Oracle并不会立即将变更数据写出到数据文件上,因为独立的离散写出效率会很低。到目前为止,计算机系统中最容易出现瓶颈的仍然是磁盘的I/O操作,Oracle这样做的目的是为了减少IO的压力,当修改过的数据达到一定数量之后,可以进行高效地批量写出。 大部分传统数据库(当然包括Oracle)在处理数据修改时都遵循no-force-at-commit策略。也就是说,在提交时并不强制写。那么为了保证数据在数据库发生故障时(例如:断电)[......]
Redo的作用
Redo的作用: Oracle通过Redo来保证数据库的事务可以被重演,从而使得在故障之后,数据可以被恢复。Redo对于Oracle数据库来说至关重要。 在数据库中,Redo的功能主要通过3个组件来实现:Redo Log Buffer、LGWR后台进程和Redo Log File(在归档模式下,Redo Log File最终会经由ARCn进程写出为归档日志文件)。 Redo Log Buffer位于SGA之中,是一块循环使用的内存区域,其保存数据库变更的相关信息。这些信息以重做条目(Redo Entries)形式存储(Redo Entries也经常称为Redo Records)。Redo[......]
v$sql视图和v$sqlarea视图的构建
v$sql视图和v$sqlarea视图的构建: 通过v$fixed_view_definition视图,可以查询得到v$sql视图和v$sqlarea视图的构建语句: select view_definition from v$fixed_view_definition where view_name='GV$SQL';select view_definition from v$fixed_view_definition where view_name='GV$SQLAREA'; GV$SQL的定义结构如下(Oracle 10gR2环境): select inst_id,kglnaob[......]