La clausola WITH in Oracle

Oracle mette a isposizione la potentissima clausola WITH che permette di assegnare un nome a una subquery e di poterla referenziare in altre subquery o nella query principale con l'alias definito. In altri termini la clausola WITH permette di creare delle tabelle temporanee frutto dell'esecuzione di una query e di poter usare queste tabelle temporanee, referenziate con un nome, nella query di ricerca...
Invia questo articolo via email Invia questo articolo via email

Un sistema di cache

Cos'è una cache Una cahce è una memoria temporanea nella quale viene memorizzato un sottoinsieme di dati appartenenti ad un'altra memoria più lenta per velocizzarne il recupero. Quando un dato deve essere recuperato viene prima fatto un tentativo per vedere se esso si trova nella cache, in caso contrario viene scandita anche la memoria più lenta. Con questa tecnica si punta a velocizzare il recupero dei dati...
Invia questo articolo via email Invia questo articolo via email

Oracle, funzioni analitiche di somma

Oracle mette a disposizione innumerevoli funzioni analitiche che agevolano la scrittura si query particolarmente complesse e spesso migliorandone le performance. In questo articolo saranno descritte con un breve cai nuso d'uso le alcune funzioni che permettono di elaborare matematicamente dati numerici. SUM(campo_1) OVER (PARTITION BY campo_2)...
Invia questo articolo via email Invia questo articolo via email

Gli indici in Oracle

Nel precedente articolo (Indici nei database) ho fatto un'introduzione su cos'è e come funziona un indice. In questo articolo voglio approfondire l'uso degli indici in Oracle. Indice in Oracle Ricordo brevemente che un indice è un oggetto che ci permette di ritrovare un record attraverso una chiave migliorando le prestazioni rispetto una ricerca sequenziale. Gli indici sono realizzati attraverso i B-Tree ovvero delle strutture dati ad albero che hanno come nodi degli insiemi di chiavi (con i relativi puntatori ai record). La ricerca avviene percorrendo i nodi dell'albero fino a trovare la chiave interessata o fino a trovare un nodo con tutti i puntatori nulli (per maggiori dettagli guardate l'articolo "Indici nei database")...
Invia questo articolo via email Invia questo articolo via email

Indici nei database

Cos'è un indice Gli incici sono delle strutture dati create dai database per permettere la ricerca efficiente e veloce dei record. Quando vengono poste delle condizioni sulla ricerca che coinvolgono campi con un indice è possibile, al posto di scandire integralmente una tabella (full scan), usare l'indice stesso per recuperare i record in modo più veloce e migliorando significativamente le prestazioni SQL...
Invia questo articolo via email Invia questo articolo via email

Oracle, sostituire i campi Char con dei Varchar2

In database non molto recenti o che vengono ereditati da altri dbms può capitare di avere dei campi CHAR non correttamente utilizzati e che si vorrebbe sostituire con dei VARCHAR2. Ricordo qual'è la differenza fra i diversi campi testuali: * CHAR: servono per memorizzare stringhe di lunghezza fissa, se viene memorizzata una stringa più corta della lunghezza impostata verrà riempita in coda con degli spazi bianchi. Questo comporta una occupazione massiciia e spesso non voluta del disco...
Invia questo articolo via email Invia questo articolo via email

Usiamo la System Tray in Java

E' ormai molto di moda mostrare sulla SystemTray del nostro sistema operativo un'icona della nostra applicazione, magari con qualche simpatica opzione o magari solo quando l'applicazione è minimizzata. Vediamo come questo può essere fatto utilizzando la classe SystemTray della libreria AWT presente dalla versione 6 di Java. La classe SystemTray rappresenta la barra delle applicazioni della nostra scrivania. Questo concetto varia leggermente a seconda del sistema operativo che utilizziamo: su Microsoft Windows si riferisce alla "Taskbar Status Area", su Gnome si intende "Notification Area", su KDE è la "System Tray"...
Invia questo articolo via email Invia questo articolo via email

Oracle, confrontare due database

Spesso capita di avere più database che contengono copie delle biasi di dati, immaginiamo ad esempio nell'ambito di una applicazione il database ti sviluppo, test e quello di produzione oppure lo stesso db di clienti differenti. Potremmo arrivare ad un punto in cui questi database sono disallineati per campi o tabelle presenti su uno e non sugli altri. Se non si è tenuta traccia di tutti i cambiamenti apportati si può avere la necessità di utilizzare una query per estrarre un riassunto di tutte le colonne delle varie tabelle e confrontare il risultato ottenuto sui diversi schemi...
Invia questo articolo via email Invia questo articolo via email

Oracle, vedere i lock con una query

Parto con il ricordare, per chi non lo sapesse, che cos'è un lock: quando bisogna usare in modo esclusivo una risorsa (tabelle, record, ecc...) è necessario attivare un meccanismo, il lock appunto, che consenta ad un utente (o più in generale ad un processo) di essere l'unico in grado di utilizzare l'oggetto. Il lock può avere diverse granularità ovvero diversi gradi di precisione, può essere ad esempio su un singolo record o su una intera tabella e può essere con diversi gradi di visibilità (lettura, scrittura, lettura e scrittura). Quando si ottiene un lock su una risorsa è necessario rilasciarlo una volta che si è terminato di utilizzare l'oggetto. Se il lock non viene rilasciato la risorsa risulta bloccata. Da qui nasce la necessità di individuare i lock presenti e di...

Leggi il seguito »

Invia questo articolo via email Invia questo articolo via email

Oracle, sapere la versione con una query

Quante volte avete voluto sapere su che versione del dbms Oracle state lavorando ma magari avete a disposizione solo il vostro client SQL preferito (a proposito provate SQL Workbench/J se non lo avete ancora fatto) ?

Ebbene il problema non si pone in quanto con una semplice query potete scoprire ciò che vi interessa:

select * from v$version

Riceverete come risultato qualcosa di analogo a questo:

BANNER
--------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0    Production
TNS for...

Leggi il seguito »

Invia questo articolo via email Invia questo articolo via email

Pagina precedente »