Unix – Cron

Pubblicato: 2 agosto 2013 in Linux, Unix

Il demone Cron è un processo di Unix che esegue comandi o istruzioni in determinate date ed orari, come definito dall’utente.

Cron può gestire i comandi (jobs) in modo da eseguirli una sola volta alla prima occorrenza della data/ora scelta.

Crontab invece  è in grado di eseguire ripetutamente  i comandi (jobs). Ad esempio nel caso si voglia eseguire una determinata operazione ogni giorno alle ore 12, oppure ogni giovedì alle 23.15.

Dove vengono salvati i file di Cron ??

Solitamente il path in cui risiedono è /var/spool/cron/ , ma per potervi accedere occorre essere autenticati come root.

Per inserire una nuova operazione da schedulare digirare il comando

crontab -e

Per muoversi ed aggiungere righe al file, utilizzare i comandi dell’editor VI

La struttura della riga di schedulazione deve essere la seguente :

.---------------- [m]inute: minuto (0 - 59) 
|  .------------- [h]our: ora (0 - 23)
|  |  .---------- [d]ay [o]f [m]onth: giorno del mese (1 - 31)
|  |  |  .------- [mon]th: mese (1 - 12) OPPURE jan,feb,mar,apr... 
|  |  |  |  .---- [d]ay [o]f [w]eek: giorno della settimana (0 - 6) (domenica=0 o 7)  OPPURE sun,mon,tue,wed,thu,fri,sat 
|  |  |  |  |

*  *  *  *  *  comando da eseguire

 

 

Per visualizzare il contenuto del cron digitare

crontab -l

Per disattivare lo standard OUTPUT al termine del comando digitare :

* * * * * comando da eseguire >/dev/null 2>&1

 

 

 

 

Come recuperare una tabella cancellata ? 

L’utente con ruolo  DBA può recuperare la tabella cancellata

Esistono diversi metodi per tentare il recupero di una tabella :

  •    DATA PUMP – Se la tabella era stata precedentemente esportata, può essere reimportata.
  •    RMAN – Programma di gestione dei Database Oracle
  •    LOG MINER – applicativo per l’ispezione dei REDO Logs ed eventuali ripristini
  •    FLASHBACK – Comando di recupero

Ecco un esempio su come recuperare una tabella cancellata con flashback.  Prima di recuperare una tabella è necessario verificare che sia presente nel “cestino” (recyclebin), e successivamente eseguire il comando “flashback table to before drop” per ripristinare la tabella:

SQL> select * from mytabletest;

ID
———-
1
2

SQL> drop table mytabletest;

Table dropped.

SQL> select  ORIGINAL_NAME from dba_recyclebin;

ORIGINAL_NAME
——————————–
MYTABLETEST

SQL> flashback table MYTABLETEST to before drop;

Flashback complete.

SQL> select * from mytabletest;

ID
———-
1
2

E’ sempre bene ricordarsi, prima di cancellare una tabella, di avere eventualmente un copia di backup, nel caso non si fosse cosi sicuri.

Spesso vengono cosruite delle query che hanno tempi di risposta molto lunghi ed utilizzano moltissime risorse della macchina.

EXPLAIN PLAN o piano di esecuzione di una query

Il comando  EXPLAIN PLAN (per Oracle) perme di esaminare il piano di esecuzione attuale di una interrogazione; descrivendo l’ordine e la modalita’ con cui vengono eseguite le operazioni. In questo modo verranno evidenziate le scelte fatte dall’ottimizzatore per poterle successivamente modificare, e rendere l’interrogazione più performante.

Strategie utilizzate dall’ottimizzatore

Le strategie offerte sono di  due tipologie:

  • L’approccio basato sulle regole

L’ottimizzatore decide il percorso di accesso ai dati basandosi sulla disponibilita’ del percorso di accesso per l’istruzione corrente e sul punteggio assegnato a tale percorso. Il punteggio viene fissato in modo statico quindi non modificabile in funzione di necessita’ specifiche, questo è uno degli svantaggi.

  • L’approccio basato sui costi

Rispetto all’approccio basato sulle regole, risulta essere decisamente piu’ performante. Si basa su una stima del costo di esecuzione di un piano (I/O, CPU, sec…ecc) per ciascun piano preso in esame dall’ottimizzatore. Per fare questa stima il sistema mantiene delle tabelle contenenti dati e statistiche relativi alla popolazione della base di dati. Tutti questi dati sono mantenuti in tabelle di sistema.

Ogni volta che il database viene modificato in modo significativo, ad esempio a fronte di caricamenti massivi o modifiche strutturali delle tabelle, sarà quindi necessario rieseguire la creazione delle statistiche, in modo tale ad avere delle informazioni aggiornate e precise per i nuovi piani di esecuzione. Oracle mette a disposizione due tipi di raccolta dei dati: uno per righe, piu’ dettagliato, e l’altro per blocchi, piu’ veloce.

Metodi di Join

  • Nested Loop Join – Nel caso più semplice in cui non sono presenti predicati locali e si accede alle relazioni mediante scan sequenziali
  • Hash Join -Sfruttando le proprietà delle funzioni di hash è possibile ridurre il numero di confronti da effettuare per eseguire il join senza dover ordinare preventivamente le relazioni
  • Sort-Merge Join –  Nel caso sulla tabella da ordinare insista un criterio di selezione locale, il numero di tuple da ordinare,  sarà ridotto in base al fattore di selettività del predicato
  • Star Join – serve solo quando nel join vengono usate primary key o foreign key tra una tabella di tipo “Fact tables” e una di tipo “Lookup table”. Queste due tabelle sono generalmente usate nei datawearehouse: “Fact table” sono tabelle molto grandi, mentre “Look up table” sono tabelle molto piu’ piccole che contengono informazioni su degli attributi delle prime.

E’ sempre buona norma prima di eseguire delle interrogazioni, verificare il loro piano di esecuzione, in modo da evitare “collassi” delle macchine, e ove si presentassero costi elevati, procedere magari con indicizzazioni e partizionamenti delle tabelle interessate.
 

E’ stata rilasciata la nuova versione di Oracle SQL Developer 4.0 , ed è ora disponibile sul sito Oracle (Oracle Technology Network) con miglioramenti sulla funzionalità e usabilità.

Tra le novità possiamo trovare

  •   Trova Object Database – RicercaLa ricerca del database è stata completamente ridisegnata. Il nuovo layout ad albero permette ricerche su più schemi, tipo di oggetto, i tipi di identificatori ed utilizzi. Una “history” delle ricerche saranno conservate per i successivi accessi. I risultati della ricerca possono essere visualizzati in un editor separato.
  • Riga di comando

La riga di comando è stata estesa al supporto dei report e del carello. E’ possibile eseguire report e generare pagine HTML.I comandi Carrello offrono la possibilità di esportare oggetti e dati. Possono essere applicate una serie di opzioni predefinite di generazione DDL e formati di dati.

  • Carello

Il carrello è stato notevolmente migliorato. È possibile creare e lavorare su più carrelli. La distribuzione degli oggetti è stata estesa per dare più flessibilità nella scelta di opzioni DDL, esportazione e formati di dati. Configurazioni ed esportazioni possono essere salvate e riutilizzate successivamente. E’ possibile confrontare gli oggetti di uno schema o conessioni con il Database Diff. Gli oggetti possono essere copiati con la funzione di copia del database.

  • Reports

La creazione dei report è stata notevolmente migliorata . La finestra di dialogo Crea nuovo report ha un layout albero per facilitare la navigazione. E’ disponibile un opzione avanzata per generare figli e Drill Down.  Report basati su grafici che includono altri tipi di grafici. I grafici possono essere visualizzati in anteprima o modalità progettazione. Un report HTML può essere generato per qualsiasi report. Miglioramenti nella generazione della documentazione, con un migliore layout ed il supporto per più thread per migliorare le prestazioni.

  • Miglioramenti dell’interfaccia utente

Le nuove modifiche dell’interfaccia utente in 4.0 migliorano il look and feel di SQL Developer. Un colore del bordo della finestra può essere impostato in modo dinamico per ogni connessione al database. Miglioramenti nell usabilità possono essere individuati con il nuovo Editor fluttuante e le finestre di navigazione.

  • Data Modeler 4.0

Questa versione include il nuovo Data Modeler versione 4.0. Le nuove funzionalità includono il supporto alla nuova versione Oracle 12c per le colonne identità e di mascheramento dei dati sensibili con le definizioni delle policy a livello di tabella ed a livello di colonna, la possibilità di creare Transparent Sensitive Data Protection (TSDP).

  • JDK 7 Support

Questa versione supporta JDK 7 e superiori.

Il download è disponibile direttamente sul sito della ORACLE

Le versioni attualmente disponibili sono :

  • Windows 32/64-bit
  • Mac OS X
  • Linux RPM

Fonte dati Oracle

In ambiente Unix / Linix spesso ci si trova a dover editare dei file di testo.

VI ha due modalità di funzionamento:

  • il modo comando (command)

Entrare in modalità comando è possibile in qualsiasi momento premendo il tasto ESC, ogni lettera verrà interpretata come un comando.

  • il modo inserimento (input)

In modalità inserimento ogni parola verrà inserita direttamente nel file. Per entrare in questa modalità utilizzare  i (insert).

Di seguito alcuni dei comandi più utilizzati :

Spostarsi nel file

^     inizio della riga corrente
$     fine della riga corrente
G     fine del file
1G     inizio del file

Ricerca e sostituzione del testo

/<testo>     cerca il testo dalla posizione corrente verso il basso
?<testo>     cerca il testo dalla posizione corrente verso l'alto
u     annulla l'ultima modifica effettuata
U     annulla l'ultimo annullamento
.     ripete l'ultimo comando

Comandi di copia e incolla

yy     copia la riga corrente
y2 <giu>     copia 2 righe sotto la posizione in cui si trova il cursore
p     incolla il testo nel punto dove si trova il cursore

Cancellare righe o caratteri

x     cancella il carattere in cui si trova il cursore
X     cancella il carattere alla sinistra del cursore
D     cancella tutto quello che si trova alla sinistra del cursore fino alla fine della riga
dd     cancella la riga in cui si trova il cursore
3dd     cancella 3 righe partendo dalla quella in cui si trova il cursore
dG     cancella dalla posizione in cui si trova il cursore fino alla fine del file
d1G     cancella dalla posizione in cui si trova il cursore fino all'inizio del file

Edit

i     inserisce caratteri a sinistra del cursore
I     inserisce caratteri all'inizio della linea

Salvare e uscire

ZZ     salvare e uscire
:w     salvare
:w <file>     salvare in altro file con il nome desiderato
:wq     salvare e uscire
:q     se non sono state effettuate modifche usce senza salvare
:q!     uscita incondizionata

Questa è una domanda frequente.
Come si può prendere un file dati delimitato e caricare solo alcune delle colonne, saltando i campi che non si desidera??

Non è possibile utilizzare Postion (x: y), perché il file dati non è di tipo posizionale, ed il campo successivo inizia dopo un delimitatore predefinito, e non nella colonna X.

Prima di Oracle8i, versione 8.1, sqlldr non era in grado difare questo senza apposite funzioni scritte ad hoc.

In Oracle8i, versione 8.1 è stata aggiunta la parola chiave FILLER in modo da consentire di saltare determinate colonne:

LOAD DATA
 INFILE *
 TRUNCATE INTO TABLE T
 CAMPI TERMINATED da ','
 (
 campo1,
 campo2 FILLER,
 campo3,
 campo4 FILLER,
 campo5 FILLER,
 campo6
 )

Tracciato tipo
a,b,c,d,e,f

Il risultato del caricamento sarà a,c,f, escludendo le colonne indicate come “FILLER”

Per esportare dati da una tabella /vista Oracle ad un file csv, possiamo utilizzare Sql Plus, richiamando un file script che legge i dati dalla tabella/vista ed esegue lo spool in un file:

  • Preparare un file di script ( scriptname.sql ) con le istruzioni per lo spool :
set echo off
set feedback off
set linesize 100
set pagesize 0
set sqlprompt ''
set trimspool on

spool /mnt/public/export/eport.csv 
-- eseguo la select concatenando i campi con il campo delimitatore , in questo caso il punto e virgola
select  Field1 ||';'||
        Field2 ||';'||
        Field3 ||';'||
        Field4 ||';'||
        FieldN  
  from user.table   -- oppure user.view
  ;

spool off

exit;
  • Connettersi ad Oracle tramite Sql Plus:

sqlplus <user>/<password>@<SID> @scriptname.sql

 

Come si può vedere il trucco è quello di impostare ad "OFF" qualsiasi output ed in più e di utilizzare l'operatoredi concatenazione di stringhe ||;|| per inserire un punto e virgola (o qualsiasi separatore) tra i vari campi dell'esportazione.

Il comando SPOOL apre un file e ridirige al suo interno, tutto quanto prodotto fino al comando SPOOL off.

Questa esportazione fa riferimento a campi testo e/o numerici, per altre tipologie di dato, occorre tener presente la necessità di eventuali formattazioni ( es. campi data )