I encountered a problem with database creation freezing/hanging at a very early stage, with the process spinning on 100% CPU while not seeming to be doing anything. This happened both when trying to start up the Oracle database configuration assistant (dbca), where it froze on the splash screen, and when using the “startup nomount” command in sqlplus.
My setup is:
- Oracle 11.2 (both 11.2.0.3 and 11.2.0.4);
- Oracle Linux 6.7
- VirtualBox 5.0.10, installed on Windows 7.
The process occupying 100% CPU was similar to that below:
oracleDBUA5305324 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
I unsuccessfully tried a few things to get to the bottom of this or eliminate possible causes: tracing with strace, switching between ASMM (sga_target) and AMM (memory_target), switching between normal pages and huge pages.
My colleague Frits Hoogland offered to help and he figured it out.
I logged into sqlplus as sysdba, which created the following database session:
$ ps -ef oracle 3638 3637 0 17:42 oracleMAGPIE (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
We traced this session with the ‘perf top’ command, of which I was previously unaware. perf is a great profiling tool, included in the Linux 2.6 kernel. ‘perf top’ gives a dynamic view of the performance of a process, similar, as the name suggests, to the top command. We passed it the process id of the database session:
$ perf top -p 3638
I issued the ‘startup nomount’ command in the sqlplus session. The ‘perf top’ output, after a few seconds, settled on showing the following:
This shows that the process was looping executing skgvm_cpuid. Frits recognised this meant it was stuck trying to identify the CPU type.
This led us to check the CPU’s definition in VirtualBox.
The problem was caused by a new performance enhancement feature in VirtualBox 5: ‘paravirtualization’. The ‘Paravirtualization Interface’ was set to ‘Default’:
Shutting down the VM and changing this to ‘Minimal’ resolved the problem.
I experimented further and found that setting it to ‘None’ and ‘Legacy’ also resolved the problem. Setting it to ‘KVM’ caused the same freeze to occur on trying to identify the CPU type. On a Linux VM I imagine setting this to ‘Default’ and ‘KVM’ is exactly the same thing. The other setting available, ‘Hyper-V’, is intended for Windows VMs.
It looks like this, hopefully great, new feature in Virtualbox 5 is not completely bug-free yet.
Michael Geuer
/ February 11, 2016Thank you very much, after two complete new installations (OS, DB) with a freezed DBCA, your article saved a lot of time.
Michael
patrickhurley
/ February 22, 2016Really pleased the article was of help Michael. Thanks for letting me know.
sergeyrudyshin
/ February 20, 2016came across the same issue
can add that the issue is reproduced on AMD and isn’t on Intel processors
do you have an AMD cpu?
patrickhurley
/ February 22, 2016Thanks for the information. Yes my CPU is AMD.
wols10
/ February 24, 2016Ohhh , thank you !! , it took a long time with this and thanks to you I’ve solved it . !
Rich
/ May 30, 2016Thank you very much for posting this. I’m also using VirtualBox 5 and had been fighting this for quite a while as I was building a VM.
Axel
/ June 5, 2016Cudos Patrickl. Your hint finally solved my problem allthough in my case it was svgvm_hpvm_xen burning up cpu percentage.
Heraldo
/ July 9, 2016Thank you Patrick.
I found your workaround at it works. After a week of running in circles, trying oel 7, oel 6, mixing oracle GI 12 and GI 11, I finally have it installed. I can confirm that it affects not only RDBMS, but GI install also (it freezes runnig root.sh trying to startup ASM instance).
I also have an AMD processor, don’t have any intel, so I can’t test the issue.
Thanks again
Yevgen
/ February 12, 2017Thanks a lot. You save my time.
My CPU is also AMD.
Once again thank you.
Ram
/ December 5, 2017Thanks a lot… Awesome analysis and root cause analysis.. I have been troubleshooting this whole of last night.. FInally here I find the answer…
Pranavf
/ May 10, 2018Issue is because of SQLplus might running from the oracle client home and it crashing on running the startup commands.
Run the sqlplus from the non-client oracle home using admin command prompt and try the commands then it should work as expected.
so resolution is to run the sqlplus from the main oracle home
patrickhurley
/ May 10, 2018Thanks for the comment, but it’s not correct in this case. There was no oracle client installation on this server; sqlplus was running from the main (and only) Oracle home. The resolution was to adjust the VirtualBox paravirtualization setting, as described.