Oracle SQL Developer 2.1

martedì 22 dicembre 2009 at 22:02 | In Diario, Installation and Configuration, SQL, Varie | 3 Comments
Tags: , , ,

La settimana scorsa è uscita la versione 2.1 ufficiale di Oracle SQL Developer. Neanche un mese fa avevo scaricato la versione “beta” e ad un primo impatto mi era sembrata interessante. Senonché poi usandola un pochino e provando le novità, come l’integrazione con SVN, ho scoperto che era abbastanza bacata. C’è da dire che anche le versioni precedenti, oltre a bachi palesi, manifestano comportamenti strani, capitati anche a miei colleghi. Ad esempio (e questo uno dei motivi che mi ha spinto a provare la versione beta) a un certo punto non mi funzionava più il tasto “backspace”, una cosa stupida, ma molto fastidiosa.

Quali sono le novità della versione 2.1? a parte una certa integrazione con SVN, che mi ha incuriosito e che nella versione ufficiale, a differenza di quella beta, pare funzionare, non saprei, rimando al sito Oracle.

Ho però una lamentela: ad ogni versione è stato cambiato il modo di scorrere e selezionare la cronologia delle istruzioni SQL. Fino all’anno scorso funzionava decentemente la combinazione di tasti “Ctrl-Shift-freccia su” e  “Ctrl-Shift-freccia giu” poi in una versione che ho scaricato qualche mese fa ha smesso di funzionare in modo deterministico e quindi utile. Nell’ultima versione non funziona. Guardando le impostazioni sembrerebbe che le combinazioni siano sempre quelle, però anche provando a cambiarle non c’è verso.

Linux Shell Scripts – parte II

lunedì 21 dicembre 2009 at 21:03 | In Linux | Leave a Comment
Tags:

Eseguire comandi in background: Screen

Per eseguire comandi o script in background o comunque in modo tale che l’esecuzione dei tali comandi non venga interrrotta a causa di problemi di connessione fra me e la macchina su cui devo eseguire il programma, ho sempre utilizzato due approcci: VNC o prima ancora il comando nohup con il comando “&”. Questo naturalmente nel caso di programmi di durata relativamente lunga. Ad esempio per lanciare manualmente  uno script di backup del database ho spesso utilizzato la seguente sintassi:

[oracle@urano ~]$ nohup ~/scripts/orabackup10gR2.sh &

In altri casi soprattutto in tempi più recenti e per l’esecuzione manuale di script sql da sqlplus ho utilizzato VNC, ovvero mi collego alla macchina remota via VNC (magari un giorno spiego meglio come mi piace utilizzare/configurare VNC sulle mie macchine) da li ho accesso al desktop grafico, apro un terminale e da li sqlplus, lancio lo script e chiudo VNC, la sessione rimane li, come chiudere RDP di Windows con la “X”  senza sloggarsi.

Tempo fa però ho scoperto un programmino solitamente installato su linux che si chiama screen (ho messo il primo link che ho trovato con una ricerca su google, mi sembra interessante) una spece di window manager per console non grafica.  Un programmino relativamente semplice ma molto ben fatto direi.

Lanciando il comando senza parametri viene creata una sorta di console virtuale, uscendo chiudendo putty con la x o con la combinazione di tasti “Ctrl-a Ctrl-d” ci si “stacca” dalla console, lasciandola li; quindi se prima di staccarsi si è lanciato in esecuzione un comando questo rimane li in esecuzione, si ritorna alla console di partenza con il messaggio “[detached]“. A questo punto anche se ci si connette con un’altra sessioni è possibile esaminare l’elenco delle sessioni “screen” aperte, ad esempio:

[oracle@urano ~]$ screen -ls
There are screens on:
18263.pts-6.urano       (Attached)
18529.pts-7.urano       (Detached)
2 Sockets in /var/run/screen/S-oracle.

E ci si può “riattaccare” alla sessione con il con il comando screen -r [[pid.]tty[.host]],  ad esempio:

screen -r pts-7

Linux Shell Scripts – parte I

lunedì 14 dicembre 2009 at 14:10 | In Installation and Configuration, Linux | Leave a Comment
Tags:

Sto cercando di migliorare le mie conoscienze di Linux e siccome mi capita di incontrare cose nuove che mi sembrano interessanti ho deciso prendere un po’ di appunti. In questo post mi dedico in particolare a dei costrutti utili per la costruzione di script con la shell bash, la shell di default sui sistemi linux che io uso solitamente (Suse, Red Hat e Oracle).

Comandi “builtin” della bash

La bash è piuttosto ricca di comandi cosiddetti “builtin” ovvero comandi che non sono implementati come programmi a se standi come  ad esmpio wc, du ecc. ma sono implementati nella shell stessa; un modo per vedere un elenco, e un aiuto, più comodo di “man bash” è il comando “help” che senza argomenti riporta la lista di tutti i comandi implementati dalla shell.

select

Il comando che ho scoperto e studiato oggi è select. In realtà come indicato dal comandi type (che è proprio un comando builtin della shell) select è una parola riservata della shell:

[oracle@oel54test11gR201 oracle]$ type -a type
type is a shell builtin
[oracle@oel54test11gR201 oracle]$ type -a select
select is a shell keyword

select è una parola riservata utilizzata per un costrutto strutturato così descritto dall’help:

[oracle@oel54test11gR201 oracle]$ help select
select: select NAME [in WORDS ... ;] do COMMANDS; done
The WORDS are expanded, generating a list of words.  The
set of expanded words is printed on the standard error, each
preceded by a number.  If `in WORDS’ is not present, `in “$@”‘
is assumed.  The PS3 prompt is then displayed and a line read
from the standard input.  If the line consists of the number
corresponding to one of the displayed words, then NAME is set
to that word.  If the line is empty, WORDS and the prompt are
redisplayed.  If EOF is read, the command completes.  Any other
value read causes NAME to be set to null.  The line read is saved
in the variable REPLY.  COMMANDS are executed after each selection
until a break command is executed.

In sostanza è molto utile per script interattivi con cui si vuole richiedere una scelta fra diverse opzioni, riporto un esempio banale:


#!/bin/bash

PS3='quale?'
select sid in uno due tre quattro
do
echo $sid
break
done;

Ed ecco un esempio di esecuzione:

[oracle@oel54test11gR201 ~]$ ./test3.sh
1) uno
2) due
3) tre
4) quattro
quale?4
quattro
[oracle@oel54test11gR201 ~]$

Heartbeat

martedì 1 dicembre 2009 at 01:45 | In Diario, Varie | 3 Comments

no, non parlerò in questo post del progetto di supporto all’”alta affidabilità” (high availability) per linux (che peraltro ho provato un paio di anni fa). Il motivo per cui ho intitolato così questo post è che volevo scrivere qualcosa per far sapere al mondo che ci sono ancora, anche se un po’ a corto di idee e indaffarato.

Non ho idee o temi particolari di cui parlare, solo una riflessione che mi è venuta in mente leggendo una mail. Ogni buon DBA ha un insieme di script che utilizza per controllare i database, per rilevare problemi o fare controlli di “routine”. E’ sicuramente una buona pratica, io sono un po’ carente in questo perché sono un po’ disordinato. Però ci tengo a dire che è importante conoscere come sono fatti gli script, non solo usarli. Ho spesso l’impressione (probabilmente solo frutto di mie perversioni e preconcetti mentali) che molti utilizzino  script senza sapere cosa fanno e cosa dicono (gli script).

P.S.

per dare una ventata di novità ho provato anche a cambiare il tema del blog, anche se non sono pienamente soddisfatto di ciò che offre al riguardo wordpress.com, che è ovviamente limitato (devono vendere qualcosa anche loro :) ).

Benvenuto My Oracle Support

lunedì 16 novembre 2009 at 16:33 | In Varie | 7 Comments
Tags: , , ,

Alla fine, approssimativamente dal 6 Novembre scorso Oracle ha definitivamente dismesso il “vecchio” “metalink” e lasciato come unica interfaccia web il nuovo “My Oracle Support”, detto anche MOS. Sul comp.databases.oracle.server sono fioccate le lamentale e sono stati creati più thread, Daniel Fink ha creato un sondaggio online, altri hanno espresso pareri più o meno negativi.

Ne avevo gia parlato tempo fa, non ho capito se a suo tempo lessi male l’avviso o se fu Oracle a rinviare ulteriormente il definitivo switch-off, ma alla fine è successo. Il mio parere non cambia molto, a me, come a molti altri la nuova interfaccia non piace, ma per l’uso che ne faccio per ora non mi crea grossi problemi. Ho trovato un metodo per visualizzare le note in modo chiaro, ovvero tramite il  link https://support.oracle.com/CSP/main/article?cmd=show&id=<numero nota>&type=NOT. Ero abitutato con il vecchio metalink ad aprire un nuovo tab per ogni nota che da una ricerca mi sembrava più pertinente. Ora con la nuova interfaccia non è possibile farlo, viene gestito tutto in flash e in teoria non è necessario, ma io sono troppo conservatore.

Devo segnalare che nei thread del gruppo di discussione di cui ho accennato sopra ho notato molte lamentele sulla indispinibilità del servizio, e questo per un breve periodo è successo anche a me, ma soprattutto lamentele da parte di chi non aveva provveduto per tempo a collegare l’account al SSO di Oracle (anche di questo avevo parlato nel mio post precedente). Questo mi lascia francamente perplesso, perché si può obbiettare sulla validità della nuova interfaccia, ma non sul fatto che Oracle abbia fatto di tutto per avvisare e prepare per tempo tutti gli utenti.

P.S.

Credo che in conseguenza del passaggio a MOS tutti i miei link a note metalink dei mie post precedenti siano “rotti”.

Test di HugePages con XEN

giovedì 5 novembre 2009 at 05:07 | In Linux | Leave a Comment
Tags: , , , ,

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

martedì 3 novembre 2009 at 03:57 | In Linux | 3 Comments
Tags: , , , , ,

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

venerdì 30 ottobre 2009 at 30:35 | In Varie, virtualizzazione | 1 Comment
Tags: , , ,

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

giovedì 29 ottobre 2009 at 29:35 | In Linux, virtualizzazione | 5 Comments
Tags: , ,

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

giovedì 29 ottobre 2009 at 29:50 | In 11g | Leave a Comment
Tags: , ,

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.

 

 

 

Pagina successiva »

Blog su WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.