jump to navigation

Rman full tablespace backup with control file gennaio 7, 2010

Posted by installatore in Oracle, linux, networking, script, solaris.
Tags: , ,
add a comment

In questo post condivido uno script di backup completo del database per rman,lo script effettua anche il backup dei control file su un file di testo.La ritenzione è modificabile ed è impostata a 2 giorni.

Lo script che segue dovrà essere rinominato full_backup.rcv

run{
crosscheck backup;
crosscheck archivelog all;
change archivelog all crosscheck;
delete noprompt expired backup;
delete noprompt expired archivelog all;
delete noprompt obsolete redundancy 2;

allocate channel ch1 type disk;
backup format='/backup/rman/full_%d_%T_%U' tag='full_DBbackup_ris' database;
sql "alter system switch logfile";
backup format='/backup/rman/arch_%d_%T_%U' tag='full_ARCHbackup_ris' archivelog all delete all input;
release channel ch1;

crosscheck backup;
crosscheck archivelog all;
change archivelog all crosscheck;
delete noprompt expired backup;
delete noprompt expired archivelog all;
delete noprompt obsolete redundancy 2;

sql "alter database backup controlfile to trace as ''/backup/rman/controlfile_backup_trace.txt''";
}

mentre questo è lo script da schedulare con cron per lanciarlo e dovrà essere rinominato run_full_backup.sh .Questi due file dovranno essere inseriti nella cartella /backup/script mentre i file del backup andranno sotto /backup/rman .Ovviamente la struttura delle cartelle è modificabile a vostro piacimento.

#!/bin/sh

set base_dir='dirname $0'

mv /backup/rman/controlfile_backup_trace.txt /backup/rman/previous/controlfile_backup_trace.txt

su - oracle -c "rman nocatalog target sys/password cmdfile=/backup/script/full_backup.rcv log=/backup/script/rman.log" 

Per effettuare i backup del database tramite rman dovete avere il database in modalità archivelog (trovate come abilitare questo tipo di modalità in un mio post precedente).Grazie a questi ultimi con rman riusciamo ad avere una granularità, nel successivo recupero dei dati dal media di backup,legato alla durata tra uno switch dei redolog e l’altro.Di solito i redolog vengono customizzati in quantità e dimensioni per ottenere circa 15 minuti tra lo switch di un log e l’altro,questi parametri variano molto di paripasso con l’elevata attività o meno sul db.

Load Wikipedia Xml dump on CouchDB gennaio 6, 2010

Posted by installatore in cloud, couchdb, linux, scalability, script.
Tags: , , ,
add a comment

Dopo aver installato CouchDB su Centos 5 ,volevo provare a caricare qualche dato per fare delle prove su qualche migliaia di documenti.Così dopo aver scaricato l’ultimo dump completo in xml di Wikipedia Italia (raggiungibile al seguente url http://download.wikimedia.org/backup-index.html ).Ho creato questo script in php da lanciare da shell per effettuare il parsing dell’xml e inserirmi all’interno di un documento Json titolo e testo di ciascuna pagina wiki.

#!/usr/bin/php -q

<?PHP

/**

Raw Data Loader for Wikipedia XML Dump

*/

$couch_dsn = "http://192.168.0.8:5984/";

$couch_db = "test";

/**

* include the library

*/

require_once "/var/www/html/lib/couch.php";

require_once "/var/www/html/lib/couchClient.php";

require_once "/var/www/html/lib/couchDocument.php";

/**

* create the client

*/

$client = new couchClient($couch_dsn,$couch_db);

echo "#### Creating database ".$client->getDatabaseUri().': $result = $client->createDatabase();'."\n";

try {

$result = $client->createDatabase();

} catch (Exception $e) {

if ( $e instanceof couchException ) {

echo "We issued the request, but couch server returned an error.\n";

echo "We can have HTTP Status code returned by couchDB using \$e->getCode() : ". $e->getCode()."\n";

echo "We can have error message returned by couchDB using \$e->getMessage() : ". $e->getMessage()."\n";

echo "Finally, we can have CouchDB's complete response body using \$e->getBody() : ". print_r($e->getBody(),true)."\n";

<span style="white-space: pre;"> </span>echo "Are you sure that your CouchDB server is at $couch_dsn, and that database $couch_db does not exist ?\n";

exit (1);

} else {

echo "It seems that something wrong happened. You can have more details using :\n";

echo "the exception class with get_class(\$e) : ".get_class($e)."\n";

echo "the exception error code with \$e->getCode() : ".$e->getCode()."\n";

echo "the exception error message with \$e->getMessage() : ".$e->getMessage()."\n";

exit (1);

}

}

echo "Database successfully created. CouchDB sent the response :".print_r($result,true)."\n";

$wiki = new DOMDocument();

$wiki->load( '/tmp/couchdb/itwikisource-20100101-pages-articles.xml' );

$pages = $wiki->getElementsByTagName( "page" );

foreach( $pages as $page )

{

$titles = $page->getElementsByTagName( "title" );

$title = $titles->item(0)->nodeValue;

$texts = $page->getElementsByTagName( "text" );

$text = $texts->item(0)->nodeValue;

<span style="white-space: pre;"> </span>echo "#### Storing a document without _id property\n";

$doc = new stdClass();

$doc->title = $title;

$doc->text = $text;

echo "Storing \$doc : \$client->storeDoc(\$doc)\n";

try {

$response = $client->storeDoc($doc);

} catch (Exception $e) {

echo "Something weird happened: ".$e->getMessage()." (errcode=".$e->getCode().")\n";

exit(1);

}

echo "The document is stored. CouchDB response body: ".print_r($response,true)."\n";

echo "CouchDB created the unique identifier ".$response->id." for this document\n";

}

?>

Allego il codice dei tre file che vado ad includere a questo link http://jump.fm/XCQTG (è uno short link verso 2shared.com).

Il funzionamento del codice come vedete è molto semplice grazie a queste Api in php per CouchDB.Adesso dopo aver importato circa 750000 record in 1 ora e mezza (contando che lo sto facendo girare su una vm è un buon risultato :D ),il prossimo passo sarà quello di implementare una ricerca full-text sul db.Purtroppo CouchDB non è dotato nativamente di una ricerca di questo tipo pertanto deve essere aggiunta tramite un tool esterno sempre opensource chiamato couchdb-lucene reperibile su github a questa url http://github.com/rnewson/couchdb-lucene ,purtroppo pur avendo compilato e configurato tutto a dovere ottengo questo errore andando ad utilizzare gli indici full-text

Traceback (most recent call last):
  File "/usr/local/etc/couchdb-lucene-0.5-SNAPSHOT/tools/couchdb-external-hook.py", line 43, in main
    resp = respond(res, req, opts.local_host, opts.local_port)
  File "/usr/local/etc/couchdb-lucene-0.5-SNAPSHOT/tools/couchdb-external-hook.py", line 87, in respond
    res.request("GET", path, headers=req_headers)
  File "/usr/lib/python2.4/httplib.py", line 810, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.4/httplib.py", line 833, in _send_request
    self.endheaders()
  File "/usr/lib/python2.4/httplib.py", line 804, in endheaders
    self._send_output()
  File "/usr/lib/python2.4/httplib.py", line 685, in _send_output
    self.send(msg)
  File "/usr/lib/python2.4/httplib.py", line 652, in send
    self.connect()
  File "/usr/lib/python2.4/httplib.py", line 636, in connect
    raise socket.error, msg
error: (111, 'Connection refused')

Purtroppo non riesco ad arrivare a capo del problema….se qualcun altro ha avuto esperienze con un errore simile lo prego di contattarmi. :D

CouchDB document oriented NoSQL database gennaio 6, 2010

Posted by installatore in cloud, couchdb, linux, scalability.
Tags: , ,
add a comment

In questi giorni ho potuto testare così un pò su due piedi questo nuovo progetto Apache.Questo prodotto arrivato alla versione 0.10 si affianca a Google Gears e Adobe AIR.CouchDB è un database documentale accessibile tramite API JSON,completamente indicizzabile e interrogabile tramite linguaggio java script con cui è possibile creare viste e funzioni di map/reduce.Inoltre offre una scalabilità senza precedenti grazie alla funzione di replica incrementale e di risoluzione bidirezionale nei conflitti che possono crearsi.

CouchDB può essere utilizzato per archiviare intere applicazioni,essendo di fatto un webserver con la capacità di archiviare coppie di key-value.Un esempio di questa funzione è il progetto Toast (raggiungibile a questo link http://jchrisa.net:5984/toast/_design/toast/channel.html ) una chat interamente realizzata su base CouchDB ,le cui pagine sono memorizzate come attachement di CouchDB.Questo mette in campo una nuova caratteristica chiave di questo progetto ovvero la portabilità delle applicazioni e la capacità delle stesse di lavorare in Offline,per poi risincronizzarsi con un’eventuale altro server online.

Essendoci dietro a CouchDB un modo di pensare completamente diverso rispetto ai database relazionali cui siamo abituati,ho trovato molto utile il tutorial online (raggiungibile a questo sito http://labs.mudynamics.com/wp-content/uploads/2009/04/icouch.html ) completo di simulazione del db.

Per vedere la struttura dei dati presenti nel db potete aprire questa vista del progetto Toast per avere un’idea di come sono strutturati http://jchrisa.net:5984/_utils/document.html?toast/_design/toast

Parallel Universe Portal by Intel dicembre 28, 2009

Posted by installatore in cloud, scalability.
Tags:
add a comment

Anche Intel ormai è presente nel mondo del cloud computing on demand con il suo servizio Parallel Universe Portal,al contrario degli altri servizi offre come nota aggiuntiva la possibilità di testare le proprie applicazioni sviluppate per ambienti distribuiti Windows 32bit semplicemente effettuando l’upload del binario e selezionando la tipologia di architettura desiderata da 1 a 16 processori.Intel non fà quindi altro che riutilizzare la tecnologia del Parallel Amplifier Tool che fa parte del Parallel Studio tool suite,che permette di individuare possibili colli di bottiglia in questa tipologia di applicazioni.Il risultato può essere poi utilizzato in Parallel Studio per un ‘ulteriore analisi alla ricerca di locks,waits e concurrency .

Link: Parallel Universe Portal , Parallel Amplifier Tool

Eventual Consistency dicembre 28, 2009

Posted by installatore in cloud, scalability.
Tags: , ,
add a comment

Ecco un articolo che riassume molto bene il significato di eventual consistency

http://sbtourist.blogspot.com/2009/11/eventual-consistency-by-example.html

Top 10 Internet Startup killers dicembre 28, 2009

Posted by installatore in cloud, scalability.
Tags: , , ,
add a comment

Ho trovato molto interessante questo articolo sulle maggiori cause di fallimento dei numerosissimi progetti per applicazioni internet (es. social network come friendster).Una delle maggiori cause è il fatto che questi siti a volte non riescano a reggere il boom di visitatori molto spesso inaspettato a cui vanno in contro rendendosi lenti e indisponibili nella maggior parte dei casi.Sono problemi già noti e affrontati quotidianamente da grandi social network come Facebook (350.000.000 di utenti) piuttosto che Twitter (5.000.000 di utenti).Nella maggior parte dei casi il fallimento di tali siti stà nel fatto che le tecnologie/codice con cui sono sviluppate queste applicazioni non sono state pensate per far scalare il sito con un buon rapporto prezzo/prestazioni che ormai deve essere preso come indice di riferimento, per mantenere sotto controllo il costo del progetto, il che in un mondo di budget limitati e prefissati deve essere la regola per non farsi trascinare in un pozzo mangiasoldi.Tutto questo deve essere pensato in fase di progettazione e sviluppo dell’applicazione in quanto la scelta di algoritmi che utilizzino una maggiore potenza di calcolo rispetto all’utilizzo di spazio disco (es. uso di indici multipli) o il contrario già indirizza la  scelta di una piattaforma esterna per scalare la propria applicazione.Questo perchè ad esempio in Amazon EC2 la potenza di calcolo ha un prezzo minore rispetto allo spazio disco.

http://gigaom.com/2009/12/20/top-10-internet-startup-scalability-killers/

Log Collecting Virtual Appliance dicembre 8, 2009

Posted by installatore in Uncategorized.
Tags: , , , , , ,
add a comment

In questi ultimi giorni ho avuto la necessità di mettere in pista un server per effettuare la raccolta dei vari log di sistema degli apparati della sala server.Mi stavo complicando enormemente la vita creando una soluzione un pò come dire….”accroccata”,quando ho trovato questa virtual appliance incredibile….basta accenderla e sparagli dentro i log :D il tutto configurabile da interfaccia web.I log vengono salvati in automatico su un db mysql presente all’interno della vm e l’interfaccia web permette di fare discrete statistiche sul contenuto dei log.

Ecco il link: http://www.vmware.com/appliances/directory/53592

BackBlaze Pod Petabyte scale storage solution at low price settembre 23, 2009

Posted by installatore in Varie, linux.
add a comment

A inizio mese Backclaze una società che offre soluzioni di backup online ha rilasciato il progetto delle sue unità storage.

Dalle loro ricerche è emerso questi risultati in termini di costo di 1 Petabyte (1000Tb) con la tecnologia attualmente in commercio.

Come ben potete notare il costo della loro soluzione (ovviamente esclusa la parte software di gestione) è nettamente inferiore alle più note marche in commercio.

Un’unità da 67Tb ha un costo di 7867$ qui di seguito alcune immagini :

Il progetto è composto in totale da 45 dischi Sata da 1,5tb l’uno,che creano 3 volumi in RAID6 da 15 dischi ognuno (permette di perdere sino a 3 dischi senza perdere l’intero volume),su cui gira Debian 4 64bit e Jfs come file system (al momento il più prestante in questo genere di applicazioni),il tutto governato da interfaccia web,tramite le applicazioni proprietarie di backblaze.Tutto il “Pod” è assemblato con pezzi di facile reperibilità sul mercato,quindi in teoria praticabile da tutti.Sul sito è presente anche il modello in 3d dell’enclosure.

Un progetto davvero notevole complimenti a Backblaze.Di seguito il link al loro sito e articolo.

http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/

Trial Cloud Computing for ALL !! settembre 21, 2009

Posted by installatore in Varie.
Tags: , ,
add a comment

Per tutti quelli che ultimamente hanno sentito parlare abbondantemente di Cloud Computing,ma non hanno capito molto bene che cosa sia,RightScale offre un servizio trial dei servizi Amazon EC2 della durata di 10 ore (corrispondenti a circa 1$,secondo i prezzi di Amazon).Serve solamente inserire la propria mail e compilare qualche altro campo e si è pronti a partire.

Right Scale Free Trial

Il cloud computing offerto da Amazon,mette nel Cloud di tutto dagli Array , ai db,ai frontend, indirizzi ip,dns.Questi servizi sono molto utili per fronteggiare rapidamente necessità momentanee di scalabilità come può essere un forte numero improvviso di utenti  (per esempio un negozio online di articoli da regalo durante  il periodo natalizio),o agli sviluppatori di applicazioni su larga scala permette di tirare su in pochi minuti un perfetto scenario di test,altrimenti per velocizzare operazioni di calcolo.

Show PHP errors in shared server settembre 21, 2009

Posted by installatore in Varie, linux, security.
Tags: , ,
add a comment

Capita a volte sviluppando una nuova applicazione web,di dover vedere gli output degli errori generati da php nell’esecuzione della nostra applicazione,cosa che risulta difficoltosa se non possiamo accedere al file di configurazione php.ini del server (per esempio se abbiamo acquistato un servizio di hosting non dedicato o similare).

Come workaround possiamo aggiungere all’interno del nostro codice queste due semplici righe per avere l’output direttamente a video :D

 

error_reporting(E_ALL);
ini_set("display_errors", 1);

Mi raccomando ricordatevi di eliminare le righe una volta che la fase di sviluppo è completata per non mostrare eventuali errori ai vostri utenti :D