With Oracle 12.2 we can use a Virtual Account during the Oracle installation on Windows. Virtual Accounts allow you to install an Oracle Database and, create and manage Database services without passwords. A Virtual Account can be used as the Oracle Home User for Oracle Database Single Instance installations and does not require a user name or password during installation and administration.
In this blog I want to share an experience I had with the Windows Virtual Accounts when installing Oracle.
I was setting an Oracle environment on Windows Server 2016 for a client. During The installation I decided to use the Virtual Account option.
After the installation of Oracle, I created a database PROD. And everything was fine
SQL*Plus: Release 184.108.40.206.0 Production on Wed Sep 19 05:43:05 2018 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c Standard Edition Release 220.127.116.11.0 - 64bit Production SQL> select name,open_mode from v$database; NAME OPEN_MODE --------- -------------------- PROD READ WRITE SQL> SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string C:\APP\ORACLE\PRODUCT\12.2.0\D BHOME_1\DATABASE\SPFILEPROD.ORA SQL>
Looking into the properties of my spfile I can see that there is a Windows group named ORA_OraDB12Home1_SVCACCTS
which has full control of the spfile. Indeed as we used the virtual account to install the Oracle software, oracle will automatically create this group and will use it for some tasks
After the first database, the client asked to create a second database. Using DBCA I created a second let’s say ORCL.
After the creation of ORCL, I changed some configuration parameters of the first database PROD and decide to restart it. And then I was surprised with the following error.
SQL> shut immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file 'C:\APP\ORACLE\PRODUCT\12.2.0\DBHOME_1\DATABASE\INITPROD.ORA' SQL>
Waw!! What happened is that when using DBCA to create the second database ORCL, Oracle changed the properties of the spfile of the first database PROD (spfilePROD.ora). Yes it’s strange but this was exactly what happened. The Virtual Group was replaced by OracleServiceORCL
And Then I was able to start the PROD database
SQL> startup ORACLE instance started. Total System Global Area 524288000 bytes Fixed Size 8748760 bytes Variable Size 293601576 bytes Database Buffers 213909504 bytes Redo Buffers 8028160 bytes Database mounted. Database opened. SQL>
But this issue means that every time I create a new database with DBCA the properties of spfiles of others databases may be changed and this is not normal.
When checking for this strange issue I found this Oracle Support note
DBCA Using Virtual Account Incorrectly Sets The SPFILE Owner (Doc ID 2410452.1)
So I decided to apply the recommended patches by Oracle
Oracle Database 18.104.22.168.180116BP
C:\Users\Administrator>c:\app\oracle\product\12.2.0\dbhome_1\OPatch\opatch lspatches 26615680;26615680:SI DB CREATION BY DBCA IN VIRTUAL ACCOUNT INCORRECTLY SETS THE ACL FOR FIRST DB 27162931;WINDOWS DB BUNDLE PATCH 22.214.171.124.180116(64bit):27162931
And Then I create a new database TEST to see if the patches have corrected the issue.
Well I was able to restart all databases without any errors. But looking into the properties of the 3 databases, we can see that the patch added back the Virtual Group but the service of the last database is still present for previous databases. I don’t really understand why OracleServiceTest should be present in spfilePROD.ora and spfileORCL.ora.
Conclusion : In this blog I shared an issue I experienced with Windows Virtual Account. Hope that this will help.