Quindi ultimamente ho passato un periodo difficile su cose che dovrei sapere meglio. Ci siamo già stati tutti.
Sto cercando di ricreare un banco di prova RAC a 2 nodi sul mio laptop. Questo sarà Oracle 12.1.0.2 su Oracle Linux 6.5 con VirtualBox 5.0. Dovrebbe essere abbastanza semplice, giusto? Ho anche scritto istruzioni su come farlo nell'aprile di quest'anno. Sto seguendo gli stessi esatti passaggi nel mio documento sullo stesso identico laptop, ma ho ancora problemi. Le uniche due cose che sono cambiate sono che vado direttamente a 12.1.0.2 (il mio documento era 12.1.0.1 credo) e ora ho VB 5.0 sul mio laptop.
Ho i miei 2 nodi virtuali creati e pronti per l'uso. Accendo l'OUI per avviare la mia installazione di Grid Infrastructure. Quando l'OUI arriva alla fase di collegamento, viene visualizzato un messaggio di errore.
Errore nell'invocare il target 'irman ioracle' di makefile.
Siamo stati tutti a un bivio nella vita. Hai una scelta da fare. Vado a sinistra o vado a destra? Sfortunatamente per me, ho girato nella direzione sbagliata e ho perso alcune settimane del mio tempo libero. A questo punto, dovevo prendere una decisione. Faccio esattamente come dice l'errore o mi affido alla mia esperienza? Ho ignorato ciecamente l'errore e ho fatto affidamento sulla mia esperienza. Sono stupido.
Solo due mesi fa ho avuto lo stesso identico errore quando non sono riuscito a compilare GI 12.1.0.2 su un banco di prova. Quel banco di prova era in esecuzione su host VMWare ESX. Ho presentato una richiesta di autorizzazione al supporto Oracle e mi hanno fatto sapere che il mio problema di compilazione era dovuto al fatto che non avevo abbastanza RAM dedicata a ciascuna macchina virtuale. Essendo un ambiente virtuale, questo è stato abbastanza facile da risolvere. Ho fatto aumentare la RAM al mio SysAdmin e scambiare spazio sulle macchine virtuali e GI 12.1.0.2 compilato esattamente come promesso. Quindi ho naturalmente pensato che stavo incontrando lo stesso problema qui. Sul mio laptop, ho continuato ad aumentare la RAM. Ho ampliato lo spazio di scambio. Sono persino arrivato al punto di ricostruire i nodi da zero. Ho trascorso le ultime due settimane lungo la strada dell'esperienza e l'ho trovata accidentata, graffiante, polverosa e molto sgradevole.
La strada che avrei dovuto prendere era di fare esplicitamente come diceva la finestra pop-up... leggi il file di registro per maggiori dettagli. Quando finalmente ho superato la mia testardaggine nel pensare di conoscere la risposta, ho letto il file di registro. Ho trovato i seguenti messaggi verso la fine.
INFO: - Linking Oracle
INFO: rm -f /u01/app/crs12.1.0.2/rdbms/lib/oracle
INFO: /usr/bin/ld: cannot find -ljavavm12 collect2: ld returned 1 exit status
INFO: make: *** [/u01/app/crs12.1.0.2/rdbms/lib/oracle] Error 1
Bene, ora è completamente ovvio! Manca un file di libreria. Un rapido controllo su Internet mi ha portato facilmente alla soluzione. Non sono solo in questo problema, ma per qualche motivo l'OUI non sta copiando libjavavm12.a su $GRID_HOME/lib come dovrebbe essere. Con quella finestra pop-up ancora lì, emetto quanto segue sul nodo.
[oracle@host01 ~]$ export GRID_HOME=/u01/app/crs12.1.0.2 [oracle@host01 ~]$ cp $GRID_HOME/javavm/jdk/jdk7/lib/libjavavm12.a $GRID_HOME/lib
Sono quindi tornato alla finestra a comparsa e ho premuto il pulsante RIPROVA. Abbastanza sicuro, quella dannata cosa è stata compilata e l'OUI ha terminato il suo lavoro.
AGGIORNAMENTO:ho riscontrato lo stesso problema durante l'installazione del software RDBMS 12.1.0.2 sul cluster. Ho usato la stessa esatta correzione per far compilare correttamente Oracle anche per il software del database.
Ma non avevo finito. Come tutti coloro che hanno installato Grid Infrastructure sanno, devono eseguire lo script $GRID_HOME/root.sh su tutti i nodi più avanti nel processo. Quando ho provato questo sul primo nodo, ho ricevuto un errore di "segmentazione errore". Si scopre che c'è un problema (e ancora, non sono solo qui) con perl nelle installazioni di GI 12.1.0.2. Anche i seguenti utenti riceveranno un errore di segmentazione:
cd $GRID_HOME/perl/bin
./perl -v
La soluzione è reinstallare Perl in $GRID_HOME. Ho trovato un post sul blog di Laurent Leturgez che descrive esattamente come si fa. Non l'avrei mai capito da solo. Dopo aver reinstallato Perl su tutti i miei nodi, lo script root.sh ha funzionato bene.
AGGIORNAMENTO:ho riscontrato lo stesso problema durante l'installazione del software RDBMS 12.1.0.2 sul cluster. Ho usato la stessa esatta correzione per far funzionare perl senza un errore di segmentazione.
Come tutti noi, mi affido alla mia esperienza per farmi risparmiare un sacco di tempo. Le cose che ho imparato un mese o un anno fa vengono applicate oggi. A volte, l'esperienza si mette sulla nostra strada e ci porta lungo una strada che avremmo voluto rimanesse non percorsa.