oracle数据库中的mbu,Oracle redo 原理

Oracle 10g Redor 增强

在10g中,log_parallelism参数变为隐含参数,并且Oracle引入了_log_parallelism_max,_log_parallelism_dynamic,_log_parallelism_dynamic与_log_parallelism不同时Oracle会动态的选择并行度

但是需要注意的是当日志并行度被设置大于1之后,LogMiner将不能解析日志文件,ORA-01374号错误提示说明了这个问题。

相较Oracle 9i中的Public Redolog Strands(PBRS),10R2中更引入了Private Redolog Strands(PVRS),在PVRS机制下,数据库可以在共享池中分配大量的小的私有内存,通常每个大小在64~128k左右,被独立的Redo Allocation Latch所保护,当数据库中特定类型的小事务开始时会被绑定到独立且空闲的PVRS,每个Buffer绑定一个活动事务。在新的机制下,Redo产生后可以直接存入PVRS,而不再保存在PGA中,这样就不再需要额外的内存拷贝过程,Redo Copy Latch也就不再需要(PVRS也因此被称为ZERO-COPY Redo),而Redo Copy正是引发Redo Allocation Latch竞争的根源。

新的机制下,在进行Redo写出工作时,LGWR需要做的工作就是将PBRS和PVRS中的内容写出,当Redo Flush发生时,所有的Public Redo Allocation Latch需要被获取,所有Public Strands的Redo Copy Latch需要被检查,所有包含活动事务的Private Strands需要被持有。

以下是PVRS在共享池中的内存分配信息(注意在RAC环境中不适用)。

SYS@ orcl> select * from v$sgastat where name = 'private strands';

POOL        NAME                                BYTES

------------ ------------------------------ ----------

shared pool  private strands                  2472960

SYS@ orcl> @GetHidPar

Enter value for par: log_private

NAME                          VALUE          PDESC

------------------------------ --------------- --------------------------------------------------

_log_private_parallelism_mul  10              Active sessions multiplier to deduce number of pri

vate strands

_log_private_mul              5              Private strand multiplier for log space preallocat

ion

PRVS的统计数据可以从V$SYSSTAT视图查询得到,由于IMU(In Memory Undo)与PVRS紧密相关,所以两者的信息且有相关性。

SYS@ orcl> select name, value from v$sysstat where upper(name) like '%IMU%';

NAME                                                                        VALUE

-------------------------------------------------------------------- -------------

doubling up with imu segment                                                    0

IMU commits                                                                    543

IMU Flushes                                                                    37

IMU contention                                                                  2

IMU recursive-transaction flush                                                  0

IMU undo retention flush                                                        0

IMU ktichg flush                                                                2

IMU bind flushes                                                                0

IMU mbu flush                                                                    0

IMU pool not allocated                                                          22

IMU CR rollbacks                                                                0

IMU undo allocation size                                                  1271452

IMU Redo allocation size                                                    261972

IMU- failed to get a private strand                                            22

cell simulated physical IO bytes eligible for predicate offload                  0

cell simulated physical IO bytes returned by predicate offload                  0

cell simulated session smart scan efficiency                                    0

OS Maximum resident set size                                                    0

如要告警日志中出现Private strand flush not complete,这是指从内存到Redo Log File的写出尚未完成:

SYS@ orcl> select name from v$event_name where upper(name) like '%STRAND%';

NAME

--------------------------------------------------------------------

log file switch (private strand flush incomplete)0b1331709591d260c1c78e86d0c51c18.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值