This post is also available in: Português
In my previous post I showed how to install the Oracle 18c Exadata binaries in a Oracle Linux 7. Next step is to create and run a database in this environment.
Note that this is intended for study only and test the amazing new features of 18c, following this article can make you probably face very weird problems and don't open any SR in case you face those errors because the steps below are not supported by oracle.
The biggest problem of running the Exadata binaries on a non-exa env is that when you try to run a "startup nomount", you get a weird: ORA-12754: Feature 'startup' is disabled due to missing capability 'Runtime Environment'.
[oracle@ora18cserver ~]$ sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 Production on Mon Feb 26 12:02:07 2018 Version 18.1.0.0.0 Copyright (c) 1982, 2017, Oracle. All rights reserved. Connected to an idle instance. SQL> startup nomount; ORA-12754: Feature 'startup' is disabled due to missing capability 'Runtime Environment'. SQL>
This error ends up preventing you from creating or stating any instance, even with dbca.
After investigating, I've found out that one library is causing it:
- $ORACLE_HOME/lib/libserver18.a - Size: 442 MB
This is the main oracle database library and it is responsible for trowing the error above. Disassembling a library and modifying it contents to avoid the error above is not something people can easily do (and probably even not legal). So my advise is to replace it with a working one, after installing the binaries.
However, you are probably asking where can you find a working version of this library? My recommendation is to create an Oracle Cloud trial account and deploy a 18c DB in your own Oracle Cloud environment.
I've written another article showing step by step how to create a 18c in Oracle Cloud. Take a look.
UPDATE:
After publishing this article, I've received a few feedback of other methods people used to create the DB. Two of them brought my attention:
- https://mahmoudhatem.wordpress.com/2018/03/01/playing-with-oracle-db-18c-on-premises-before-official-release/ by Hatem Mahmoud, which involves using systemtap interceptions.
- Changing hidden parameter "_exadata_feature_on=true" before starting nomount the DB. Add this custom parameter in dbca or in your init file. Thanks Pankaj Dhar for showing me that.
Continuing with the library method, let me do a demo in my environment running in a Virtualbox, after I got the libserver18.a from my OPC.
First, let's try to start the instance in nomount and check what happens:
[oracle@ora18cserver ~]$ export ORACLE_HOME=/u01/app/oracle/product/18.0.0/dbhome_1 [oracle@ora18cserver ~]$ export ORACLE_SID=orcl [oracle@ora18cserver ~]$ export PATH=$PATH:$ORACLE_HOME/bin [oracle@ora18cserver ~]$ sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 Production on Mon Feb 26 21:51:12 2018 Version 18.1.0.0.0 Copyright (c) 1982, 2017, Oracle. All rights reserved. Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.1.0.0.0 SQL> startup nomount; ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/18.0.0/dbhome_1/dbs/initorcl.ora' SQL> exit Disconnected from Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.1.0.0.0 [oracle@ora18cserver ~]$
I forgot the pfile:
[oracle@ora18cserver ~]$ echo "db_name=orcl" > $ORACLE_HOME/dbs/initorcl.ora [oracle@ora18cserver ~]$ sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 Production on Mon Feb 26 21:58:29 2018 Version 18.1.0.0.0 Copyright (c) 1982, 2017, Oracle. All rights reserved. Connected to an idle instance. SQL> startup nomount; ORA-12754: Feature 'startup' is disabled due to missing capability 'Runtime Environment'. SQL> exit Disconnected [oracle@ora18cserver ~]$
So here is the point we got the ORA-12754 error.
Now let me replace the lib for the one from my OPC environment and see what happens:
[oracle@ora18cserver ~]$ cd $ORACLE_HOME/lib [oracle@ora18cserver lib]$ mv libserver18.a libserver18.a.orig [oracle@ora18cserver lib]$ unzip ~/libserver18.a.zip -d ./ Archive: /home/oracle/libserver18.a.zip inflating: ./libserver18.a [oracle@ora18cserver lib]$ cd [oracle@ora18cserver ~]$ relink all writing relink log to: /u01/app/oracle/product/18.0.0/dbhome_1/install/relink_2018-02-26_22-01-57PM.log [oracle@ora18cserver ~]$ sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 Production on Mon Feb 26 22:02:54 2018 Version 18.1.0.0.0 Copyright (c) 1982, 2017, Oracle. All rights reserved. Connected to an idle instance. SQL> startup nomount; ORACLE instance started. Total System Global Area 243266936 bytes Fixed Size 8656248 bytes Variable Size 180355072 bytes Database Buffers 50331648 bytes Redo Buffers 3923968 bytes SQL> exit Disconnected from Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.1.0.0.0 [oracle@ora18cserver lib]$
Note that the file libserver18.a.zip in my home is the lib file from my OPC. Also, I had to run a relink all in the end. Otherwise the error would persist.
ORA-12754 error is not showing anymore, let's create an instance with dbca!
I won't cover here all the steps of dbca here because you are probably very used to it.
Wait until all the actions are performed:
And after some time it completed:
And lastly we can see we have our 18c database running in the Virtualbox:
Happy 18c playing.
Have you enjoyed? Please leave a comment or give a 👍!
13 comments
Skip to comment form
I tried your both documents and it works except the issue with lib.
Do you mind sharing libserver18.a?
Instead of changing lib file one can get the database running as follows -
1. instead of creating database using dbca, use dbca to get the scripts.
2. there will be 3 init* files. Modify all of them just place _exadata_feature_on=true.
3. execute xxxx.sh script to run and build database.
Author
And thanks for sharing this method, this is amazing!
please I do as you exactly modify and I didnot face the erro but I donot know how to execute xxxx.sh script to run and build database ? could you help me please ...
From directory where the script is stored and run
$ ./xxxx.sh
Amazing. Worked like a charm Pankaj! Thanks for sharing.
Alternate you can create a database template and modify it with "_exadata_feature_on=true" parameter.
Author
Hi Pankaj,
I've posted an article showing how to create your 18c in OPC. Take a look.
Regards,
RJ
hi all ,
just in case someone would like to upgrade grid infrastructure from 12.2 to 18c , create pfile from the current spfile before upgrading. it would startup next time unless you add _exadata_feature_on=true to the pfile and startup from pfile=xxx
thx all.
hi all,
while installing the database using dbca method i am getting below error. can you any one please help me on this.
DBT-06303 unable to check if location is on ACFS.
Hello RJ,
can you upload libserver18.a.zip . ? after I startup db but I cannot open db
To good.
Without enabling exadata feature in init file how a database can be created with binary of oracle exadata.
The init file from script doesn't have this hidden parameter.
Trying a fresh install of 18c GI on my OL 7.4 VM, the installer works until it gets to the ASMCA step -- then I get the ORA-12754. I see that there is a "libserver18.a" in the Grid Home -- would that be the same one that would work for the DB Home? I also was thinking to try the "_exadata_feature_on"=true parameter trick -- but not sure where I'd set it for ASM.