Vintage Browser Blocker is a javascript project.
It blocks old browser and shows ballot screen (like Microsoft browserchoice) to update the browser Continua a leggere
Vintage Browser Blocker is a javascript project.
It blocks old browser and shows ballot screen (like Microsoft browserchoice) to update the browser Continua a leggere
di Andrea Tassotti
Un RMAN Recovery Catalog è uno schema di database che mantiene dei metadati dettaglianti le operazioni per il backup eseguite da RMAN su un database obiettivo. I metadati includono le seguenti informazioni riguardo il database gestito: struttura, configurazione RMAN, i backup dei datafile e degli archive log (backup sets, pieces e copie), i redo logs archiviati e le loro copie. Continua a leggere
Innanzitutto chiariamo un fatto troppo spesso equivocato: Oracle RDBMS, come qualsivoglia software, gestisce le informazioni sul tempo in forma numerica (rappresentazione interna), tipicamente considerando un spiazzamento da un punto temporale prefissato e stabilendo una unita di misura, avvalendosi oppure no del segno e dunque fissando il riferimento dello 0. Ma questi sono “internals” che riguardano gli sviluppatori in casa Redwood.
La struttura di memoria per conservare l’informazione varia dai 7 agli 11 bytes secondo il tipo di dato (fisso a 7 per le date, variabile per intervalli e timestamp), pertanto siamo tra 256 e 288 di possibili valori per la unita di misura minima considerata (secondi nel caso di date, frazioni di millesimi di secondo negli altri casi), ossia valori ragguardevoli.
Ma veniamo alla rappresentazione esterna di queste informazioni.
Per rappresentazione esterna intendiamo le forme in cui l’utente esprime questi valori e come il motore li presenti allo stesso utente (il meccanismo ha una certa reciprocità)
Dobbiamo considerare che l’interfaccia utente è mediata dal linguaggio SQL: questo non è un fatto marginale.
Come ogni linguaggio artificiale dobbiamo considerare simboli terminali e le varie forme di composizione, fino all’apporto fornito da “funzioni”.
Il linguaggio SQL implementato in Oracle concepisce i valori temporali come “letterali”, ossia come simboli terminali: pertanto riconosce una data come cosa differente da un char. Allo stesso modo, benché non ne introduca letterali, saprà riconoscere la diversità semantica da un valore numerico (e quindi gli operatori applicabili) per tutto ciò che è timestamp o intervalli.
Cosa vogliamo dire?
Semplicemente che esiste una sintassi, un formato con cui esprimere o in cui vengono espressi valori temporali. In particolare un formato per esprimere date.
Questo risente ovviamente della localizzazione geografica dell’interfaccia in quanto la data (più che il tempo) si esprime in modi diversi nelle varie culture.
Entrano in gioco in questo caso due variabili server (che possono essere reimpostate in sessione): NLS_DATE_FORMAT o NLS_TERRITORY
La prima consente di impostare la rappresentazione delle date esplicitamente, la seconda come conseguenza della localizzazione di tutte le informazioni che lo prevedano (date, valute, ecc)
Nell’ipotesi di un motore configurato per la lingua italiana, la stringa formata da due cifre per giorno, tre lettere per la forma abbreviata del mese e due cifre per l’anno (senza il secolo) e divise da un separatore (‘-‘ per sqlplus, ‘/’ per sqldeveloper grazie appunto a modifiche nella sessione di collegamento) rappresenta una data:
21-SET-12
Questa è la forma che otteniamo leggendo colonne di tipo data, ma se quotata, questa è anche la forma naturalecon cui impostare il valore in una colonna di tipo data:
INSERT INTO DATARIO VALUES ('21-SET-12')
Se impostiamo NLS_DATE_FORMAT in un altro modo, allora tutto potrà essere fatto con forme (ad esempio) anglosassoni per le date (nei nomi, e nella disposizione delle componenti).
Ma esistono alcuni problemi: un problema (se così li vogliamo considerare) è mostrare la completezza dell’informazione: le colonne di tipo data mantengono informazione sul secolo, sull’orario fino ai secondi, ma nessuna di queste viene mostrata nel formato standard impostato da NLS_DATE_FORMAT.Un altro problema nasce considerando il fatto che non sempre le informazioni pervengono al motore SQL nel formato utile, e tantomeno è utile estrarre dati in questo formato in quei contesti in cui occorre una maggiore attenzione alla forma (in documenti, report, interfacce utente finale, ecc).
Ed è in questi casi che entrano in gioco le funzioni SQL per la conversione (tra tipi di dati): TO_CHAR e TO_DATE.
Facciamo due esempi:
Per il primo problema usiamo la funzione TO_CHAR.
Questa converte un tipo dati (tra quelli definiti nel suo campo di azione) in una rappresentazione a caratteri attraverso una maschera di formato definita da utente e passata come argomento assieme al dato da convertire.
Abbiamo:
Formato interno -> TO_CHAR -> Formato utente specificato
Per questo esempio sfruttiamo un’altra funzione, SYSDATE, che restituisce un tipo data e viene quindi visualizzzato attraverso quanto stabilito da NLS_DATE_FORMAT. Ma attraverso la funzione TO_CHAR provvediamo a mostrare anche le componenti assenti nell’altra visualizzazione:
SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "NOW" FROM DUAL;
Per il secondo problema utilizzeremo entrambe le funzioni TO_CHAR e TO_DATE e creeremo una tabella di esempio:
CREATE TABLE anag ( cod NUMBER(4), nome VARCHAR2(20), data_ass DATE);
In particolare la funzione TO_DATE converte una stringa che esprime una data in un tipo data. Al fine di far comprendere all’interprete SQL la data specificata occorre indicare anche il suo formato.
Formato utente -> TO_DATE -> Formato interno
Inseriamo dei dati in diversi formati utente:
INSERT INTO anag VALUES(1, 'Rossi', TO_DATE('10/01/1999', 'dd/mm/yyyy')); INSERT INTO anag VALUES(2, 'Verdi', TO_DATE('12/02/06', 'dd/mm/yy')); INSERT INTO anag VALUES(3, 'Gialli', TO_DATE('20100815', 'yyyymmdd')); INSERT INTO anag VALUES(4, 'Blu', TO_DATE('101-2005', 'ddd-yyyy'));
SELECT nome, TO_CHAR(data_ass, 'dd.mm.yy') FROM anag; SELECT nome, TO_CHAR(data_ass, 'dd-month-yy') FROM anag; SELECT nome, TO_CHAR(data_ass, 'dd day month-yyyy') FROM anag;
Possiamo infine concludere con due osservazioni:
Si imposta il formato data (nella sessione) con:
ALTER SESSION SET nls_date_format='dd.mm.yy';
Per tutti gli altri casi: usate TO_CHAR e TO_DATE a volontà.
Grazie Mille ad AAI
Disclaimer:
questa mail è scritta da nerd per esigenze nerd e può non essere confacente al tuo corrente stile di vita. La presente si intende, inoltre, priva di alcuna finalità commerciale (o quasi…)
Introduzione
Recenti disgrazie mi hanno indotto a riprendere una riflessione che avevo già in mente da qualche tempo: la soluzione definitiva ai problemi di backup dei dati.
Personalmente ho sempre effettuato un backup incrementale dei “miei averi” con la TIMEMACHINE ma, ahimè come per altri prodotti di quel-marchio-che-non-posso-
Come insegnano gli amici paranoici, dunque, occorrerebbe affiancare al backup locale una soluzione remota (possibilmente in un altro continente) per proteggersi dai disastri naturali e dal prossimo album della Tatangelo. In altre parole: MUVING IOR DETA TO DA CLAUD! Continua a leggere
Problema: Cambiare il tipo (type) di un tag input (es: da sumbit a button) tramite javascript al momento del caricamento della pagina o al verificarsi di qualsiasi altro evento.
La funzione JQuery .attr() non può cambiare l’attributo type dei vari tag per via di un problema che si verifica con le seguenti versioni di Internet Explorer (Note: jQuery prohibits changing the type attribute on an <input type=”text” /> or <button> element and will throw an error in all browsers. This is because the type attribute cannot be changed in Internet Explorer):
IE 6, IE 7, IE 8
Realizzazione di un sistema che permetta di trasformare agilmente, velocemente ed in maniera pulita un campo input text in uno con le funzionalità di calendario jquery (li dove sia attivato javascript).
Demo finale: Input text con jquery calendar (javascript abilitato):
Testato con: jquery 1.7.1, jquery ui 1.8.16 Continua a leggere
Note operative sul Flashback in oracle.
Testato con: Oracle 10g – 11g
Per poter utilizzare le tecnologia di Flashback è necessario che il vostro db sia opportunamente configurato
Ecco alcune delle principali funzionalità fornite dalla tecnologia Flashback
DROP TABLE table_name; ... SHOW RECYCLEBIN ... FLASHBACK TABLE table_name to BEFORE DROP;
Problema: Personalizzare (sostituire) le pagine di errore predefinite del server http Apache.
Testato con: Apache Http Server 2.4.1
Soluzione: Per sostituire la pagina di errore del server apache http è necessario configurare il file httpd.conf presente nella cartella conf sotto il percorso di installazione di Apache. Continua a leggere
Aggiornato al 29/03/12, grazie alle segnalazioni di Andrea 😉
Problema: verificare l’esistenza di una determinata colonna all’interno del db inserendo il suo nome o parte di esso
Testato: oracle db, 10g – 11g
Soluzione: eseguire il seguente comando sql sostituendo a nomecolonna il nome della colonna (o parte di esso) da ricercare:
select table_name, column_name from all_tab_columns where column_name like '%nomecolonna%'
select table_name, column_name from USER_TAB_COLUMNS where column_name like '%nomecolonna%'
Problema: il tag label ignora la proprietà di stile width.
Testato con: Firefox 11, Chrome 17, Safari 5.1.2
Continua a leggere