微观ORACLE(一):PMON Release Lock

我们在学习Oracle基础知识的时候肯定了解过PMON后台进程的功能,包括轮训其他ORACLE PROCESS,清理cleanup dead process并释放锁release enqueue lock ,及清理cleanup latch。

 

虽然这些理论在你耳边萦绕了千百回, 但你是否有亲眼见证过一次Pmon cleanup dead process并release lock呢?大多数人可能没有。

 

微观Oracle=> MicroOracle, Maclean带领你见证微观视角下的Oracle behavior:

 

 

SQL> select * from v$version; BANNER ——————————————————————————– Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit Production PL/SQL Release 11.2.0.3.0 – Production CORE    11.2.0.3.0      Production TNS for Linux: Version 11.2.0.3.0 – Production NLSRTL . . . → Read More: 微观ORACLE(一):PMON Release Lock

Archivelog Completed Before VS UNTIL TIME

有网友在T.ASKMACLEAN.COM上 提问关于”DELETE ARCHIVELOG ALL COMPLETED BEFORE” 与 “DELETE ARCHIVELOG UNTIL TIME “的区别。为了了解这2个命令细微的差别,我们先来温习一些 ARCHIVED LOG的知识。

 

V$ARCHIVED_LOG: FIRST_TIME             DATE     Timestamp of the first change NEXT_TIME              DATE     Timestamp of the next change COMPLETION_TIME      DATE     Time when the archiving completed

 

 

FIRST_TIME代表该归档日志中LOW SCN对应的时间戳, 而NEXT_TIME代表HIGH SCN对应的时间戳; COMPLETION_TIME指该日志实际归档成功的时间,当归档可以快速完成时 NEXT_TIME往往等于COMPLETION_TIME,但是也存在因为LOGFILE SIZE尺寸较大导致archive归档操作持续较长时间,导致 NEXT_TIME . . . → Read More: Archivelog Completed Before VS UNTIL TIME

[视频教学]Maclean教你用Vbox在Enterprise Linux 5上安装Oracle 10gR2 RAC

【视频教学】Maclean手把手教你用Vbox在Enterprise Linux 5上安装Oracle 10gR2 RAC数据库

WebEx视频播放软件 , 以下wrf格式文件 需要使用webex播放,

下载WebEX: 

WebEx.zip (2.55 MB)

Agenda:

相关脚本 和命令附件:   脚本命令.txt (1.71 KB)

第一讲视频-在Windows上安装Vbox

第一讲视频-在Windows上安装Vbox.zip (4.41 MB)

第二讲视频-在Vbox上安装Oracle Enterprise Linux 5.7虚拟主机

第二讲视频-在Vbox上安装Oracle Enterprise Linux 5.7虚拟主机.zip (12.05 MB)

第三讲视频-配置并克隆Oracle Enterprise 5.7虚拟主机

第三讲视频-配置并克隆Oracle Enterprise 5.7虚拟主机.zip (14.82 MB)

第四讲视频-配置Vbox共享存储和UDEV存储设备绑定

第四讲视频-配置Vbox共享存储和UDEV存储设备绑定.zip (13.16 MB)

第五讲视频-安装10.2.0.1 x64 Linux Oracle . . . → Read More: [视频教学]Maclean教你用Vbox在Enterprise Linux 5上安装Oracle 10gR2 RAC

Know More About Oracle Row Lock

我们都知道在Oracle中实现了细粒度的行锁row lock,且在ORACLE的内部实现中没有使用基于内存的行锁管理器,row lock是依赖于数据块本身实现的。换句话说判定一行数据究竟有没有没锁住,要求Server Process去pin住相应的block buffer并检查才能够发现。

但是试想一个场景,若process A 通过update语句锁定了数据表 Z数据块上的一行数据, 并长时间既没有rollback亦没有commit;此时Process B也运行了一条DML语句, 它通过索引找到rowid并找到了 Z数据块, 它发现这一行数据已经被process A发起的一个事务的ITL锁住了,它可能试图做一些cleanout操作,但是发现被锁住的row在相关的事务表中仍未被commit, 那么很抱歉的是Process B需要进入”enq: TX – row lock contention”的等待事件了。 问题在于Process B的无尽等待的终结在哪里呢?

 

有同学肯定会说只要Process A释放了其锁定的row,那么Process B就会立即结束其”enq: TX – row lock contention”等待了。

 

事实是这样的吗?  我们来看一个演示:

 

 

SESSION A: SQL> select * from v$version; BANNER —————————————————————- Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 – . . . → Read More: Know More About Oracle Row Lock

10%的IOS设备已经更新到版本5.1.1

iOS 5.1.1

APPLE iOS系统的更新率令Android望尘莫及。 住在佛吉尼亚州的David Smith是一位独立的iOS应用开发者,他提供了数据以支持这种说法。

 

 

 

David Smith开发了多个iOS APP,包括 Audiobooks 和 InstaBackup ; 并且他对iOS 5.1.1 版本的更新下载做了追踪。 他指出10%的iOS用户已经升级到最新版本的APPLE移动操作系统。

 

Apple iOS 5.1.1 在官方发布的24小时就获得了极高的采用率。开发者们指出80%的iOS用户已经更新到了去年十一月发布的iOS 5.0.1版本上。

 

极具对比性的是, Android系统最新版本的采用率仍保持在一个极低的水平。从Google 开发者那里获得的数据显示 Android Ice Cream sandwich的采样率仅占所有Android设备的5%。

 

在所有的安卓智能手机和平板设备中, 版本4.0 和 4.0.2仅拥有0.5%的装机率。  Google 最新版本的移动操作系统 ,版本4.0.3 、4.0.4 、4.4占4.4%装机率。

 

From http://t.cn/zORzTfe

. . . → Read More: 10%的IOS设备已经更新到版本5.1.1

Know more about Cache Buffer Handle

在之前的文章《latch free:cache buffer handles造成的SQL性能问题》中我介绍了cache buffer handle latch的一些知识,在这里我们复习一下:

“当会话需要pin住buffer header时它首先要获去buffer handle,得到buffer handle的过程中首先要抢占cache buffer handles栓,为了避免对于cache buffer handles栓的过度争用,每个会话被允许cache一小撮buffer handles,也叫保留集(reserved set)。该保留集的上限由隐式参数_db_handles_cached(默认为5)所控制,在此基础上会话在执行不是十分复杂的SQL时不必反复申请栓。 同时存在一些十分复杂的语句,需要同时pin住大量的缓存,此时若存在空闲的handle,会话被允许索要手头5个cached buffer handles以外的handle。也为了限制单个会话的资源占用量,Oracle通过内部算法总是尽量让每个进程能够pin住”合理份额“的buffer,由此单个会话同一时间所能持有的总handle数等于db_block_buffers/processes,隐式参数_cursor_db_buffers_pinned指出了该值。另cache buffer handles并没有子栓,仅有父栓本身,所以如果系统中有大量复杂SQL,会话所能cache的buffer handles远不足以满足需求时,该栓就成为整个系统性能的瓶颈,甚至可能出现潜在的死锁/饿死问题。”

应网友在T.ASKMACLEAN.COM上的提问,我们介绍更多cache Buffer handle相关的知识:

 

cache buffer handle 结构:

 

—————————— | Buffer state object | —————————— | Place to hang the buffer | —————————— | Consistent Get? | —————————— | . . . → Read More: Know more about Cache Buffer Handle

一些有用的Exadata诊断命令

检测check Exadata Image & OS versions , GI & DB patches

 

sundiag exacheck cellserv ==> imageinfo dbhost ==> /usr/local/bin/imagehistory Also check the version of the switch. Login to Switch and execute the following command [root@myswitch-1 sbin]# version [root@dmorlsw-ib2 sbin]# cd /usr/local/bin [root@dmorlsw-ib2 bin]# ls -lrt version -rwxr-xr-x 1 root root 20356 Apr 4 2011 . . . → Read More: 一些有用的Exadata诊断命令

Global Cache CR Requested But Current Block Received

这篇文章和之前的《MINSCN与Cache Fusion Read Consistent》 是姊妹篇,他们源于同一个问题帖子。

我们来重现提问者所看到的这样一个场景:

 

SQL> select * from V$version; BANNER ——————————————————————————– Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit Production PL/SQL Release 11.2.0.3.0 – Production CORE 11.2.0.3.0 Production TNS for Linux: Version 11.2.0.3.0 – Production NLSRTL Version 11.2.0.3.0 – Production SQL> select count(*) from gv$instance; COUNT(*) ———- 2 SQL> select * . . . → Read More: Global Cache CR Requested But Current Block Received