Test di HugePages con XEN

Ebbene, dopo essere riuscito ad ottenere una macchina para-virtualizzata con XEN con il supporto per le Huge Pages come descritto nel mio post precedente, era arrivato il momento di verificare se effettivamente c’erano problemi con questa accoppiata.

Confesso che nella fretta come al solito ho voluto bruciare le tappe ed ho subito cercato di configurare le Huge pages e di provare a far partire il database Oracle (sempre l’istanza 11gR2). La fretta è stata una cattiva consigliera come il solito, perché ho litigato un po’ con i parametri di configurazione della memoria di Oracle per far stare tutto nella RAM che ho a disposizione. Seguirò nella descrizione lo stesso ordine con cui ho eseguito le operazioni.

Configurazione del sistema operativo

Una volta “abilitato” il kernel all’utilizzo delle Huge Pages, bisogna configurare quanta parte di memoria debba essere dedicata  a queste pagine giganti, infatti andando a vedere il file /proc/meminfo si osserva:

[root@oel53test11gR201 ~]# cat /proc/meminfo |grep Huge
HugePages_Total:      0
HugePages_Free:       0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

per farlo in modo definitivo (si può fare anche al volo, ma siccome le pagine devo essere contigue potrebbe essere necessario un reboot affinché il sistema trovi sufficente memoria contigua libera) si modifica il file /etc/sysctl.con aggiungendo le righe:

vm.nr_hugepages = 420
vm.hugetlb_shm_group = 505

La prima riga corrisponde al numero di pagine, che moltiplicato per la dimensione della pagina (nel mio caso 2048K) la dimensione in byte della memoria che si vuole gestire in questo modo (in questo esempio 420*2048k=840M). La seconda riga è importante se si intende far utilizzare le Huge Pages ad oracle: indica il gruppo del sistema operativo che  può utilizzare le huge pages con le chiamate di sistema shmat/smget (Vedi vm/hugetlbpage.txt) Questo secondo la documentazione, ma vedremo dopo che a me questo non torna.

Secondo alcune note del Metalink Oracle, ad esempio la 560501.1, occorre modificare anche il file /etc/security/limits.conf aggiungendo le due righe:

oracle soft memlock n
oracle hard memlock n

Dove n è il numero di KByte che si assegnerà alla SGA (immagino sia il caso di mettere un numero un po’ più grande)

Modifcato i file si può fare un reboot e  dopo di ciò si ottiene:

[root@oel53test11gR201 ~]# cat /proc/meminfo |grep Huge
HugePages_Total:   420
HugePages_Free:    420
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

Configurazione di Oracle

Stando alla nota Oracle Metalink 749851.1 l’impostazione “Automatic Memory Management (AMM)” di Oracle 11g non è compatibile con l’uso delle HugePages, quindi occorre settare a 0 i parametri MEMORY_TARGET e MEMORY_MAX_TARGET .  Ho quindi impostato i vari parametri SGA_TARGET, SGA_MAX_SIZE PGA_AGGREGATE_TARGET, con qualche difficoltà. Non ho verificato se l’incompatibilità è certificata anche per la R2 di 11g, in ogni caso questa incompatibilità spiega il perché nei manuali ufficiali non viene incoraggiato l’utilizzo delle Huge Pages.

Dopo aver aggiustato in più fasi tutti i parametri Oracle sono arrivato finalmente ad un risultato. Ad un certo punto sono arrivato al livello che sembrava tutto a posto ma da /proc/meminfo risultavano ancora tutte le pagine libere, ad indicare che Oracle non le usava: era perché il numero di pagine che avevo riservato ancora non bastavano per tutta la SGA, infatti aumentandolo da 405 a 420 ho risolto.

… risolto poco, perché il risultato del tentativo di avvio dell’istanza Oracle è stato un reboot della macchina virtuale con la visualizzazione sulla console di XEN di un bel “kernel panic”.

A questo punto ho fatto quello che avrei dovuto fare subito, ho provato le hugepages con un programmino di test, precisamente quello descritto in questo bel articolo.

Riporto quindi il messaggio in console:

Unable to handle kernel paging request at ffff88005cc122f0 RIP:
[<ffffffff802cd3ec>] hugetlb_no_page+0×1e3/0×27e
PGD 13cd067 PUD 15cf067 PMD 16b6067 PTE 801000005cc12065
Oops: 0003 [1] SMP
last sysfs file: /block/dm-0/range
CPU 0
Modules linked in: autofs4(U) hidp(U) nfs(U) lockd(U) fscache(U) nfs_acl(U) rfcomm(U) l2cap(U) bluetooth(U) sunrpc(U) dm_multipath(U) scsi_dh(U) scsi_mod(U) ipv6(U) xfrm_nalgo(U) crypto_api(U) parport_pc(U) lp(U) parport(U) pcspkr(U) xennet(U) dm_raid45(U) dm_message(U) dm_region_hash(U) dm_mem_cache(U) dm_snapshot(U) dm_zero(U) dm_mirror(U) dm_log(U) dm_mod(U) xenblk(U) ext3(U) jbd(U) uhci_hcd(U) ohci_hcd(U) ehci_hcd(U)
Pid: 3435, comm: oracle Tainted: G      2.6.18-2.6.18-164xenhugepages #1
RIP: e030:[<ffffffff802cd3ec>]  [<ffffffff802cd3ec>] hugetlb_no_page+0×1e3/0×27e
RSP: e02b:ffff880063017d18  EFLAGS: 00010246
RAX: ffff88005cc122f0 RBX: 0000000048c0d0e7 RCX: 0000000048c0d027
RDX: 0000000000000000 RSI: 0000000048c0d0e7 RDI: 000000008bdffe98
RBP: 0000000000000000 R08: ffffffff804fbfc3 R09: 0000000000000908
R10: 0000000000000000 R11: 0000000000000000 R12: ffff880002fe5000
R13: ffff8800a12e4160 R14: 000000008bdffe98 R15: ffff88005fb5ce58
FS:  00002abe89f78e60(0000) GS:ffffffff805ce000(0000) knlGS:0000000000000000
CS:  e033 DS: 0000 ES: 0000
Process oracle (pid: 3435, threadinfo ffff880063016000, task ffff880063ac87a0)
Stack:  00000001804f62c0  ffff88005cc122f0  ffff880009a95b80  0000000000000000
ffff88005cc122f0  ffff880009a95b80  000000008bdffe98  0000000000000001
ffff88005fb5ce58  ffffffff802cd4dc
Call Trace:
[<ffffffff802cd4dc>] hugetlb_fault+0×55/0xba
[<ffffffff80208b0c>] __handle_mm_fault+0×5c/0×1354
[<ffffffff80241249>] vma_prio_tree_insert+0×20/0×38
[<ffffffff8026766a>] do_page_fault+0xf7b/0×12e0
[<ffffffff8020e6fe>] do_mmap_pgoff+0×658/0×7c3
[<ffffffff80264901>] _spin_lock_irqsave+0×9/0×14
[<ffffffff80231992>] __up_write+0×27/0xf2
[<ffffffff8026082b>] error_exit+0×0/0×6e

Code: 48 89 18 83 7c 24 04 00 74 23 41 f6 47 28 08 75 1c 48 8b 4c
RIP  [<ffffffff802cd3ec>] hugetlb_no_page+0×1e3/0×27e
RSP <ffff880063017d18>
CR2: ffff88005cc122f0
<0>Kernel panic – not syncing: Fatal exception

Va detto, che l’errore non avviene nel momento in cui il programma alloca le pagine (con shmget) ma quando cerca di scriverci dentro. Ho anche provato ad eseguire il programmino di test dopo aver tolto dal file /etc/sysctl.conf la riga vm.hugetlb_shm_group = 505, in questo modo stando alla documentazione solo l’utente root dovrebbe essere in grado di utilizzare le Huge Pages, ma nel mio caso non è cambiato nulla, la macchina si riavviata con lo stesso errore.

Ricompilare il Kernel con XEN e HUGEPAGES

Dopo giorni (ma in realtà erano mesi che volevo farlo) sono riuscito a ricompilare il kernel su Oracle Enterprise Linux 5.3. Si tratta di una installazione su una macchina virtuale XEN che ho fatto qualche settimana fa per installare e testare Oracle 11gR2. Una delle cose che ho notato gia tempo fa è che sia sulla macchina “ospitante” (Dom0 il linguaggio XEN) che sulle macchine para-virtualizzate linux non è configurato il supporto per le HugePages, mentre su una macchina fully-virtualised tale supporto è presente (la macchina fully virtualised mi era necessaria per installare un versione linux 32 bit, usata a suo tempo per testare 11gR1 quando la versione 64 bit non era ancora uscita).

Ho sempre pensato che se nel kernel compilato con il supporto XEN non c’era il supporto per le Huge Pages ci doveva essere un motivo ben preciso, qualche vincolo strutturale; purtroppo però a tutt’oggi non ho trovato una spiegazione di  cio’, non una nota dove si dica che le macchine virtuali non possono usare Huge Pages.

Un po’ di tempo fa ho scoperto, grazie al blog di Sergio Leunissen, che Oracle ha messo a disposizione un server YUM pubblico. Si tratta di un server da cui è possibile scaricare e installare in modo quasi automatico i pacchetti rpm aggiornati, utilizzando una utility chiamata appunto YUM. Chiaramente in questi aggiornamenti non sono inclusi le patch di sicurezza che vengono fornite solo con il supporto ULN. Da qui ho scaricato il pacchetto RPM dei sorgenti del kernel. Gia questa fase è stata per me problematica, perché con YUM non sono stato capace di farlo, ho scaricato l’rpm con wget e l’ho installato con rpm.

Una volta installati i sorgenti del kernel sono passato alla difficoltà successiva: come compilare il kernel? I pacchetti rpm con in sorgenti vengono installati con una struttura particolare, che non conoscevo molto, francamente io quando smanettavo di più con linux ero una amante della distrubuzione Slackware e della sua organizzazione a pacchetti tar.gz. In ogni caso ho scoperto l’utility rpmbuild, sulla quale però non è che la documentazione abbondi.

Fra mille ricerche il link più utile che ho trovato è stato senz’altro questo. In tutti però, compresi questo e questo manca una informazione chiara su come funziona la configurazione. Infatti io continuavo a modificare a mano il file .config aggiungendo le righe:

CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y

Ma sistematicamente osservavo che il make me le “spianava”, cancellava le righe togliendo di fatto il supporto alle Huge Pages. Da sottolineare poi un’altra cosa che non capivo: facendo make menuconfig (e un paio di volte mi sono fatto anche il make config con l’interminabile sfilza di domande) non compariva nessuna voce relativa alle stesse huge pages. Solo grazie ad un errore nel file .config ho poi scoperto che a  “resettare” il mio file .config era l’istruzione:

scripts/kconfig/conf -s arch/x86_64/Kconfig

lanciata da make. Ulteriori indagini mi hanno portato al file fs/Kconfig dove ho trovato:

config HUGETLBFS
bool “HugeTLB file system support”
depends X86 || IA64 || PPC64 || SPARC64 || SUPERH || (S390 && 64BIT) \
|| BROKEN
depends !XEN
help
hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
<file:Documentation/vm/hugetlbpage.txt> for details.

If unsure, say N.

Che in sostanza stabilisce che se è selezionato il supporto per XEN viene disabilitato quello per le Huge Pages. Ho verificato, con “make menuconfig” ma anche deselezionando la voce “XEN -> Privileged Guest (domain 0)” sotto “File Systems -> Pseudo filesystems” non compare la voce “HugeTLB file system support”. (Non sono solo io ad aver problemi su come scrivere “filesystem” se come una unica parola  o come due divise, visto che sul questo menu’ compare scritto in entrambi i modi). Invece modificando il file fs/Kconfig così:

config HUGETLBFS
bool “HugeTLB file system support”
depends X86 || IA64 || PPC64 || SPARC64 || SUPERH || (S390 && 64BIT) \
|| BROKEN
#depends !XEN
default y
help
hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
<file:Documentation/vm/hugetlbpage.txt> for details.

If unsure, say N.

Magicamente la voce “HugeTLB file system support” compare sotto “HugeTLB file system support”

Quindi sono riuscito a ricompilare il kernel con il supporto a XEN e alle Huge Pages, vedremo cosa accadrà.

Questi in sintesi i passi che ho seguito:

  1. scaricato il pacchetto  kernel-2.6.18-164.el5.src.rpm da public-yum.oracle.com
  2. aggiunto l’utente mockbuild con gruppo mockbuild (altrimenti non funziona l’installazione dell’rpm).
  3. installato con rpm -i kernel-2.6.18-164.el5.src.rpm; in questo modo finisce tutto sotto /usr/src/redhat, con una struttura particolare
  4. Secondo il consiglio visto da più parti, ad esempio anche qui, ho copiato tutto il contenuto di /usr/src/redhat in un’altro posto (/var/tmp/rpmbuild) e creando il file  ~/.rpmmacros con la riga %_topdir /var/tmp/rpmbuild.
  5. la radice per la compilazione dei sorgenti è diventata nel mio caso /var/tmp/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/, ho modificato il file Makefile impostando la variabile EXTRAVERSION = -xenhuge2.6.18-164  (come saggiamente indicato qui)
  6. modificato il file fs/Kconfig come descritto sopra
  7. lanciato il comando “make rpm ” La compilazione non è durata giorni, mi sembra circa un’ora.
  8. a questo punto sotto /var/tmp/rpmbuild/RPMS ho trovato il mio rpm che ho installato con rpm -i, piccola curiosità: sotto /boot mi sono trovato un file vmlinuz da 52 MB contro i 2 MB circa degli altri kernel.
  9. Ho creato l’immagine del ramdisk con mkinitrd, sempre come indicato dalla guida di HowToForge e modificato il file /boot/grub/menu.lst

Ho riavviato la macchina virtuale e selezionato dal menu di grup il nuovo kernel e incredibilmente è partita.  Curiosando sotto /var/tmp/rpmbuild/BUILD/kernel-2.6.18xenhuge2.6.18-164 ho visto un file vmlinuz da circa 2 MB, accanto a un file vmlinux da circa 52 MB (dimensione uguale al byte al file vmlinuz-2.6.18-xenhuge2.6.18-164 che rpm mi ha installato sotto /boot) allora ho provato a sostituire il file da 52 MB sotto boot con il file vmlinuz (opportunamente rinominato) ed ho riavviato. Anche così funziona. Evidentemente il file più piccolo è il kernel compresso ma al boot viene gestito in modo trasparente (indagherò su questo).

Conclusione

I motivi che mi hanno spinto a investire il mio tempo in queste ricerche ed esperimenti sono imperscrutabili. Un’operazione simile va contro il principio che cerco di adottare solitamente, ovvero seguire strade e metodi certificati. Solamente una morbosa curiosità, il fascino del lato oscuro di Linux giustificano cio’ che ho fatto. Sono però soddisfatto, perché potrò adesso testare Oracle su Linux con le Huge Pages.

 

 

 

 

Riflessione sui sistemi di virtualizzazione

Un commento al mio precedente post, in cui ho cercato in maniera forse un po’ confusa di fare il punto della situazione sulla virtualizzazione con Xen, soprattutto sulla scia dei racconti di Dizwell, mi ha fatto venire in mente una riflessione, che ho deciso di pubblicare in un post a se stante.

Non ho mai usato VMWare ESXi e non conosco bene le evoluzioni fatte da VMWare negli ultimi anni, certo, sulla base di quanto descritto da Dizwell sul suo blog,  VMWare ha una maggiore maturità rispetto agli altri sistemi quindi forse è ancora il migliore; vista la concorrenza spietata su questo campo va detto che VMWare ha fatto un ottimo lavoro.

Ci sono però due motivi per cui però io continuo a voler approfondire Xen, il primo è che dispongo appunto di una macchina con Oracle Enterprise Linux 5 che al tempo stesso fa da database server di test e server per macchine virtuali, con lo Xen incluso. Non dispongo ne di macchine vergini per testare sistemi dedicati alla virtualizzazione ne del tempo per fare queste prove, è per questo che ho molto apprezzato i resoconti fatti da Dizwell. Il secondo motivo è che anche Oracle VM è basato su Xen, quindi se si conosce bene Xen si parte avvantaggiati nella conoscenza di Oracle VM. Ma cos’à di speciale Oracle VM? Il fatto ad esempio, non banale, che sia l’unica piattaforma di virtualizzazione su cui Oracle certifichi e supporti i propri prodotti.

Se si tratta di ambienti di test e sviluppo, come nel caso di Dizwell, il supporto e la certificazione Oracle non è che servano poi a molto; devo dire che secondo me, allo stato attuale, la virtualizzazione ha raggiunto una buona maturità, per cui non credo vi siano situazioni in cui il sistema virtuale è meno stabile del sistema fisico reale.

Dal punto di vista dell’immagine offerta, il supporto di Oracle è importante, soprattutto per aziende come quella dove lavoro io che non può permettersi di prendersi carico al posto di Oracle di questo genere di supporto. I clienti importanti vogliono comunque il supporto di aziende importanti, come Oracle.

Virtualizzazione con XEN

Una serie di interessanti post recenti di Dizwell sulla virtualizzazione hanno risvegliato in me l’interesse per queste tecnologie. In particolare egli ha iniziato con un bel post in cui faceva una sorta di recensione di sistemi di virtualizzazione, in seguito egli si è concentrato su quello apparentemente più interessante XenServer di Citrix.  Apro qui una parentesi, il sito di citrix su XenServer è http://www.citrix.com/xenserver/ ma io lo trovo frequentemente giu, una cosa preoccupante direi. Chiusa la parentesi.

XenServer sembra un prodotto interessante, non molto diverso come base da Oracle VM, ovvero una distribuzione Linux minimale; la differenza la fa il “contorno”, a partire dagli strumenti di amministrazione per arrivare alle caratteristiche “enterprise”, che nel caso di XenServer sono quelle che si comprano, mentre la base è gratuita.

L’ultimo post di Dizwel, è un po’ “amaro”, infatti egli ha incontrato dei limiti di XenServer che gli impediscono di  utilizzarlo in “produzione”, produzione tra virgolette perché il suo progetto è quello di consolidare gli ambienti di test. I suoi racconti mi hanno incuriosito e spinto a capire meglio come funziona Xen, a tale proposito voglio segnalare che fra i manuali di Red Hat ve ne è uno sulla virtualizzazione molto interessante, qui. Volevo segnalare questo manuale perché vi ho trovato cose che ho cercato anche tempo fa, come un metodo per generare nuovi mac-address o il sistema per accedere ai file all’interno delle immagini dei dischi.

Vi sono due dubbi che mi rimangono:

1) cosa sono i template di cui parla Dizwell; in effetti non mi è chiaro il meccanismo di creazione di una nuova VM, io utilizzo l’interfaccia grafica di virtual machine manager ma non ho ancora capito i meccanismi che stanno dietro. L’ultima VM che ho creata l’ho fatta con OEL 5.3 senza bisogno di “template”.

2)sulle vm che ho creato, di tipo “para-virtualised” il kernel xen non attivo il supporto per le HugePages, mi chiedo se questo sia dovuto al fatto che in questa configurazione non è possibile averle oppure se semplicemente è possibile ricompilare il kernel ed attivare tale supporto.

Sono convinto che conoscere a fondo i meccanismi di funzionamento di Xen possono aiutare a gestirlo e utilizzarlo al meglio, quindi farò di tutto per colmare le mie lacune.

Oracle 11gR2: SYSASM e ORA-01031

Dopo un periodo di abbandono, ieri ho ripreso in mano l’installazione di test di Oracle 11gR2 RAC su macchine virtuali di cui ho gia parlato in una serie di post precedenti.  Il primo problema che ho avuto è che l’istanza sul primo nodo (mentre il secondo nodo l’ho tenuto spento) non andava su; e solo un banale problema di disco pieno che bloccava il funzionamento della “grid infrastructure” o del clusterware.

Oggi però ho impiegato più tempo per risolvere un’altro problema che a posteriori può sembrare banale. Bisogna sapere che con l’espansione delle funzionalità incluse nella grid infrastructure di Oracle 11gR2, è stata introdotta la possibilità di una suddivisione dei ruoli di amministrazione più netta. Quindi per la sola gestione della parte “storage”, ovvero ASM vi sono tre gruppi definibili a livello di sistema operativo. Nel manuale di installazione della grid infrastructure è spiegato bene quali sono i ruoli definibili e i relativi privilegi.

Non avendo necessità, ne in fase di test ne in una prospettiva futura, di gestire tanti ruoli, nella mia installazione di test ho scelto di utilizzare per tutto un unico gruppo, il gruppo dba. C’è però un’altra novità importante: ASM ora fa parte della grid infrastructure. E’ vero che gia sulla 10g veniva consigliato di creare per ASM una ORACLE_HOME separata, cosa anche questa che io non ho mai fatto, senza mai dovermente pentire.

Infine, con 11g è stato introdotto il privilegio SYSASM (se non vado errato) e con 11gR2 è diventato l’unico privilegio per amministrare ASM (probabilmente era gia così con la R1 ma non avendola usata molto non ne ho certezza).

Stamattina volendo verificare da linea di comando lo spazio disponibile su ASM ho avuto il seguente messaggio:

[oracle@oel53test11gR201 ~]$ export ORACLE_SID=+ASM1
[oracle@oel53test11gR201 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 29 15:19:26 2009

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

Ma in quel momento stavo facendo un import, quindi ero sicuro che ASM fosse su e che il sid (+ASM1) fosse corretto, allora sono andato a ripassare la documentazione, quindi mi sono ricordato di SYSASM, però:

[oracle@oel53test11gR201 ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 29 15:19:35 2009

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

ERROR:
ORA-01031: insufficient privileges

Enter user-name:

Anche questo mi ha lasciato molto perplesso, perché ieri ho creato un diskgroup con l’utility grafica asmca da utente oracle senza problemi. A questo punto sono andato un po’ a caso aggiungendo i gruppi (su Linux) asmadmin e asmdba e mettendoci dentro l’utente oracle, ma senza successo; a questo punto ho fatto una ricerca sul vecchio metalink (che è ancora on-line) e incidentalmente ho capito quale era il mio problema: la ORACLE_HOME, infatti:

[oracle@oel53test11gR201 ~]$ export ORACLE_HOME=/opt/oracle/oragrid
[oracle@oel53test11gR201 ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 29 15:20:24 2009

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production
With the Real Application Clusters and Automatic Storage Management options

Inizialmente  avevo cambiato anche il path, ma quello in realtà è superfluo.

 

 

 

Calcoli aritmetici dalla bash di linux

Nel tempo libero sto cercando di approfondire la mia conoscenza di Linux, un sistema operativo che come ho gia detto in passato adoro, per il semplice fatto che senza pagare nulla si ha a disposione una sistema operativo vero, con una miriade di piccoli strumenti di utilità che credo siano in grado di soddisfare qualunque bisogno.

Ad esempio, un attimo fa mi è venuta la curiosità di fare un piccolo calcolo aritmetico, senza dover aprire la solita calcolatrice fornita dal Winzoz. Non che la calcolatrice di Winzoz non vada bene, ma mi rompe dover staccare le mani dalla tastiera per prendere il mouse e dovere fare strani ghiri-gori sulla scrivania per arrivare ad avere la calcolatrice. Dunque ho fatto una piccola ricerca con Google ed ho trovato alcuni link che mi voglio salvare per ritrovarli facilmente anche in futuro. In realtà li ho trovati rapidamente, ma il mio vero intento è quello di memorizzare in modo permanente nel mio cervello i metodi che ho trovato. E’ come quando per studiare riscrivo le cose, così questo blog, come è nato, mi serve a riscrivere le cose in modo da facilitarne la memorizzazazione anche nella mia testa.

Il primo link è questo, si tratta di un Wiki sullo scripting shell in Linux, un sito che penso valga la pena esplorare. Il metodo è ad esempio, per calcolare 77420 diviso 60:


[root@oel53test11gR201 ~]# echo $((77420/60))
1290

Gli operatori supportati sono molti, elencati anche in questo blog, ad esempio ** per calcolare la potenza.

A questo link invece ho trovato un’utility, più limitata, ma non dipendente dalla bash, expr, ecco un esempio:


[root@oel53test11gR201 ~]# expr 77420 / 60
1290

In questo caso occorre fare attenzione a mettere gli spazi tra i numeri e l’operatore.

Oracle DBA Italia

Caso mai fosse sfuggito a qualcuno, da oggi è on-line il nuovo sito http://www.dbaitalia.org/ dedicato a tutti gli appassionati e professionisti di database Oracle in Italia. Tutti gli interessati sono invitati a visitare il sito, così si può capire meglio di cosa si tratta.

Addio Classic Metalink

Ebbene, pare che sia giunta l’ora. In una mail giuntami stamattina Oracle comunica che il fine settimana tra il 6 e l’8 novembre prossimi “My Oracle Support” verrà aggiornato e in quell’occasione verrà definitavemente chiuso l’accesso alla vecchia interfaccia classica del metalink.

Sono mesi che Oracle ci avvisa e ci invita a prepararci e a studiare il nuovo “My Oracle Support” con la sua fantastica interfaccia tutta in flash… evito la citazione di Fantozzi.

Stamattina ho voluto fare un test scientifico: dal momento in  cui dalla schermata di login, dopo aver inserito username e password, faccio click con il tasto sinistro del mouse sul bottone “Sign In” al momento in cui mi compare la “dashboard” sono passati circa 1 minuto primo e 20 secondi. Di questo tempo un minuto buono è passato con una schermata in cui compare le scritta “Faster Problem Resolution”. Sarà, ma non ne sono molto convinto, gli ultimi venti secondi il mio firefox, con un solo tab aperto li ha passati consumando fra il 20 e il 50 percento della cpu del mio pc. Va bene che windows solo per chiudersi impiega più o meno un paio di minuti (durante i quali un processore moderno ne fa di calcoli) ma a me pare eccessivo (d’altra parte anche il fatto che windows ci metta due minuti per chiudere tutto secondo me è eccessivo).

Stamattina ho notato anche che questa fantastica interfaccia pare inibire la combinazione di tasti <ctrl><t> impendendo di fatto la rapida apertura di un nuovo tab su firefox.

A onor del vero ho fatto anche una prova, mi sono sloggato e riloggato ed al secondo ingresso la dashboard è comparsa in meno di 20 secondi.

Qualche altra critica alla nuova interfaccia ci sarebbe, ma sembra più un problema dovuto alla coesistenza con la vecchia, quindi suppongo e spero che l’aggiornamento del 6 Novembre prossimo risolva questi problemi, ma spero anche che migliori le prestazioni. Non è possibile che si riesca a scaricare il software saturando la banda di una ADSL a 7Mb  e che poi per delle pagine web occorre aspettare minuti.

Ieri poi  mi è toccato un’altro fastidio, quello di dover unificare l’accesso a OTN con quello al metalink. Infatti per l’accesso a OTN utilizzo un account personale creato prima ancora di arrivare alla azienda per cui lavoro attualmente, che è Partner Oracle e quindi ha un accesso a Metalink, fin’ora indipendente da OTN, la cui iscrizione è aperta a tutti.

Test con Oracle 11gR2: RAC

Ebbene, dopo un primo tentativo di installazione di RAC 11gR2 su due virtual machine fallito per il problema di cui ho parlato al post precedente, oggi ho riprovato.

In realtà martedì scorso ho fatto due prove, ma in entrambi i casi la macchina numero uno del cluster virtuale si è riavviata; evidentemente c’è qualcosa in linux che superato un certo carico provoca un riavvio del sistema. Oggi ho riprovato, dopo aver assegnato 2,5 GB di ram alla prima macchina e 2 GB alla seconda, per fortuna c’era ancora RAM disponibile. L’aumento di ram è stato sufficente per completare con successo la fase di installazione della parte software del database oracle 11gR2 sul cluster.

Ho anche creato un database di test e quindi ho un RAC 11gR2 completo e funzionante. Ora dovrei fare dei test veri, infatti più che test i miei li chiamerei tentativi di installazione rapida. Infatti non sono stato molto scrupoloso nel leggere i manuali per fare questa installazione, ciò nonostante, a parte qualche problemino non proprio chiaro al termine della fase  di configurazione della “grid infrastructure” e il problema del post precedente,  l’installazione è andata a buon fine.

Devo dire che la mia impressione è che Oracle abbia fatto veramente un buon lavoro, evidentemente, anche stando al calendario segnalato da Laurent Schneider ,si sono concentrati molto sulla piattaf0rma Linux e questo ha fatto si che sia stato rilasciato qualcosa di robusto.

Ora vi sarebbero un sacco di altre cose che dovrei provare, bisogna considerare che anche su 11gR1 ho fatto poche prove quindi ho molte novità sia della 11gR1 che della 11gR2 da studiare. E’ giunto il momento di preparare una scaletta seria.

Un po’ di cose da fare

Ho approntato due macchine virtuali con XEN con Oracle Enterprise Linux 5.3, vi ho installato la “grid infrastructure” 11gR2 ed ho cominciato ad installare il software per il database, ma a quanto pare ho sopravalutato la potenza della virtualizzazione:

top_on_xen_vm_2

Sto eseguendo le operazioni via VNC,  e a un certo punto dell’installazione mi sono reso conto che la macchina non rispondeva più. Per fortuna avevo aperto contemporaneamente anche una sessione SSH con putty, dalla quale ho appunto provato a lanciare top, che inaspettatamente dopo alcuni minuti e partito e così ho appreso che la macchina non era proprio morta, anche se un po’ sollecitata. Sono perplesso dal fatto che nei “top” non vedo il linking che era l’ultima operazione visibile in esecuzione ma attendo fiducioso che la coda dei processi in attesa venga smaltita da Linux.