...
Code Block |
---|
#!/bin/bash # In case you installed into a custom path then modify the below $ORACLE_HOME export $ORACLE_HOME=/u01/app/oracle/product/12/dbhome_1 sudo ln -s \$ORACLE_HOME/lib/libclntshcore.so.12.1 /usr/lib sudo ln -s \$ORACLE_HOME/lib/libclntsh.so.12.1 /usr/lib cp \$ORACLE_HOME/rdbms/lib/ins_rdbms.mk \$ORACLE_HOME/rdbms/lib/ins_rdbms.bkp cp \$ORACLE_HOME/rdbms/lib/env_rdbms.mk \$ORACLE_HOME/rdbms/lib/env_rdbms.bkp sed -i 's/\$(ORAPWD_LINKLINE)/\$(ORAPWD_LINKLINE) -lnnz12/' \$ORACLE_HOME/rdbms/lib/ins_rdbms.mk sed -i 's/\$(HSOTS_LINKLINE)/\$(HSOTS_LINKLINE) -lagtsh/' \$ORACLE_HOME/rdbms/lib/ins_rdbms.mk sed -i 's/\$(EXTPROC_LINKLINE)/\$(EXTPROC_LINKLINE) -lagtsh/' \$ORACLE_HOME/rdbms/lib/ins_rdbms.mk sed -i 's/\$(OPT) \$(HSOTSMAI)/\$(OPT) -Wl,--no-as-needed \$(HSOTSMAI)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(OPT) \$(HSDEPMAI)/\$(OPT) -Wl,--no-as-needed \$(HSDEPMAI)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(OPT) \$(EXTPMAI)/\$(OPT) -Wl,--no-as-needed \$(EXTPMAI)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' \$ORACLE_HOME/network/lib/env_network.mk sed -i 's/\$(SPOBJS) \$(LLIBSERVER)/\$(SPOBJS) -Wl,--no-as-needed \$(LLIBSERVER)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(S0MAIN) \$(SSKFEDED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFEDED)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(S0MAIN) \$(SSKFODED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFODED)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(S0MAIN) \$(SSKFNDGED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFNDGED)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(S0MAIN) \$(SSKFMUED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFMUED)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \($(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$LD \$LD_RUNTIME/$LD -Wl,--no-as-needed \$LD_RUNTIME/' \$ORACLE_HOME/bin/genorasdksh sed -i 's/\$(GETCRSHOME_OBJ1) \$(OCRLIBS_DEFAULT)/\$(GETCRSHOME_OBJ1) -Wl,--no-as-needed \$(OCRLIBS_DEFAULT)/' \$ORACLE_HOME/srvm/lib/env_srvm.mk sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/crs/lib/env_has.mk; sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/odbc/lib/env_odbc.mk; sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/precomp/lib/env_precomp.mk; sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/srvm/lib/env_srvm.mk; sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/network/lib/env_network.mk; sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/ldap/lib/env_ldap.mk; sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/ord/im/lib/env_ordim.mk; sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/plsql/lib/env_plsql.mk; sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/ctx/lib/env_ctx.mk; sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' \$ORACLE_HOME/sqlplus/lib/env_sqlplus.mk; |
Press the "retry" button on the installer which should at least let the installation complete.
But the resulting Oracle installation will not be able to start an instance: startup nomount will hang with a deadlocked Oracle BEQ process which shows a stack trace similar to this:
Code Block |
---|
#0 __lll_lock_wait_private () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:95
#1 0x00007fadc7f99376 in __tz_convert (timer=0x7fadc82b2c20 <tzset_lock>, use_localtime=1, tp=0x7fadc7437870) at tzset.c:579
#2 0x0000000010cd2fd6 in localtime_r ()
#3 0x0000000003e01f5f in slsstdts ()
#4 0x0000000003e01dbd in slsstdtscond ()
#5 0x0000000002d366fb in dbktWriteTimestampWCdbInfo ()
#6 0x0000000002a43917 in ssexhd ()
#7 0x00000000036c638f in sslssSynchHdlr ()
#8 0x00000000036c6086 in sslsshandler ()
#9 <signal handler called>
#10 0x00007fadc7f985e6 in update_vars () at tzset.c:132
#11 __tzset_parse_tz (tz=<optimized out>) at tzset.c:363
#12 0x00007fadc7f9ac60 in __tzfile_compute (timer=<optimized out>, use_localtime=use_localtime@entry=1,
leap_correct=leap_correct@entry=0x7ffcf45fd9b0, leap_hit=leap_hit@entry=0x7ffcf45fd9ac, tp=tp@entry=0x7ffcf45fdaa0) at tzfile.c:684
#13 0x00007fadc7f9951e in __tz_convert (timer=timer@entry=0x7ffcf45fda88, use_localtime=use_localtime@entry=1,
tp=tp@entry=0x7ffcf45fdaa0) at tzset.c:587
#14 0x00007fadc7f9657d in __localtime_r (t=t@entry=0x7ffcf45fda88, tp=tp@entry=0x7ffcf45fdaa0) at localtime.c:30
#15 0x00007fadc7f971dc in ranged_convert (tp=0x7ffcf45fdaa0, t=0x7ffcf45fda88, convert=<optimized out>) at mktime.c:310
#16 __mktime_internal (offset=0x7fadc82b2b98 <localtime_offset>, convert=<optimized out>, tp=0x7ffcf45fdb60) at mktime.c:478
#17 __GI_mktime (tp=0x7ffcf45fdb60) at mktime.c:591
#18 0x0000000003e02271 in slclts ()
#19 0x00000000029d6d7b in kzxslNotifier ()
#20 0x0000000003295609 in kscnfy ()
#21 0x0000000000f8cb02 in ksmcsg ()
#22 0x0000000001e73b26 in opistr_real ()
#23 0x0000000001e7257d in opistr ()
#24 0x0000000010c3a54d in opiodr ()
#25 0x0000000010ed4fa9 in ttcpip ()
#26 0x0000000001e6bc04 in opitsk ()
#27 0x0000000001e706dd in opiino ()
#28 0x0000000010c3a54d in opiodr () |
This shows a deadlock because localtime() is entered recursively due to some signal being handled - and localtime is not reentrant so it blocks on a lock.
The solution is the following:
- Remove all libc* libraries from lib/stubs/
- Relink all
Code Block |
---|
cd lib/stubs
rm libc*
cd ../../bin
./relink all |
After the relink check its log file to ensure that all links succeeded.
After this you can run dbca to create a database, either assisted or unassisted:
Code Block |
---|
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname $DBNAME -sid $DBNAME -responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword oracle \
-systemPassword oracle \
-createAsContainerDatabase false \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 2048 \
-storageType FS \
-datafileDestination "/opt/oracle/oradata/" \
-redoLogFileSize 500 \
-emConfiguration NONE \
-ignorePreReqs |
Links:
...