databases

The Haversine formula in Firebird SQL => Calculate distance between two WGS84 Points

Friday 22 January 2016, 22:35
ivan.revelli@synaptica.info

haversine

Hi,
I think might be helpful, today for a customer i do the Haversine formulas for Firebird Sql as a stored procedure.

This formula allow you to calculate the distance in meter between two WGS84 datum points(degree points of Earth).

You can call the procedure like this:

The result wil be aprox 14Km, the distance from my office and my house aprox.

the parameters of the procedure are:

The procedure code is:

SQL Server 2000 set Date Time format…

Tuesday 8 June 2010, 12:56
ivan.revelli@synaptica.info

Convertire una stringa (sequenza di caratteri) in un dato di tipo data o timestamp in SQL standard è abbastanza semplice tramite il comando ‘cast‘ . Semplicemente scrivento :

cast(‘2010-3-31’ as datetime)

oppure

cast(‘2010-3-31’ as timestamp)

otteniamo la conversione, ma come sempre nel caso delle date non esiste la parola semplice, i formati con cui si possono proporre sono sempre molteplici e spesso legati alla locale del sistema.

Ci potremmo trovare anche ad esempio un DB con tabelle in cui le date son nel formato inglese.

con il comando :

SET DATEFORMAT YMD;

andiamo a settare per SQL Server il formato anno – mese – giorno

se scrivessimo

SET DATEFORMAT YDM;

andiamo a settare per SQL Server il formato anno – giorno – mese

questo comando va utilizzato con coerenza ovviamente , perchè potrebbe far funzionare la vostra stored e bloccarne mille che usano un formato , ma conoscendolo è possibile a volte evitare di dover scriver le solite rognose procedure di riformattazione della stringa da convertire.

a presto
i

Oracle tip #8 [Enable apex not only for localhost]

Monday 10 May 2010, 16:35
ivan.revelli@synaptica.info

After installing Oracle 10g on an Ubuntu 9.04 system, i found that the Apex application was enabled only for the localhost.

Some time is necessary open or close the access of apex from remote. To do this is only need to access to your oracle system by a dba user and run this sql command:

to allow remote access:

to close remote access :

that’s all
regards
ivan

Oracle Tips 7 [ora 12519 tnsno appropriate service handler found]

Wednesday 17 March 2010, 16:43
ivan.revelli@synaptica.info

Using JDBC with Oracle 10g i found this error : “ora 12519 tnsno appropriate service handler found”, today i found an article on Internet about.
I only execute on apex query :

after that i restarted my Oracle10gXe server on my server, and all works well !!!
incredible

Backup di Virtual Web Server

Wednesday 17 March 2010, 15:01
marco.brendolini@makeallweb.it

Di questi tempi si parla tanto di virtualizzazione, in particolar modo applicata ai server, così che anche io ho deciso di utilizzare tale tecnologia per l’installazione di un web server.
La configurazione scelta è la seguente:

* Installazione di UBUNTU Server 9.10 minimale come HOST con installazione di VMWARE Server
* Installazione di una macchina virtuale UBUNTU Server 9.10 che chiameremo (IN) in quanto non esposta sul WEB la cui funzione è quella di ospitare i vari database che rimangono per così dire protetti
* Installazione di una macchina virtuale UBUNTU Server 9.10 che chiameremo (OUT) in quanto esposta sul WEB e che ospiterà  i vari servizi WEB

Di seguito cercherò descrivere la procedura da me scelta, per effettuare un backup completo del server; sicuramente esistono metodologie
molto più complesse, efficaci e costose, il merito della procedura da me scelta è il bassissimo costo.

Le operazioni principale sono:

1) Shutdown delle VM
2) Tar delle VM
3) Copia dei TAR su HD esterno con rotazione delle copie di una settimana
4) Allineamento delle VM su di un secondo Web Server
5) Restart delle VM

Provo a descrivere nel dettaglio ogni punto:

Tutte le operazioni sono eseguite da un paio di shell script schedulati per essere eseguiti ogni notte.
Cominciamo con il punto 1, di seguito riporto le istruzioni per lo shutdown delle VM:

vmrun -T server -h https://localhost:8333/sdk -u root -p “password” stop “[standard] serverwebin/Ubuntu.vmx”
vmrun -T server -h https://localhost:8333/sdk -u root -p “password” stop “[standard] serverwebout/Ubuntu.vmx”

Nel punto 2 vengono creati i TAR compressi delle VM impostando la data nel nome del file:

tar czvf /root/backup/vmbackup_date +%d%m%Y.tgz /var/lib/vmware/Virtual\ Machines/

Nel punto 3 viene effettuata la copia del TAR su HD esterno, in particolare le istruzioni che seguono descrivono:

1) inizializzazione dell’hd esterno da parte del sistema operativo
2) copia del TAR compresso sul disco esterno
3) cancellazione del TAR copiato dal disco locale
4) cancellazione dal disco esterno del TAR compresso più vecchio di una settimana
5) disattivazione del disco esterno da parte del sistema operativo

mount /dev/sdc1 /media/hdext
cp /root/backup/vmbackup_date +%d%m%Y.tgz /media/hdext
rm -f /root/backup/vmbackup_date +%d%m%Y.tgz
rm /media/hdext/vmbackup_date -d '7 day ago' +%d%m%Y.tgz
umount /media/hdext

A questo punto la copia delle macchine virtuali è completata occorre quindi riattivarle. L’operazione potrebbe essere eseguita dallo stesso script descritto
precedentemente, tuttavia per il fatto che la mia procedura prevede che le macchine virtuali vengano copiate anche su un secondo server di backup, lo startup dovrà  essere effettuato in un secondo momento.

Nella quarta fase della procedura un secondo server di backup effettua una copia delle macchine virtuali prelevandole dal server principale tramire RSYNC.
Di seguito riporto le istruzioni per la copia RSYNC:

DEST=”/var/lib/vmware/”
rsync -avz –exclude-from=/root/scripts/rsync-exclude –delete xxx.xxx.xxx.xxx::var/var/lib/vmware/Virtual\ Machines $DEST

Al termine della sincronizzazione delle macchine virtuali tramite RSYNC il server secondario effettua lo startup delle stesse sul server principale. Di seguito riporto le istruzioni necessarie:

vmrun -T server -h https://xxx.xxx.xxx.xxx:8333/sdk -u root -p “password” start “[standard] serverwebin/Ubuntu.vmx”
vmrun -T server -h https://xxx.xxx.xxx.xxx:8333/sdk -u root -p “password” start “[standard] serverwebout/Ubuntu.vmx”

L’indirizzo IP è ovviamente quello del server principale.

E’ possibile che il server secondario abbia un qualsiasi problema durante la sincronizzazione delle VM, questo potrebbe impedire lo startup delle stesse sul server principale, per evitare
di avere il server web inattivo, ho deciso di replicare e schedulare lo startup delle VM anche sul server principale in un orario in cui sicuramente la sincronizzazione è già  terminata, se le macchine
sono già  attive, l’istruzione, semplicemente non viene eseguita.

Rimane solo da schedulare i vari scripts tramite crontab.

Alla prossima

Oracle Tips #5 [Exception on the fly]

Wednesday 10 March 2010, 19:07
ivan.revelli@synaptica.info

[lang_en]

To raise an Exception from a Trigger, Stored Procedure or Function without needing anything you can use the function : raise_application_error.

Syntax : raise_application_error(<your exception integer code>, <your string description>);

Per scatenare un eccezione da un Trigger o una Stored Procedure o una Funzione Oracle si può semplicemente utilizzare la funzione di sistema : : raise_application_error.

Sintassi : raise_application_error(<your exception integer code>, <your string description>);

Ovviamente le eccezioni sono uno strumento ormai indispensabile che viene sfruttatto non solo dalle cose che produciamo noi ma anche in automatico da controlli di sistema sul ns codice, tra le eccezioni più comuni nei linguaggi ad alto livello figurano i “null pointer exception” le “division by zero” etc.
In ambito DB le eccezioni più comuni in assoluto sono quelle relative a subquery che tornano più di un valore. Se volessimo in oracle gestire le eccezioni in modo molto puntuale all’interno del codice di una procedura o di un trigger la cosa risulta abbastanza semplice.

Nel seguente esempio supponiamo di inserire la gestione di un eccezione all’interno di una funzione e di voler scrivere il messaggio dell’eccezione dentro una tabella di log , solo per una porzione di codice della funzione stessa , ora facciamo una funzione in cui vi è un codice che genera un eccezione e intercettiamo il messaggio di errore :

se volessimo chiamare la funzione e far comarire l’errore :

dopodiche vedremo la scritta nella ns tabella di log.

sperando che sia utile per qualcuno vi saluto.
ivan

[/lang_en]

[lang_it]

Per scatenare un eccezione da un Trigger o una Stored Procedure o una Funzione Oracle si può semplicemente utilizzare la funzione di sistema : : raise_application_error.

Sintassi : raise_application_error(<your exception integer code>, <your string description>);

Ovviamente le eccezioni sono uno strumento ormai indispensabile che viene sfruttatto non solo dalle cose che produciamo noi ma anche in automatico da controlli di sistema sul ns codice, tra le eccezioni più comuni nei linguaggi ad alto livello figurano i “null pointer exception” le “division by zero” etc.
In ambito DB le eccezioni più comuni in assoluto sono quelle relative a subquery che tornano più di un valore. Se volessimo in oracle gestire le eccezioni in modo molto puntuale all’interno del codice di una procedura o di un trigger la cosa risulta abbastanza semplice.

Nel seguente esempio supponiamo di inserire la gestione di un eccezione all’interno di una funzione e di voler scrivere il messaggio dell’eccezione dentro una tabella di log , solo per una porzione di codice della funzione stessa , ora facciamo una funzione in cui vi è un codice che genera un eccezione e intercettiamo il messaggio di errore :

se volessimo chiamare la funzione e far comarire l’errore :

dopodiche vedremo la scritta nella ns tabella di log.

sperando che sia utile per qualcuno vi saluto.
ivan

[/lang_it]

Scoprite cosa possiamo fare per il vostro business
I nostri linguaggi