Month: February 2013

VirtualBox 4.2.8…

I just noticed VirtualBox 4.2.8 has been born. The downloads and changelog are in the usual places. Happy upgrading. Cheers Tim… VirtualBox 4.2.8… was first posted on February 28, 2013 at 9:23 pm.©2012 “The ORACLE-BASE Blog”. Use of this feed is for personal non-commercial use only. If you are not reading this article in your […]

Office 365 Business Launch

 Office 365 new launch:

REDMOND, Wash. — Feb. 27, 2013 — Microsoft Corp. today announced worldwide availability of a major new update to its Microsoft Office 365 services for business. Microsoft’s most complete Office cloud service to date has new features and offerings tailored to the needs and budgets of small, medium-size and large organizations. In addition to updated Microsoft Lync Online, Microsoft Exchange Online and Microsoft SharePoint Online services, business users can now get the rich Office applications they are familiar with, on up to five devices, delivered as an always up-to-date cloud service. Office 365 features enhanced enterprise social capabilities with SharePoint and Yammer today, and Lync-Skype connectivity for presence, instant messaging (IM), and voice by June. The new Office 365 service is available today in 69 markets and 17 languages and will be available in an additional 20 markets and 16 languages in the second quarter of this year.

“With Office 365, everyone from large enterprises to small businesses to individual consumers can now benefit from the power of Office and the connectivity of the cloud,” said Microsoft Office Division President Kurt DelBene. “This release unlocks new scenarios and delivers capabilities that far surpass anything available in browser-only solutions.”

Since launching in mid-2011, Office 365 is one of the fastest-growing businesses in Microsoft history. After only 18 months, one in five of Microsoft’s enterprise customers now has the paid service, up from one in seven a year ago. The number of small and midsize businesses using Office 365 has also grown by 150 percent in the past 12 months. Today Microsoft continued the wave of Office 365 momentum, announcing three new customers — Hamburg Port Authority, which manages operations for Europe’s second-largest port; Midroc Europe, a property development and management organization composed of 15 companies across Europe and South Africa; and Sephora USA Inc., a leading specialty beauty retailer. These customers join others that are choosing Office 365 across business, public sector and education, including the State of Texas, International Federation of Red Cross and Red Crescent Societies, Helly Hansen, Tesco, Toyota, Barilla America Inc. and the City of Chicago.

“For Hamburg Port Authority, our typical day on ships and in the harbor is different from most companies, as are our technology and business needs,” said Dr. Sebastian Saxe, chief information officer at Hamburg Port Authority. “Our workforce is mobile, so communication and access to information is critical for our 1,900 employees. Office 365 helps our team connect to the people and information that are important, while also reducing IT time on testing, installing and updating versions by 75 percent.”

“At Toyota, we always strive to provide innovative products and exceptional customer satisfaction. We needed to improve our productivity service to support our business speed and demands as well as improve collaboration across our affiliates,” said Karen Nocket, corporate manager, Toyota Motor Sales, USA, Inc. “We evaluated our options and found that Microsoft had the most robust, integrated suite with Office 365. It has the capabilities we need to excel in today’s business environment, such as email, calendaring, video, IM and document sharing. Microsoft Office 365 is enabling us to make faster, unified decisions across Toyota.”

More information on these customers and others is available at:

Customer stories

New Office 365 Offerings Tailored for Customer Needs

Today, Microsoft is announcing a new set of Office 365 offerings designed to meet a broad variety of business requirements:

Office 365 ProPlus. Office 365 ProPlus includes the latest and most complete set of fully featured, rich Office applications — Word, Excel, PowerPoint, OneNote, Outlook, Publisher, InfoPath and Access — delivered as a service, on up to five devices. People can now simply sign in to Office 365 from any of their devices, and their documents and personalized settings roam with them, allowing them to quickly pick up right where they left off. IT departments also get the controls they need, including the ability to run Office 365 ProPlus side-by-side with other versions of Office and tools to streamline and manage updates for their users. Office 365 ProPlus is available as a standalone offering for $144 per user for an annual subscription and is included with the updated premium Office 365 Enterprise offerings and the new Office 365 Midsize Business.

Office 365 Midsize Business. Office 365 Midsize Business is designed for medium-sized businesses with 10 to 250 employees. This service includes Office 365 ProPlus and provides midsize businesses with enterprise-quality communication and collaboration with Exchange Online, Lync Online and SharePoint Online — along with the simplified IT tools they need to maintain control while reducing complexity. Active Directory integration, a Web-based administration console and business-hours phone support are also included. Pricing is $180 per user for an annual subscription, the equivalent of $15 per user, per month.

Office 365 Small Business Premium. Office 365 Small Business Premium is designed for small businesses with one to 10 employees. In addition to the complete set of rich Office applications, this service includes business-grade email, shared calendars, website tools and HD videoconferencing capability in an easy-to-manage service that does not require IT expertise. Pricing is $150 per user for an annual subscription, the equivalent of $12.50 per user, per month.

The New Office Now Available for Everyone

slide show:


More than 10,000 people around the world told us how they spend their time.
It’s Time to Make the Most Out of Your Day
January 29, 2013
More than 10,000 people around the world told us how they spend their time.
Download: Web

With all your ideas and information in the cloud you can manage your life from almost anywhere.
Managing To-Dos
January 29, 2013
With all your ideas and information in the cloud you can manage your life from almost anywhere.
Download: Web

No matter what the chore, new features in Office 365 can help you get tasks done more efficiently.
Keeping Organized and On Task
January 29, 2013
No matter what the chore, new features in Office 365 can help you get tasks done more efficiently.
Download: Web

Technology helps you keep everything you need at your fingertips, when you need it.
Technology Helps
January 29, 2013
Technology helps you keep everything you need at your fingertips, when you need it.
Download: Web

Technology can help you save time to do the things you value most.
Getting Back Time
January 29, 2013
Technology can help you save time to do the things you value most.
Download: Web

Do more of the things you love to do.
Save Time
January 29, 2013
Do more of the things you love to do.
Download: Web

Go to to try, buy or learn more.
Office 365 Home Premium Is Available Today
January 29, 2013
Go to to try, buy or learn more.
Download: Web

With today’s general availability of Office 365 for all businesses, the new Office is now fully available to businesses, academic institutions and consumers. In addition to the business services announced today, on Jan. 29 Microsoft launched Office 365 Home Premium and updated versions of the traditional Office suite and servers.

Customers can purchase Office directly from Microsoft or through an authorized retail outlet or partner. More information on Office and how to sign up for a free trial is available at

Office for business product comparison

Microsoft Office 365 Enterprise Plans

For more information on implementation, reselling and support contact us at:

Drs. Albert Spijkers
DBA Consulting
blog:            DBA Consulting Blog
profile:         LinkedIn profile
Facebook :  DBA Consulting op Facebook

Ceylon: a new language inspired from Java

On 26 February I went to the University of Bern with my colleague Arnaud Berbier to follow an introductory conference on Ceylon, a new language inspired from Java. Unfortunately not presented by Gavin King, the leading developer of Ceylon at Red Hat, the project still was well introduced by Stéphane Epardaud. He is a long-time open source user and contributor, who is now working on the Ceylon compiler:

“Because if you’re not writing a compiler you’re not doing proper programming.”

Well, the show started and in less than one minute we knew we were in an open source project: “From scratch”, “fast programming”, “more readable than Java that you don’t have to comment it”, oh wait…

After our first heart attacks he began to explain what Ceylon is and why they wanted to develop a new language. Ceylon is a language running on a JVM, on Node.js or in a web browser. It has been promoted as a “Java killer” and directly disclaimed by Gavin King:

“First, I never billed this as a Java killer or the next generation of the Java language. Not my words. Ceylon isn’t Java, it’s a new language that’s deeply influenced by Java, designed by people who are unapologetic fans of Java. Java’s not dying anytime soon, so nothing’s killing it.”

Gavin King is leading the development of Ceylon at Red Hat. He is the creator of Hibernate (persistence solution for Java) and has also contributed to the Java Community Process standards as Red Hat representative for the EJB and JPA specifications and as spec lead of the CDI specification. So Ceylon may be promoted by Red Hat and this why it may have a destiny (maybe like Sun?).

But why building a new language which is like Java? Stéphane Epardaud explained that most of the developers contributing to the Ceylon project were designing and building frameworks and libraries for java and they were frustrated by the limitations they encountered. Not only from the language itself but from the JVM, too. Ceylon is built with an eye to the strength and weaknesses of Java and with the goal to make it easy to learn, read, develop, and maintain.

Then Stéphane Epardaud displayed a first piece of code. There were instructions in the class’ body, parameters in the class signature, no getters/setters, no constructor, no overloading, and the possibility to inherit from several classes at the same time. It was totally different than Java and that was what we were looking for.

The program is structured in modules which are built of packages, then source files. Here is a sample of code:




We will not detail all available features of the syntax of this new language here. You can easily find it there: The presentation rapidly showed some of the features and brought us some misunderstanding and doubts about the readability of a huge application built upon Ceylon. But with one hour length, the conference cannot provide as much information as the website which is well done for an open source project. You can find explanations of each features and how to use them with examples. In addition, you can figure out why they did it like this.

Programs run in the JVM for the time being and they can be written in command line, thanks to an Eclipse plugin which opens a dedicated perspective or in a web browser IDE which is being developed. The project is still a “baby” and it is coming to the 0.5 version (Milestone 5). A lot of work has still to be done; a compiler is working but the syntax error explanations are still ambiguous. Lots of projects around Ceylon are started and a community is growing; open source communities are famous for fast development and this language deserves to grow. We strongly hope that Ceydevs (Ceylon’s contributors) will not just build frameworks or APIs as fastly as possible to reduce the gap with Java. But we hope they will build strong modules with clear and limpid documentations in order to lay the foundation of a strong alternative Java language.


Gavin King –
Ceylon –



10g RAC特有进程:
$ ps -ef|grep ora_
oracle    4721     1  0 Feb26 ?        00:00:00 ora_diag_ONEPIECE1
oracle    4725     1  0 Feb26 ?        00:02:26 ora_lmon_ONEPIECE1
oracle    4727     1  0 Feb26 ?        00:00:02 ora_lmd0_ONEPIECE1
oracle    4729     1  0 Feb26 ?        00:00:01 ora_lms0_ONEPIECE1
oracle    4733     1  0 Feb26 ?        00:00:01 ora_lms1_ONEPIECE1
oracle    4761     1  0 Feb26 ?        00:00:07 ora_lck0_ONEPIECE1
oracle    4772     1  0 Feb26 ?        00:00:00 ora_asmb_ONEPIECE1
oracle    4776     1  0 Feb26 ?        00:00:00 ora_rbal_ONEPIECE1
oracle    4840     1  0 Feb26 ?        00:00:00 ora_o001_ONEPIECE1

11g RAC特有进程:
$ ps -ef|grep ora_
oracle     426     1  0 Feb27 ?        00:00:08 ora_o000_RAC11G21
oracle    9082     1  0 Feb25 ?        00:01:09 ora_diag_RAC11G21
oracle    9086     1  0 Feb25 ?        00:00:27 ora_ping_RAC11G21
oracle    9088     1  0 Feb25 ?        00:00:06 ora_acms_RAC11G21
oracle    9092     1  0 Feb25 ?        00:05:27 ora_lmon_RAC11G21
oracle    9094     1  0 Feb25 ?        00:01:32 ora_lmd0_RAC11G21
oracle    9096     1  0 Feb25 ?        00:02:07 ora_lms0_RAC11G21
oracle    9100     1  0 Feb25 ?        00:00:06 ora_rms0_RAC11G21
oracle    9102     1  0 Feb25 ?        00:00:14 ora_lmhb_RAC11G21
oracle    9116     1  0 Feb25 ?        00:00:09 ora_rbal_RAC11G21
oracle    9118     1  0 Feb25 ?        00:00:05 ora_asmb_RAC11G21
oracle    9136     1  0 Feb25 ?        00:04:25 ora_lck0_RAC11G21
oracle    9138     1  0 Feb25 ?        00:00:14 ora_rsmn_RAC11G21
oracle    9295     1  0 Feb25 ?        00:00:07 ora_gtx0_RAC11G21
oracle    9297     1  0 Feb25 ?        00:00:07 ora_rcbg_RAC11G21


LMD: Global Enqueue Service Daemon。LMD 进程主要处理从远程节点发出的资源请求。大概过程如下:
+ 一个连接发出了global enqueue 请求
+ 这个请求会被发给本节点的LMD0进程
+ 这个前台进程会处于等待状态
+ LMD0会找到这个资源的master节点是谁
+ LMD0会把这个请求发送给master节点
+ 如果需要的话,master节点会增加一个新的master资源
+ 这时从master节点可以获知谁是owner, waiter
+ 当这个资源被grant给requestor后, master节点的LMD0进程会告知requestor节点的LMD0
+ 然后requestor节点的LMD0会通知申请资源的前台进程

也就是说LMD主要处理global enqueue 的请求, 而LCK0主要处理本实例的lock.
另外,RAC上的global deadlock 也是由LMD来发现的。

LCK0: Instance Enqueue Process。LCK0进程主要处理非cache fustion的资源请求,比如library 和row cache 请求。
 Row cache entries
 Library cache entries
 Result cache entries
这些实例级的锁的owner, waiter是LCK0进程。
如果本地的实例没有拥有这个lock,那么需要申请这个lock,前台进程会等待DFS Lock Handle。

另外,当shared pool出现压力需要释放一些内存来存放新的cursor时,LCK进程会将dictionary cache 的一些内存进行释放。

LMON: Global Enqueue Service Monitor。LMON用于监控整个集群的global enqueues和resources, 而且会执行global enqueue recovery。实例异常终止后,会由LMON来进行GCS内存方面的处理。当一个实例加入或者离开集群后,LMON会对lock和resource进行reconfiguration.另外LMON会在不同的实例间进行通讯检查,如果发现对方通讯超时,就会发出节点eviction,所以很多时候节点发生eviction后(ORA-481, ORA-29740等),我们需要查看LMON的trace来了解eviction的原因。

还有,在DRM(Dynamic Resource management)中,LMD会监控需要进行remaster的queue,然后把任务发送给LMON进程,LMON进程来实施remaster。

LMS: Global Cache Service Process。 LMS进程会维护在Global Resource Directory (GRD)中的数据文件以及每个cached block的状态。LMS用于在RAC的实例间进行message以及数据块的传输。LMS是Cache Fusion的一个重要部分。LMS进程可以说是RAC上最活跃的后台进程,会消耗较多的CPU.一般每个实例会有多个LMS进程,每个Oracle版本的默认的LMS进程数目会有所不同,大部分版本的默认值是:MIN(CPU_COUNT/2, 2))

DIAG: Diagnostic Capture Process。用来打印诊断信息。diag进程会响应别的进程发出的dump请求,将相关的诊断信息写到diag trace文件中。在RAC上,当发出global oradebug请求时,会由每个实例的diag进程来打印诊断信息到diag trace中。

比如:下面的命令用了“-g”,那么生成的dump信息会分别写到每个实例的diag trace文件中:
SQL>oradebug -g all hanganalyze 3
SQL>oradebug -g all dump systemstate 266

ASMB: ASM Background Process。用于和ASM实例进行通讯,用来管理storage和提供statistics。当使用ASMCMD的cp命令时,需要用到ASM实例上的ASMB进程,数据库实例的spfile如果位于存于ASM上,那么也会用到ASMB进程。如果OCR存放在ASM中,也会用到ASMB。

RBAL:ASM Rebalance Master Process。作为ASM磁盘组进行rebalance时的协调者(Coordinator)。在数据库实例上,由它来管理ASM磁盘组。

Onnn:ASM Connection Pool Process。是从数据库实例连接到ASM实例上的一些连接池,通过这些连接池,数据库可以发送消息给ASM实例。比如,由它将打开文件的请求发送给ASM实例,这些连接池只处理一些较短的请求,不处理创建文件这种较长的请求。

PZ:PQ slaves。PZnn进程(从99开始)用于查询GV$视图,这种查询需要在每个实例上并行执行。如果需要更多的PZ进程,会自动生成PZ98, PZ97,…(降序)。

11G 特有的:
PING:Interconnect Latency Measurement Process。用来检查集群中各个实例间的私网通讯状况。每个实例每隔几秒会发送给其它实例一些消息,这些消息会由其它实例的PING进程收到。发送和接收信息花费的时间会被记录下来并判断是否正常。

LMHB: Global Cache/Enqueue Service Heartbeat Monitor。监控本地的LMON, LMD, LCK0,RMS0 and LMSn等进程是否运行正常,是否被阻塞或者已经hang了。

RMSn:Oracle RAC Management Process。完成对RAC的一些管理任务,比如当一个新的实例加入到集群后,给这个实例创建相关的资源。

RSMN: Remote Slave Monitor Process。管理后台的slave进程的创建,作为远程实例的协调者来完成一些任务。

GTXn: Global Transaction Process。在RAC环境中对于XA 事务提供透明支持,维护在RAC中的XA事务的global信息,完成global事务的两阶段提交。

RCBG: Result Cache Background Process。这个进程用来处理RAC上Result Cache相关的消息。

ACMS: Atomic Control File to Memory Service Process。作为每个实例上的agent来保证SGA的更新在RAC的所有实例上都是同步的,或者是全局成功提交,或者由于一些问题而导致全局回滚。

Oracle® Database Reference
11g Release 2 (11.2)
Part Number E25513-03
F Background Processes

My Oracle Support文档:
New Background Processes In 11g (Doc ID 444149.1)

Oracle CRS/GI 进程介绍

     在10g和11.1,Oracle的集群称为CRS(Oracle Cluster Ready Service), 在11.2,Oracle的集群称为GI(Grid Infrastructure)。 对于CRS/GI,他们的一些核心进程的功能基本类似,但是在11.2,新增了很多新的Deamon进程。

10.2 CRS:
$ ps -ef|grep crs/bin
root      4373  3605  0 Feb25 ?        00:02:49 /u01/app/crs/bin/crsd.bin reboot
oracle    4380  4379  0 Feb25 ?        00:00:03 /u01/app/crs/bin/evmd.bin
oracle    4925  4888  0 Feb25 ?        00:00:00 /u01/app/crs/bin/oclsomon.bin
root      4928  4483  0 Feb25 ?        00:00:00 /u01/app/crs/bin/oprocd.bin run -t 1000 -m 10000 –
hsi 5:10:50:75:90 -f
oracle    5065  4512  0 Feb25 ?        00:00:54 /u01/app/crs/bin/ocssd.bin
oracle    6825  4380  0 Feb25 ?        00:00:00 /u01/app/crs/bin/evmlogger.bin -o

11.2 GI:
$ ps -ef|grep grid/bin
root      6656     1  0 Feb25 ?        00:09:20 /u01/app/11.2.0/grid/bin/ohasd.bin reboot
grid      7960     1  0 Feb25 ?        00:16:54 /u01/app/11.2.0/grid/bin/oraagent.bin
grid      7972     1  0 Feb25 ?        00:00:05 /u01/app/11.2.0/grid/bin/mdnsd.bin
grid      7982     1  0 Feb25 ?        00:03:45 /u01/app/11.2.0/grid/bin/gpnpd.bin
grid      7993     1  0 Feb25 ?        00:14:19 /u01/app/11.2.0/grid/bin/gipcd.bin
root      7995     1  1 Feb25 ?        00:41:42 /u01/app/11.2.0/grid/bin/orarootagent.bin
root      8010     1  0 Feb25 ?        00:28:03 /u01/app/11.2.0/grid/bin/osysmond.bin
root      8026     1  0 Feb25 ?        00:01:31 /u01/app/11.2.0/grid/bin/cssdmonitor
root      8040     1  0 Feb25 ?        00:02:22 /u01/app/11.2.0/grid/bin/cssdagent
grid      8057     1  1 Feb25 ?        00:48:04 /u01/app/11.2.0/grid/bin/ocssd.bin
root      8136     1  0 Feb25 ?        00:02:49 /u01/app/11.2.0/grid/bin/octssd.bin reboot
grid      8158     1  0 Feb25 ?        00:02:24 /u01/app/11.2.0/grid/bin/evmd.bin
root      8278     1  0 Feb25 ?        00:04:18 /u01/app/11.2.0/grid/bin/crsd.bin reboot
grid      8357  8158  0 Feb25 ?        00:00:00 /u01/app/11.2.0/grid/bin/evmlogger.bin -o
/u01/app/11.2.0/grid/evm/log/ -l /u01/app/11.2.0/grid/evm/log/evmlogger.log
grid      8406     1  0 Feb25 ?        00:11:22 /u01/app/11.2.0/grid/bin/oraagent.bin
root      8414     1  1 Feb25 ?        00:36:22 /u01/app/11.2.0/grid/bin/orarootagent.bin


1. ocssd.bin:这是一个很核心的进程,如果它异常终止会导致这个节点的集群或者主机重启。这个进程主要用于检查表决盘能否正常访问,节点私网间的通信是否正常。数据库实例上的LMON进程也会注册到CSSD上,这样CSSD会通过LMON来了解数据库实例的健康情况。
  如果节点发生了主机自动重启,需要查看ocssd的日志,位于: <CRS_HOME>/log/<host>/cssd。

11gR2 如何诊断节点重启问题

2. crsd.bin: 这个进程主要用于管理集群中的资源。用来启动、停止检查一些资源,比如数据库实例、ASM、监听、磁盘组、VIP等。在11.2,这些具体的操作由对应的agent执行。另外,OCR的维护也是由CRSD完成的。

3. evmd.bin: 事件监控(event monitor)进程,由它来发布集群事件,比如实例启动、停止等事件。

4. ons进程:Oracle Notification Service daemon,它用于接收evmd发来的集群事件,然后将这些事件发送给应用预订者或者本地的监听,这样就可以实现FAN(Fast Application Notification),应用能够接收到这些事件并进行处理。

5. gsd: 只有当CRS或者GI上需要管理9i的数据库时才需要。在11.2, gsd 默认就是offline的。
可以参考My Oracle Support 文档: GSD Is Used Only if 9i RAC Database is Present (Doc ID 429966.1)

10g和 11.1特有的:
1. oprocd.bin:Oracle Clusterware Process Monitor Daemon,用来监控主机hang,如果发现主机hang后会发起主机重启。只有未使用第三方的集群软件时才运行,Linux上从10.2.0.4开始使用。
   oprocd的日志会在:/etc/oracle/oprocd/*.log.* 或者 /var/opt/oracle/oprocd/*.log.*。

2. oclsomon.bin: 用来监控ocssd进程是否hang,如果发现hang,会发起reboot.

1. cssdagent(11.2): 这个进程由ohasd启动,然后由它来启动、停止、检查ocssd进程,以root身份运行。

2. cssdmonitor(11.2):监控cssdagent,并且检查节点hang(类似于oprocd),监控ocssd进程是否hang(类似于oclsomon),监控vendor clusterware(类似于vmon),以root身份运行。

3. ohasd.bin: 在GI启动时,最先启动的就是ohasd,然后由它启动agent(orarootagent,oraagent, cssdagnet 和 cssdmonitor) ,各个agent再启动对应的进程。 

4. mdnsd.bin:这个进程通过多播(Multicast)发现集群中的节点和所有的网卡信息。一定要确定集群中的网卡支持多播,而且节点间的通信正常。

5. gpnpd.bin: 发布构建集群所需要的bootstrap 信息,并且在集群的所有节点之间同步gpnp profile。

6. gipcd.bin: 这个进程负责管理集群中所有的私网(cluster interconnect)网卡。私网信息是通过gpnpd获得的。

7. gnsd(可选): Grid Naming Service. 相当于子DNS,功能和DNS类似,会取代使用/etc/hosts进行主机的解析。

8. octssd.bin: The Cluster Time Sync Service(CTSS) 用于各个节点间的时钟同步,集群中的一个节点的时钟会作为参照节点,其它节点和这个节点进行时钟同步。注意:当第三方时间同步软件(例如:NTP) 存在时,CTSS会以‘观察者’的方式运行,并不修改节点时间,但是,如果CTSS没有发现第三方时间同步软件,它会开始修改节点时间以便和参考节点同步。

9. osysmond.bin :这是Oracle Cluster Health Monitor(CHM)的主要进程,这个进程在所有节点都会运行,sysmond会将每个节点的资源使用情况发送给cluster logger service,后者将会把所有节点的信息都接收并保存到CHM的资料库。

10. ologgerd: 这是Oracle Cluster Health Monitor(CHM)的另一个主要进程,在一个集群中的,ologgerd 会有一个主机点(master),还有一个备节点(standby)。当ologgerd在当前的节点遇到问题无法启动后,它会在备用节点启用。

11gR2 新特性:Oracle Cluster Health Monitor(CHM)简介

11. <XXX>agent.bin:在11.2,各个资源的启动、停止和检查都是由agent来执行的。ohasd 会把这些agent启动。

oraagent_grid: 启动/停止/检查/清除ora.asm, ora.evmd, ora.gipcd, ora.gpnpd, ora.mdnsd等资源。
orarootagent_root:启动/停止 /检查/清除 ora.crsd, ora.ctssd, ora.diskmon, ora.drivers.acfs, ora.crf (等资源。
oracssdagent_root: 启动/停止/检查 ocssd进程。


oraagent_grid: 启动/停止/检查/清除 asm, ora.eons, ora.LISTENER.lsnr, SCAN listeners, ora.ons, diskgroup  等资源
oraagent_oracle: 启动/停止/检查/清除 service, database 等资源
orarootagent_root : 启动/停止/检查/清除 GNS, VIP, SCAN VIP and network 等资源.
scriptagent_grid:  应用服务定制的服务。


关于agent的更多信息,请参考文章 “11gR2 Agent 简介“。

“Cost-free” joins – 1

Recently I came across some interesting edge cases regarding the costing of joins. They all have in common that they result in (at first sight) unexpected execution plans, but only some of them are actual threats to performance.

Outer Joins

The first one is about outer joins with an extreme data distribution. Consider the following data setup:

create table t1
rownum as id
, rpad('x', 100) as filler
, case when rownum > 1e6 then rownum end as null_fk
connect by
level ;

exec dbms_stats.gather_table_stats(null, 't1')

create table t2
rownum as id
, rpad('x', 100) as filler
connect by
level ;

exec dbms_stats.gather_table_stats(null, 't2')

create /*unique*/ index t2_idx on t2 (id);

The following query is a simple outer join between T1 and T2 and the default, unhinted execution plan that I get from ( and show similar results):

t1.filler as t1_filler
, t2.filler as t2_filler
, t2
t1.null_fk = (+)

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1000K| 202M| 4204 (1)| 00:00:51 |
| 1 | NESTED LOOPS OUTER | | 1000K| 202M| 4204 (1)| 00:00:51 |
| 2 | TABLE ACCESS FULL | T1 | 1000K| 101M| 4202 (1)| 00:00:51 |
| 3 | TABLE ACCESS BY INDEX ROWID| T2 | 1 | 106 | 2 (0)| 00:00:01 |
|* 4 | INDEX RANGE SCAN | T2_IDX | 1 | | 2 (0)| 00:00:01 |

Predicate Information (identified by operation id):

4 - access("T1"."NULL_FK"="T2"."ID"(+))

The optimizer preferred a Nested Loop join albeit the fact that the number of estimated loop iterations is pretty large. Notice in particular the cost column: Although the inner rowsource is estimated to be started 1000K times, the cost of doing so corresponds to just a single execution.For reference here is a cost estimate for a similar operation that corresponds to the expected costing model:

select /*+ use_nl(t1 t2) */
t1.filler as t1_filler
, t2.filler as t2_filler
, t2
where = (+)

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1000K| 202M| 3006K (1)| 10:01:21 |
| 1 | NESTED LOOPS OUTER | | 1000K| 202M| 3006K (1)| 10:01:21 |
| 2 | TABLE ACCESS FULL | T1 | 1000K| 101M| 4200 (1)| 00:00:51 |
| 3 | TABLE ACCESS BY INDEX ROWID| T2 | 1 | 106 | 3 (0)| 00:00:01 |
|* 4 | INDEX RANGE SCAN | T2_IDX | 1 | | 2 (0)| 00:00:01 |

Predicate Information (identified by operation id):

4 - access("T1"."ID"="T2"."ID"(+))

I now had to force the Nested Loop join via a hint, because by default other join methods were preferred by the optimizer. The cost of a single iteration of the loop has now increased to 3, although the access is exactly the same as before (T2 random table access via index lookup of T2.ID), and the cost of the Nested Loop join corresponds to the known formula: Estimated starts times the cost of a single iteration, which is 3000K in this case here, plus the 4200 of the Full Table Scan for accessing the outer row source, plus CPU costing overhead.So what makes the difference between the two? It’s the data. The column name chosen for the column in T1 already reveals what’s so special: The join column used (NULL_FK) is actually NULL for all rows.The optimizer takes this into account and assumes that none of those rows from the driving row source will actually match a row of the inner row source – in fact the lookup to the inner row source could be short-circuited in some way, since a NULL value by definition isn’t supposed to find a match for this join. I haven’t investigated to what extent the runtime engine does this, however in the Rowsource Statistics the inner row source is started the expected number of times, although no logical I/O is recorded for it, but some CPU time, so at least some work seems to be done there.Modifying the test case so that more of the FKs are actually non-null shows that the cost calculation is scaled accordingly. In fact the cost calculation is more or less the same than that of a corresponding inner join that could filter out those driving rows with NULL values in the join column.The overall performance of the execution plan is quite decent, so although it looks quite unusual it performs pretty well.In the second part I’ll show another interesting, unexpected join execution plan that however can cause real performance problems.

TEL/電話+86 13764045638
QQ 47079569