【Oracle Database 12c New Feature】How to Learn Oracle (12c New Feature) from Error

这篇文章也许并不太牵涉什么技术点,只是描述一下我自己在学习的时候大概是什么状态,什么思路,因为自认自己的学习能力还不错,因此也期望这样的学习方法对其他人会有帮助。看这篇文章的时候,你可以同步地想一想如果是你遇到这样的错误,你会怎么处理,怎么发散,怎么研究? Oracle Database 12c前几天正式发布了,如果学习一个新版本的数据库?我通常是从New Features Guide文档看起,先通览文档的目录,遇到感兴趣的新功能点,就开始做实验来验证这个新功能。当然,这之前需要先把新版本的数据库安装好,先把新版本的全部文档下载到本地,这样即使你坐在飞机上也可以有文档可查。 这次我的计划是实验一下Identity类型的字段,这个字段可以用来作主键,会自动递增,这种类型的字段在SQL Server中早就存在,但是Oracle直到12c才推出这个功能。 通常我不会用sys用户进行任何实验(除非是验证sysdba的新功能),因此总是会先创建一个我自己的dba用户。 在12c中创建这个用户首先就遇到了错误。 SQL> create user kamus identified by oracle default tablespace users; create user kamus identified by oracle default tablespace users *…

Continue Reading【Oracle Database 12c New Feature】How to Learn Oracle (12c New Feature) from Error

【Oracle Database 12c New Feature】What’s New in DBCA of Oracle Database 12c

Oracle Database 12c已经正式发布,在创建数据库的dbca程序界面上与以往的版本有哪些不同? 1. 出现了Manage Pluggable Databases的选项。 PDB是Oracle12c大力宣传的一个新特性,参看文档。 2. 如果安装的机器上已经有11g GI,那么会出现警告,提升要么升级到12.1,要么新创建的数据库将无法假如到GI的管理中。 3. 创建数据库的时候,可以直接选择是CDB还是Non-CDB,也可以同时创建多个PDB。 4. 更多的权限细分group,但是在我遇见的生产环境中,很少有使用到这样细分的权限。通常都是一个dba组搞定全部。 5. 以往的版本在最后一步真正开始创建数据库的时候是弹出一个新窗口,12c嵌入到dbca的整体界面中。最人性化的改变是可以直接查看alert日志,并且内容是自动滚动的。不再需要登录到服务器上tail -f了。

Continue Reading【Oracle Database 12c New Feature】What’s New in DBCA of Oracle Database 12c

About GETS, MISSES, SPIN_GETS, SLEEPS in V$LATCH

今天重新阅读Latch的文档,按照我自己的理解,对于v$latch视图中的以下几个字段再作一些解释。 以下参数都是对于Willing-to-wait模式的latch而言的,no-wait模式的latch获得情况统计值则在IMMEDIATE_GETS和IMMEDIATE_MISSES字段中。所有v$latch视图中统计值都是在获得了latch之后才更新的。 GETS:当尝试获取一个latch并最终获得的时候,该值加1,在一次请求中无论是经过多少次自旋多少次Sleep,该值只会加1. MISSES:如果没能不经过自旋(spin)就获得latch,该值加1,在一次请求中无论是经过多少次自旋多少次Sleep,该值只会加1. SPIN_GETS:如果经过自旋才获得latch,该值加1,在一次请求中无论是经过多少次自旋,该值只会加1;如果经过了下述的SLEEPS方式才获得的latch,那么该值不变。 SLEEPS:这是MISS之后进程除了自旋之外,可能采取的另外一种方式-睡眠,将等待信号量唤醒或者Timeout唤醒。可能是由于多次自旋以后,仍然无法获得latch,进程就停止占用CPU,进入Sleep状态;也可能是首次尝试获取latch失败以后就直接进入睡眠期(比如单个CPU的机器中)。Sleep以后获得latch,该值加1,如果一次Sleep以后被唤醒,但是却仍然无法获得latch,那么会再次自旋,还无法获得,再次Sleep(睡眠时间会逐渐变长),多次Sleep会累加该值。 SQL> select count(*) from v$latch where MISSES=0; COUNT(*) ---------- 484 如上所示,这些latch都是一次请求就直接成功了,连一次Miss都没有。只要MISSES=0,那么SPIN_GETS和SLEEPS也一定等于0。 SQL> select NAME,GETS,MISSES,SPIN_GETS,SLEEPS from v$latch where MISSES>0 and SLEEPS=0; NAME GETS MISSES SPIN_GETS…

Continue ReadingAbout GETS, MISSES, SPIN_GETS, SLEEPS in V$LATCH