21 febbraio 2006

MySQL verso Firebird


Le recenti acquisizioni di Oracle sono state recentemente completate da Sleepycat software (leggi post a riguardo), ovvero BerkeleyDB, che fa anche parte degli storage engines di mysql.
Mysql sembra quindi come privato della piena disponibilità dei suoi motori "transazionali" di ricerca. Sotto questa luce diventa maggiormente comprensibile la recente contromossa di mysql dell'acquisto di Netfrastructure, che offre una implementazione di Firebird.
È interessante la lettura dell'articolo relativo nelle Firebird news, specialmente nella parte centrale, dove si afferma che la mossa di mysql valida il fatto che Firebird possiede un codice più maturo e ricco. Sembra quindi che l'evoluzione futura di mysql vada verso l'implementazione delle transazioni tramite l'adozione dell'architettura Firebird.

Nella foto: il logo firebird sulle Pontiac americane :-)

19 febbraio 2006

Oracle acquisisce Sleepycat

È una notizia di ieri l'acquisizione di Sleepycat software da parte di Oracle.
Il link del titolo di questo post porta all blog di arstechnica, l'articolo migliore che ho trovato fin'ora, che mi ha spinto a commentare la notizia; sulla pagina del comunicato stampa di Oracle si trovano comunque tutte le ragioni dell'azienda.
Personalmente ho trovato molto interessante DBXML, versione XML nativa di Berkeley DB. Ho cominciato a leggere la documentazione e fare qualche prova sul mio portatile con Ubuntu, e le prime impressioni sono favolose. Per lavoro maneggio milioni di documenti XML, e questo database mi apre muovi e interessantissimi orizzonti. È un db XML nativo, quindi è possibile immagazzinare direttamente i documenti e poi eseguire query con XQuery e indicizzare il contenuto.
L'acquisizione di Oracle continua, a mio giudizio, la politica di mettere le mani nei prodotti open-source, e nello stesso tempo offrire una gamma di prodotti diversificata, ma questo è puro marketing. Dal punto di vista tecnico stiamo parlando di prodotti molto diversi (es. InnoDB di mysql), che non vanno a cambiare l'ordine delle cose.

14 febbraio 2006

Cluster MySQL

Dalla versione 5 di mysql è presente la funzionalità di clustering, che a detta della pagina del prodotto prometterebbe velocità, stabilità, ecc.
Dopo gli entusiasmi iniziali dati dalla lettura del capitolo del manuale che parla di cluster mysql, mi sono imbattuto verso la fine nelle "Known limitations"; infatti il server mysql in realtà poggia le proprie capacità di clustering sul motore del database, ovvero ciò che immagazzina effettivamente i dati, separato dal server che li elabora. Per fare un paragone, siamo sempre nel caso della differenza tra le tabelle myisam e innodb: se le prime possono avere indici fulltext, le seconde no, ma hanno le transazioni.
Per il cluster c'è un altro motore di database chiamato NDB, che ha caratteristiche sue particolari e deve essere specificato in fase di creazione delle tabelle; le tabelle che andrete quindi a creare nel cluster non saranno né myisam né innodb.

  • Gli indici fulltext non sono supportati, come i tipi di dati geografici

  • Il livello di isolamento è read committed (c'è da capire come si comporti il database in un caso reale con gli accessi contemporanei - le prove fatte in passato non erano molto confortanti)

  • Tutte le righe delle tabelle sono di lunghezza fissa (!)

  • La lunghezza massima di ogni riga è di 8 KB (!)

  • Nessun supporto per foreign key


Come al solito ci si trova davanti ad un prodotto innovativo, ma con pesanti limitazioni, che possono anche annullare i vantaggi. Tipico alla mysql.
Spero di potere presto fare qualche prova.

10 febbraio 2006

Migrazioni verso Oracle

Scopro oggi che Oracle ha un centro dedicato alla migrazione da altri database. L'applicazione è il migration workbench.

Ah, aggiornate il feed RSS del blog: http://feeds.feedburner.com/RDBLand

Che cosa manca a MySQL?

Ce lo dice Monty Widenius, in un'intervista per Linux Magazine dell'11 novembre 2005:

Linux Magazine: [...] However, what desirable Oracle -- or other database -- features are still needed in MySQL?

Monty Widenius: Oracle has a lot more performance indicators than MySQL (which makes it easier to tune Oracle for different kinds of load). We want to extend the status information and tuning parameters in MySQL to allow advanced users to do similar things with MySQL.
Partition is also a nice feature that exists in other databases and we are working on having our own partition solution. (First version of this will be in 5.1)
Advanced replication with better conflict resolution and federated tables to other databases are also on the roadmap.
And of course, we are always working on making MySQL even faster for a an even broader set of cases.

Di concorrenza e transazionalità nessun accenno.

08 gennaio 2006

Indici su funzioni e constraints

Sto leggendo Effective Oracle by Design, e sono arrivato alla gestione degli schemi.
Ho trovato un interessante esempio di come esplicitare i constraint su una tabella in modo da scrivere le condizioni di integrità dei dati direttamente nella definizione della tabella e non tramite trigger o simili.
Ecco il post originale su asktom.oracle.com. In un followup nella stessa pagina viene riportata la soluzione più elegante al problema.

29 dicembre 2005

Raptor è arrivato!

Finalmente, dopo un paio di giorni piuttosto impegnativi, riesco a postare nuovamente con le novità e le mie prove.
È uscito Raptor, un ambiente operativo grafico per Oracle, scritto in Java.
Viene distribuito in versione Windows "full", ovvero con la virtual machine java e JDK completo, mentre per gli altri sistemi operativi bisogna scaricarsi JDK 1.5.
Non ho trovato il JDK per Mac OS X, quindi mi sono dovuto accontentare della versione per Windows; in compenso mi sono collegato a Oracle 10gR1 su Mac :-)

Ecco la finestra dei report con i datafile sul Mac:

Il data dictionary con tutti i commenti originali:

La gestione delle tabelle, editing compreso:

L'editor SQL:

È necessario dire che Raptor è gratuito e liberamente scaricabile da OTN? Beh, sì, viste le premesse e visto che intacca un mercato già consolidato come quello degli editor SQL. Oracle continua sulla doppia strada di introdurre innovazione tecnologica (più o meno guidata dal marketing) e di fornire strumenti e accessori di alto e altissimo livello a titolo gratuito per migliorare l'utilizzo dei suoi prodotti.
Ancora complimenti alla Oracle. Non si potrebbe sperare di più nemmeno dal fronte open-source.

26 dicembre 2005

Oracle 10gR1 su Mac OS X

I giorni di festa per me sono il momento giusto per fare qualcosa di insolito, non avendo nulla da fare ed essendo praticamente bloccato in casa.
Il Natale poi è una delle festività che meglio si prestano per attività da perditempo.
Ieri, complice anche un discreto pranzo natalizio, sono riuscito ad installare Oracle 10gR1 sul mio fido Mac mini. Sì, avete letto bene. È stato come parcheggiare una nave in un porticciolo, ma è una soddisfazione vedere il placido e piccolo Mac eseguire senza fatica apparente un gigante come 10gR1. Questa versione di Oracle è certificata solamente per la versione server di Mac OS X, ma la procedura manuale a linea di comando descritta nella Quick installation guide è stata sufficiente per preconfigurare correttamente il sistema.
Ecco le principali fasi dell'installazione:
L'installer parte:
Il database di prova viene creato da DBAssistant:

Oracle Enterprise Manager è attivo e dalla finestra di iTerm provo a eseguire query sullo schema scott classico :-):

Dopo qualche prova posso tranquillamente affermare che per scopi didattici l'installazione su Mac OS X normale (nel mio caso Panther) è assolutamente utilizzabile. Tempo fa provai l'installazione su Linux, con pessimi risultati per quanto riguarda la velocità di installazione, ma probabilmente feci errori nella configurazione dei parametri del kernel.
L'installazione fa un lavoro eccellente nel considerare le caratteristiche della macchina su cui si sta installando il software, regolando la SGA e gli altri parametri in modo da utilizzare circa la metà delle risorse disponibili.

14 dicembre 2005

VMWare

Prendendo spunto dall'ultima blog entry di Tom Kyte, sono andato a vedere che cosa offre VMWare per i nostri interessi.
La pagina del Virtual Machine Center contiene tutti i link necessari per provare la virtual machine e le sue applicazioni precostruite.
Tutto è molto interessante, specialmente per provare combinazioni di sistemi operativi e applicazioni avendoli sempre disponibili su disco.

28 novembre 2005

Usare le "pipe" in Oracle

Molto istruttivo questo articolo sull'uso delle "pipe" in Oracle con il package apposito.

27 novembre 2005

Comparazione DB2-MySQL

Ho letto questa whitepaper di Martin Hubel Consulting, Inc., in cui vengono evidenziati gli innumerevoli difetti di mysql, se posso permettermi con qualche imprecisione, che però non invalida il contenuto.
Sembra un po' di parte, comunque è un'utile lettura.

13 novembre 2005

Zend e session clustering


La piattaforma Zend per lo sviluppo di applicazioni PHP si arricchisce con il session clustering, che fa in modo di trattenere le informazioni sulla sessione $_SESSION di PHP sul primo webserver su cui viene creata.
Un demone fa in modo che l'accesso alle informazioni di sessione sia sincronizzato tra i vari server, come si legge nel whitepaper.
Non sono d'accordo con l'affermazione che il database, usato come memoria delle sessioni, sia un single point of failure, in quanto lo sarebbe per tutta l'applicazione; con in cluster di database si risolve brillantemente il problema.
Interessante anche il fatto che non è necessaria alcuna modifica ai listati PHP già in produzione.

31 ottobre 2005

Oracle Database 10g Express Edition

Da un paio di giorni è possibile scaricare la versione free di Oracle 10g.
La decisione di rilasciare una versione di Oracle per il mercato di fascia bassa dovrebbe contrastare la presenza di mysql e Postgres, ma soprattutto portare gli operatori a conoscenza delle possibilità di 10g.
XE comunque ha una serie di limitazioni che sono be descritte nelle FAQ e nel data sheet.

25 ottobre 2005

L'intruso

Leggendo qua e là mi sono imbattuto in una nuova sigla: MAMP.
I dettagli parlano chiaro: Mac+Apache+mysql+PHP. Personalmente trovo la piattaforma LAMP già piuttosto riduttiva; essendo ormai abituato al Mac e alla qualità delle sue realizzazioni penso che MAMP sia un'eccessiva semplificazione, per dirla con un eufemismo.
Nella pagina, poi, c'è una presenza poco pertinente, e anche il logo non mi convince per nulla. Fate i vostri confronti con questa pagina.

19 ottobre 2005

EnterpriseDB

Leggo di EnterpriseDB, un "clone" PostgreSQL incentrato sulle compatibilità con l'SQL di Oracle. Ne è appena uscita la versione 2005, corrispondente a una 8.0.3 di PostgreSQL, troppo poco per i miei gusti: la 8.1 ha nuove caratteristiche molto interessanti.

Le pagine PHP di OTN si arricchiscono di un nuovo contributo: "Oracle+PHP cookbook" che, a differenza di DeployPHP series, si propone a quanto pare di fornire linee guida per scrivere il codice migliore possibile, mentre DeployPHP è più incentrato sulle varie tecnologie.

10 ottobre 2005

Oracle compra Innobase

Sembra che Oracle abbia acquistato Innobase, la società che sviluppa e mantiene InnoDB, la parte "transazionale" (ahem...) di mysql. A mio modo di vedere l'acquisizione è la reazione della Oracle all'uscita della versione 5 di mysql, che promette varie novità come i trigger, le view e le procedure.

Qualcuno è anche riuscito ad installare Oracle su Mac OS-X 10.4.

05 ottobre 2005

Oracle OpenWorld 2005 online

Qualche aggiornamento sul mondo Oracle: è disponibile online gran parte delle diapositive usate all'Oracle OpenWorld 2005 di San Francisco.

Club Oracle invece propone una serie di simpatici sfondi e screensaver.

Oracle TimesTen è arrivato alla versione 6.0.1.

Amazon USA ha una sezione dedicata a Oracle.

28 settembre 2005

Oracle HTML DB e Raptor

Ho provato per qualche giorno Oracle HTML DB, un tool 10g (che funziona anche dalla 9.2) che permette di creare applicazioni basate su web, comprendendo tutte le fasi dello sviluppo, senza conoscere la sintassi SQL e la programmazione web.
OTN fornisce un interessante demo, in cui si vedono le potenzialià dell'interfaccia di HTML DB.
È anche possibile provare subito a creare le proprie applicazioni richiedendo una login su http://htmldb.oracle.com/.

Gira la notizia che stia per uscire Raptor, un software che ha scopi simili ai vari Toad o Tora. Per ora ci sono solo alcuni screenshots e qualche notizia sparsa.

23 settembre 2005

Filesystem e DB

Leggo oggi da qualche parte l'uscita di NOOFS, un filesystem unix basato su database, che promette di rendere indicizzabili e ricercabili i file molto più facilmente.
In qualche modo mi è tornato in mente Oracle Cluster File System, a parte che non c'entra nulla con l'indicizzazione dei contenuti; il punto di partenza però è simile.
Le caratterisctiche di NOOFS sono più o meno le stesse promesse da Windows Vista, su una scala aziendale però, non confinata al singolo PC (anche se Vista promette una ricerca sui PC dello stesso dominio); un altro vantaggio è il facile controllo diretto e centralizzato sui dati.

18 settembre 2005

Web tier

Ecco un bell'esempio di quello che si può fare con le ultime tecnologie web applicate ai database.
L'esempio tratta delle fotografie di C.W. Cushman degli anni '40, su Kodachrome (!) a colori.
A parte le ottime fotografie, per noi è specialmente interessante la sezione tecnologica basata su Oracle.

15 settembre 2005

il mio db è pronto!

evviva!

non pensavo di farcela ma il mio db è pronto. tecnicamente è in fase alfa e cioè "al fa già cul ca serva", pertanto è assolutamente consegnabile all'utente, che potrà farsi venire i calli nel segnalarmi errori e malfunzionamenti più o meno gravi.

ora è diviso in un frontend e in un backend con tutte le tabelle e (miraculo!) sembra che tutto questo faccia senso (in questo caso l'inglese mi lusinga: it all makes sense!)

la soluzione frontend - backend è un compromesso (l'ideale sarebbe una reale multiutenza) però già l'aver creato una casella di testo che sputa asterischi al posto di mostrare in chiaro la tua password è un passo avanti (per me).

probabilmente i puristi di ADO storcerebbero il naso a qualcuna delle mie scelte e quelli di VBA si metterebbero a sghignazzare, ma d'altronde se facessi lo sviluppatore questo sarebbe il mio blog :)

08 settembre 2005

MySQL: nuova versione = nuovi problemi

Non ho ancora avuto la possibilità di provare il nuovo MySQL 5 ma partendo dal messaggio di Rudy ho letto le nuove funzionalità e mi sono fatto un'idea.
Sono partito da "What's New in MySQL 5.0".

Prima novità(probabilmente solo a causa dell'ordine alfabetico): BIT Data Type: Can be used to store numbers in binary notation.
Qui c'è un po' di confusione tra il valore memorizzato e la sua rappresentazione: ogni numero può essere rappresentato in notazione binaria o decimale o esadecimale ma resta sempre quel numero! E anche parlando strettamente della memorizzazione su disco non penso che ci possa essere una alternativa alla notazione binaria. Del resto se qualcuno ha avuto a che fare con le date in MySQL (mi riferisco alle versioni precedenti) probabilmente si è già scontrato con questioni simili.

Seconda novità (in realtà è l'ultima riportata ma ci sta bene qui per contrasto con la precedente): le view
Nella descrizione estesa leggo: In designing an implementation of views, our ambitious goal, as much as is possible within the confines of SQL, has been full compliance with “Codd's Rule #6” for relational database systems: “All views that are theoretically updatable, should in practice also be updatable.”
A me sembra una "nota stonata" citare il modello relazionale nel manuale di MySQL: probabilmente bisognava averlo ben chiaro in testa prima di iniziare a scrivere tutto il programma.

Terza novità: le federated tables, ovvero un maldestro tentativo di implementare l'equivalente dei dblink di Oracle.
A parte la sintassi che è una barzelletta ho letto le limitazioni e cito solo due punti:
- The remote table that a FEDERATED table points to must exist before you try to access the table through the FEDERATED table.
Accidenti che limitazione! Se non esistesse cosa dovrebbe fare: inventarsi i dati?
- There is no way for the FEDERATED engine to know if the remote table has changed. The reason for this is that this table has to work like a data file that would never be written to by anything other than the database. The integrity of the data in the local table could be breached if there was any change to the remote database. Questa frase (anche se non mi è del tutto chiara) la dice lunga sul modo in cui sono implementate e sull'utilità che possono avere.

Se la documentazione rispecchia quello che descrive, il mio timore che l'affidabilità del prodotto sia rimasta molto bassa nonostante l'aumento della versione, è fondato.

07 settembre 2005

ZendCore for Oracle

È disponibile per il download gratuito ZendCore for Oracle, un ambiente di sviluppo e messa in produzione per PHP con db Oracle; è dotato di connessione al database tramite Oracle Instant Client, praticamente le librerie client condivise della 10g.
L'installazione viene fatta tramite un'interfaccia di testo tipo Debian; è molto precisa e identifica tutte le installazioni di Apache presenti sulla macchina, modificandone in automatico i file di configurazione (attenzione: viene disattivata l'eventuale libreria PHP già installata tramite commento nei file .conf).

Ecco alcune schermate:






Ottima la possibilità di controllare le performance del sistema e di configurare sia le opzioni di php.ini che attivare le librerie direttamente dall'interfaccia web.
L'interfaccia OCI8 è stata riscritta e migliorata. Sono possibili aggiornamenti automatici (interessanti per PHP, che ogni tanto mostra problemi di sicurezza).
Non so ancora quali siano le differenze nell'API o nel namespace del linguaggio, ma è tutto molto interessante!

Oracle Data Unloader

Quante volte ci siamo chiesti come è possibile ottenere in modo semplice da una tabella Oracle un file di testo CSV?
Per questi scopi esiste Oracle Data Unloader!
Qui dove lavoro abbiamo sviluppato un programma apposito chiamato oraselector, chissà se può competere con i programmi di Tom Kyte :-)

DUL può essere usato anche in caso di perdita di dati: leggete questa guida per il recupero di tabelle danneggiate.

06 settembre 2005

MySQL 5.0

Sto valutando per motivi puramente lavorativi (ci tengo a precisarlo) MySQL 5.0 beta.
Leggo con un certo piacere le novità rispetto alla versione 4 (riporto quelle interessanti IMHO):

  • Cursori: Necessari per la programmazione SQL, vista l'introduzione delle stored procedures.

  • Dizionario dati: Toh, chi si vede. Questa mi pare proprio la scoperta dell'acqua calda.

  • Storage engines: interessante l'archive, che serve a creare tabelle a basso consumo di disco, in cui sono permessi solo select e insert; molto meno interessanti le tabelle federated, l'analogo mysql dei database link di Oracle. Incredibilmente complessa la procedura per il loro utilizzo.

  • Stored procedures - triggers - views: inutile rimarcare il ritardo rispetto agli altri prodotti...

31 agosto 2005

il mio db langue :(

purtroppo la problematica organizzativa mi tiene lontano dalla programmazione... se da una parte questo limita drasticamente il numero di bachi che vado a produrre, dall'altra rende giustizia a quella regola che dice più o meno che il 20% finale della soluzione di un problema è quello che ti costa circa l'80% dello sforzo totale. in ossequio al mio segno zodiacale, notoriamente patria di precisini e scrotoclasti, il db verrà quindi pronto a dicembre... 2006.

30 agosto 2005

Database independence

Una ironica presentazione che sfata il mito di "applicazione indipendente dal database". Alla luce della mia (poca) esperienza mi sembrano affermazioni molto vicine alla verità e comunque hanno rallegrato la mia giornata con qualche risata.

26 agosto 2005

Le stranezze della correzione automatica

ciao.
ho una tabella. ho una maschera su di essa. un campo nella tabella si chiama "descrizione" e nella maschera c'è una casella di testo per questo campo. peccato che tutte le volte in cui scrivo "[descrizione]" nell'editor delle proprietà del controllo il buon access me lo corregge in "[Description]" che sarà anche una proprietà di un oggetto, ma a me non serve... l'unica soluzione che ho trovato è di impostare via codice la proprietà del controllo al valore che mi serve ogni volta che apro la maschera:

Private Sub Form_Load()

Me.tstDescrizione.ControlSource = "=IIf([tipo]=[descrizione],[tipo],[descrizione])"

End Sub

la cosa "bella" è che se vado a vedere in struttura della maschera la stessa proprietà (dopo che il codice l'ha impostata) trovo:

=IIf([tipo]=[Description];[tipo];[Description])

a parte i ";" che dipendono dalla localizzazione di access, il resto è tutta farina del sacco di qualche ignoto (e ignobile?) correttore automatico di sintassi...

a parte questo, il mio db procede.

24 agosto 2005

Mi presento

ciao, sono silos, l'ultimo arrivato su questo blog (grazie al mio amico rudy per l'invito).
ho una certa età, che si potrebbe ottenere con una cosa tipo year(sysdate) -1973, avendo un risultato corretto a partire dal 31 agosto.

suono, quando posso, il pianoforte, ma questa è troppo off topic.

di database so poco, e non al livello degli altri contributori di questo blog; ho scelto di unirmi a questo blog per raccontare la vita di un utente di database e sono qua per raccontare la mia esperienza alle prese con quella torta di compleanno che è access, microsoft access (l'ho chiamata così perchè prima o poi finisci per fartela arrivare in faccia).

ho iniziato ad usarlo per lavoro al lavoro, visto che i sistemi informativi qua da me hanno un comportamento, diciamo, evoluzionistico, nel senso che si muovono con la prontezza di un'era geologica. nel mio ufficio servono dati e servono "in fretta" e io, piuttosto che tirarli fuori da orrendi sequenziali, ho scoperto il mondo dei database.

in questi anni da "dentista" (visto che ho fatto chili e chili di estrazioni) mi sono comportato bene: pur avendo autorizzazioni di lettura e scrittura sulla base dati aziendale non ho mai polverizzato tabelle (ma qualche update m'è scappata) e finalmente, a luglio 2005, ho ricevuto in premio un paio di mutande di ghisa, cioè un utente in sola lettura.

il server qua è oracle 9i, e va veloce :) il (mio) client è access, via odbc, indifferentemente nel codice o con l'interfaccia. ora ad esempio sto ultimando un piccolo programma per dei miei utenti e mi sto ovviamente imbufalendo perchè il vba è documentato come il sanscrito nella guida di msaccess e i miei bottoni colorati non fanno quello che gli chiedo... vi terrò aggiornati!

21 agosto 2005

Nuovo libro di Tom Kyte

Tom Kyte ha finito il suo ultimo libro "Expert Oracle Database
Architecture"
, il cui primo capitolo è scaricabile in formato PDF.
Ho appena comprato "Effective Oracle by design", ora mi toccherà far arrivare anche questo.
Divertente la differenza di prezzo tra Europa e USA, in prevendita: 29.69$ (24.42€) negli USA, 49.90€ in Germania, 35.38£ (52.24€) in UK.

Un po' di divertimento: andate a leggere le varie citazioni da discussioni online sui database di Database Debunkings.

12 agosto 2005

Arrivi da leggere

Proprio stamattina mi sono arrivati da Amazon UK i seguenti libri:

  • Effective Oracle by Design di Thomas Kyte
  • Database in Depth di C. J. Date
  • Optimizing Oracle Performance di Cary Millsap

Li avevo ordinati la sera dell'8 agosto; sono arrivati in 3 giorni. Ho risparmiato 30 euro rispetto all'acquisto online in Italia nonostante qui non ci fossero spese di spedizione.
Ne avrò per un po' da leggere.

Installare patchando i makefile

Ho appena installato il client Oracle 9.2.0.4 (9i rel. 2) su una macchina OpenSuSE nuova.
A parte che OpenSuSE è funzionalmente praticamente una copia di Windows XP, comunque durante l'installazione ho riscontrato i soliti problemi con il relink dei vari eseguibili.
Errore tipico:
Error in invoking target relink of makefile /opt/oracle/product/9ir2/precomp/lib/ins_precomp.mk
Il problema è il solito dei simboli della libc, che si risolve installando gcc_old-2.95.3-7.i586.rpm.
Tutti in giro consigliano di creare link simbolici del gcc installato:
ln -s /opt/gcc295/bin/gcc /usr/bin/gcc
dopo avere rinominato il vecchio eseguibile.
Ho trovato come evitare tutto ciò modificando tutti i makefile coinvolti, man mano che l'installazione prosegue: ad esempio, quando esce il messaggio di cui sopra, si può editare il makefile $ORACLE_HOME/precomp/lib/env_precomp.mk, che alla linea 199 contiene:
LINK=$(PURECMDS) gcc $(LDFLAGS) $(COMPSOBJS)
Basta sostituire gcc con $(GCC) e aggiungere nelle prime righe del file:
GCC=/opt/gcc295/bin/gcc, e così per tutti gli altri casi (tutti gli env_* sono più o meno uguali).
È evidente come le modifiche per l'ìnstallazione sotto Linux siano state fatte un po' di fretta da parte di Oracle...

01 agosto 2005

Errore libc

Finalmente una soluzione per le installazioni dei prodotti Oracle per evitare l'errore symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference. È una patch oracle, precisamente la 3006854.
In sostanza riguarda il problema dell'avvio dei vari eseguibili sotto Linux, con l'errore relativo al simbolo __libc_wait, non presente nella glibc più aggiornata.
Di solito il problema si può aggirare con la variabile d'ambiente:
export LD_ASSUME_KERNEL=2.4
se no si utilizza la patch 3006854, che trovate anche sul mio sito (Linux i386, ovviamente).
Detta patch compila al volo uno shared object (.so) che poi inserisce nell'elenco delle librerie da precaricare prima dell'esecuzione di qualsiasi programma: /etc/ld.so.preload; penso che sarebbe possibile anche sfruttare la variabile d'ambiente LD_PRELOAD solo per l'utente oracle, se proprio necessario.
Un'altro trucco molto efficace riguarda quello per l'errore sul ctype, ma ora non riesco più a trovare i riferimenti. Comunque, dopo avere compilato un piccolo sorgente C (ctype.o), lo si include con ar nella libreria $ORACLE_HOME/lib/libcore8.a, ricompilando poi la libreria client condivisa con genclntsh oppure relink <opzione>.
Cercherò tutti i link e li pubblicherò.

29 luglio 2005

Indici basati su funzioni

Ho provato a creare indici basati su funzioni con Oracle 8i. Anche questa volta è risultato molto utile un articolo su asktom che mi ha risolto diversi problemi legati ai permessi che sono necessari per creare ed utilizzare questi tipi di indici.

28 luglio 2005

tre db e una query

Prendendo spunto da una domanda su una query trovata nel newsgroup di PostgreSQL ho confrontato diversi risultati in tre database: Oracle, PostgreSQL e MySQL.
Preparazione:
CREATE TABLE test (i INTEGER);
CREATE UNIQUE INDEX unq_test ON test(i);
INSERT INTO test VALUES(1);
INSERT INTO test VALUES(2);
INSERT INTO test VALUES(3);
La query è:
UPDATE test SET i = i + 1;
Sia in PostgreSQL che in MySQL non funziona (Avverte della violazione di una chiave univoca!).
Gli sviluppatori di Posgres ammettono che è un problema e che lo risolveranno in futuro.
L'unico dei tre database che riesce ad effettuare la query è Oracle perché, anche in questo, caso considera una query come una operazione atomica: probabilmente, per motivi di implementazione, è costretto ad aggiornare le righe una ad una e quindi a violare temporaneamente la chiave univoca tuttavia l'applicazione dell'intera query non viola nessuna constraint!
Piccoli particolari (se così vogliamo chiamarli) che fanno la differenza.

27 luglio 2005

Un libro per iniziare

Oggi DUE post! Ho deciso di scriverne un altro per sottolineare meglio l'importanza del documento che ho trovato, ovvero il primo capitolo del libro "Database in depth" di C. J. Date. Il link del titolo di questo articolo del blog riporta alla copia nel mio sito personale, nel caso il link non funzionasse.
Per ora l'ho letto rapidamente, ma sembra molto ben fatto ed è utilissimo per tutti.

Nologging e storia della Oracle

Ho provato a fare un'importazione con imp su un db vuoto e, dato che ci impiegava molto tempo, ho deciso di sfruttare l'istruzione ALTER TABLESPACE <tablespace> NOLOGGING, in modo che non venisse generato il log degli oggetti presenti in quei tablespace.
Il primo problema è che l'opzione nologging è efficace solo per gli oggetti creati dopo il comando alter tablespace, mentre gli oggetti presenti continuano a mantenere la loro politica di logging.
Il secondo problema è che l'imp importa le definizioni delle tabelle come sono presenti nel database originale: quindi se era attivo il nologging, diventa attivo ugualmente anche dopo l'alter tablespace.

Recentemente è stato pubblicato questo link sulla storia della Oracle, una lettura interessante. Gli altri articoli sono riportati nel riquadro giallo.
Volete vedere dov'è la sede della Oracle? Usate lo zoom! :-)

17 luglio 2005

Oracle TimesTen

Ho scoperto recentemente il database real time TimesTen,
che fa parte dei prodotti Oracle, sebbene ci sia un sito ufficiale.
TimesTen è multipiattaforma, comunque sto facendo delle prove su Windows XP e Linux. Per ora la versione Windows non ne vuole sapere di funzionare, nel senso che la connessione ODBC non avviene in alcun modo (provato su due PC diversi con XP home e pro); la versione Linux è più semplice da gestire.
Sembra che TimesTen sia il database ideale per la gestione di basi dati come quelle delle compagnie telefoniche, banche, prenotazione di servizi, notizie in tempo reale; è molto scalabile e può addirittura fare da "cache" ad Oracle, che verrebbe usato come repository di datawarehousing.

11 luglio 2005

Nuovi articoli OTN

Il sito web di Oracle, specialmente nella sezione OTN (Oracle Technology Network) è in continuo sviluppo.
Gli ultimi interessantissimi articoli riguardano PHP e Oracle XML DB e la DeployPHP series, al momento alla prima puntata, in cui si illustrano principalmente i vantaggi di ADODB. Dopo un primo momento di entusiasmo, penso che alla fine dei conti convenga sempre usare l'API nativa del DB in PHP, perchè consente di ottenere il massimo controllo sull'applicazione e utilizzare immediatamente eventuali nuove features, cosa molto frequente in PHP.
Da segnalare la serie di articoli su XML schema.

06 luglio 2005

oracle.com e i feed RSS

Oracle sta puntando molto sull'informazione al pubblico e sulla collaborazione degli utenti di varie comunità.
Tutti i feed sono raccolti in una sola pagina riassuntiva.
Notare la presenza dei podcasts...

Interessante questa prima lezione sulla programmazione PHP ottimizzata.