di Casimir Saternos
Pubblicato Novembre 2005
Impara alcuni script shell bash di base per l'installazione, l'esecuzione e la gestione dei database Oracle su Linux.
Circa sette anni fa, Oracle ha pubblicato il primo database commerciale su Linux. Da allora, Oracle, Red Hat e Novell/SUSE collaborano costantemente alle modifiche al kernel Linux quando si riferiscono alle performance del database e delle applicazioni. Per questo motivo, Oracle Database 10g for Linux include miglioramenti strettamente correlati al sistema operativo. Oggi, più che mai, i DBA devono avere le conoscenze e l'esperienza su questa piattaforma per amministrare al meglio i sistemi sotto la loro supervisione.
Esiste una tradizionale ripartizione delle responsabilità tra amministratori di sistema e DBA. Tuttavia, in pratica, la distinzione non è sempre chiara. Molti negozi IT assumano persone che si occupano delle preoccupazioni a livello di database e di sistema operativo. Naturalmente, lo stesso Oracle Database utilizza le risorse del sistema operativo ed è progettato per interagire strettamente con il suo ambiente.
Inoltre, molti amministratori di sistema e DBA trovano necessario o conveniente automatizzare le attività relative al loro lavoro. L'installazione del software, il monitoraggio delle risorse di sistema e la gestione dei sistemi comportano attività ripetitive e soggette a errori sono meglio affrontate attraverso processi automatizzati rispetto alle procedure manuali.
Un metodo utilizzato per automatizzare tali attività è la creazione di script shell. Gli script shell svolgono un ruolo cruciale nel sistema Linux proprio dal momento in cui sono installati. All'avvio e all'arresto del sistema vengono richiamati vari script. Le utility di Oracle e di altri fornitori di terze parti vengono richiamate mediante script shell. Dato che possono essere sviluppati rapidamente, venivano utilizzati in passato per la prototipazione di applicazioni. Gli amministratori di sistema hanno sfruttato le funzionalità disponibili tramite script shell per fornire soluzioni su misura per i requisiti specifici e le idiosincrasie dei sistemi sotto la loro supervisione.
In questo articolo, introdurrò funzionalità disponibili tramite lo script shell "bash", pertinente all'installazione, all'esecuzione e alla manutenzione dei database Oracle su una piattaforma Linux. Tieni presente che questo articolo è rivolto ai principianti di script Linux o DBA che hanno appena iniziato con Linux; sarà poco utile per gli amministratori di sistema Linux più esperti.
Che cos'è uno script shell?
Uno script shell è semplicemente un file di testo contenente una sequenza di comandi. Quando si esegue il file o lo script, vengono eseguiti i comandi contenuti nel file. Il termine shell si riferisce semplicemente alla particolare interfaccia utente della riga di comando utilizzata per comunicare con il kernel Linux. Sono disponibili diverse shell, tra cui la shell C (csh), shell Korn (ksh), shell Bourne (sh) e shell Bourne-Again (bash). Lo stesso shell è un comando che legge le righe da un file o dal terminale, le interpreta e in genere esegue altri comandi. Shell Bourne-Again incorpora le caratteristiche delle altre shell menzionate ed è quella usata per gli script di cui parla questo articolo.
La prima riga del file di script può essere utilizzata per determinare quale shell verrà utilizzata per eseguire lo script. Questo è il significato della prima riga trovata in tutti gli esempi di script:
#!/bin/bash
Perché usare gli script shell?
A seconda del contesto, è possibile che non venga visualizzato alcun valore immediato per lo script shell in quanto si riferisce al lavoro del DBA. Se non si ha esperienza con i sistemi UNIX o simili a UNIX, la miriade di comandi criptici potrebbe creare confusione. Oltre a essere un database relazionale, Oracle 10g offre una solida piattaforma per l'elaborazione dei dati all'interno del database e diversi metodi per interagire con il sistema operativo all'esterno del database.
Tuttavia, sono diversi i motivi per approfondire lo script shell, tra cui:
Quando non utilizzare gli script shell
Oracle Database include funzionalità che si estendono oltre la definizione tradizionale di un RDBMS. Come qualsiasi altro software, utilizza risorse fornite dal sistema operativo, ma può "vedere" e "cambiare" il suo ambiente in misura molto maggiore rispetto ad altri software. Le viste fisse di SQL e Oracle forniscono un'immagine del sistema dall'interno del database, mentre lo script shell fornisce una vista del sistema dall'esterno del database. Lo script shell non è la soluzione per ogni problema.
È importante riconoscere che molti aspetti del sistema operativo possono essere monitorati e modificati dall'interno del database. Le viste fisse di Oracle (le viste con prefisso v$) possono essere utilizzate per determinare il nome host del computer (v$instance) o il nome della piattaforma su cui è in esecuzione il database (v$database). È possibile determinare anche la posizione e gli altri attributi dei file associati al database. La posizione e gli altri attributi dei file di dati (v$datafile, dba_data_files), dei file temporanei (v$tempfile, dba_temp_files), dei redo log (v$logfile), dei log di archivio (v$archived_log) e dei control file (v$controlfile) possono essere sottoposti a query direttamente dal database. Da questa vista è possibile determinare le informazioni sull'area di recupero flash ($recovery_file_dest), nonché alcuni parametri init.ora (db_recovery_file_dest, db_recovery_file_dest_size). È possibile eseguire query anche sullo stato dei processi (v$process) e della memoria (v$sga, v$sgastat e così via). Esistono diversi package PL/SQL integrati, nonché la possibilità di creare oggetti di database Java e C che consentono un accesso aggiuntivo al sistema operativo di base.
Se si sta valutando la creazione di script per un task che richiede una buona quantità di accesso al database, è probabile che lo script non sia la scelta migliore. Più avanti in questo articolo, c'è una descrizione di come accedere al database utilizzando SQL*Plus, ma in molti casi è meglio affrontare il problema utilizzando un altro linguaggio.
I grafici riportati di seguito riepilogano le informazioni accessibili dal database stesso.
Identificazione server | Query rappresentativa | Note> |
---|---|---|
Nome host in cui è in esecuzione l'istanza |
|
È inoltre possibile ottenere queste informazioni eseguendo da bash quanto segue:
oppure
|
Piattaforma del sistema operativo |
|
Vengono restituite informazioni simili se si esegue uname -s |
posizioni dei file Oracle | Query rappresentativa | Note |
---|---|---|
Control file |
|
Posizione dei file di controllo del database. Il parametro init.ora control_files contiene anche queste informazioni. |
File di dati |
|
Posizione dei file di dati del database |
File temporanei |
|
Posizione dei file temporanei del database |
File di log |
|
Posizione dei redo log |
Log archiviati |
|
Posizione dei redo log archiviati. I parametri init.ora log_archive_dest_n contengono anche queste informazioni. Questa query non restituirà risultati se il database non è in modalità Archivelog. |
Area di recupero flash |
|
La directory utilizzata in un'installazione Oracle 10g per l'area di recupero flash. Il parametro init.ora db_recovery_file_dest contiene anche queste informazioni. |
Altri punti di accesso sul file system indicati dai parametri |
|
I risultati di questa query possono variare notevolmente a seconda dell'installazione e della versione di Oracle Database. I parametri che possono essere restituiti includono: file sp standby_archive_dest utl_file_dir background_dump_dest user_dump_dest core_dump_dest audit_file_dest dg_broker_config_file1 dg_broker_config_file2 |
Accesso programmatico al file system | selezionare directory_path da dba_directories |
Il parametro Oracle UTL_FILE_DIR e gli oggetti di database DIRECTORY possono essere utilizzati per accedere a file che non fanno parte del funzionamento standard del database. |
Processore/processi | Query rappresentativa | Note |
---|---|---|
Processi sessione |
|
Lo spid può essere correlato con i risultati ps -ef per confrontare le informazioni disponibili nel database con le informazioni del sistema operativo per un determinato processo. |
Processi correlati al parallelismo |
|
Molti aspetti di Oracle Database, quali il caricamento, l'esecuzione di query, la creazione, il recupero e la replica degli oggetti, possono utilizzare il parallelismo per accelerare le attività che è possibile suddividere. Il parametro parallel_threads_per_cpu imposta il grado di parallelismo predefinito dell'istanza. |
Memoria | Query rappresentativa | Note |
---|---|---|
Area globale programma | selezionare * da V$PGASTAT |
Il parametro pga_aggregate_target viene utilizzato per configurare la memoria per tutte le connessioni server dedicate. Le utility Linux, inclusi vmstat e versioni successive, possono essere utilizzate per monitorare l'uso della memoria. |
Area globale sistema | selezionare * da v$sga |
I parametri SGA_MAX_SIZE e SGA_TARGET vengono utilizzati per configurare le funzioni di allocazione dinamica della memoria di Oracle Database 10 g. È possibile utilizzare altri parametri per allocare manualmente memoria per scopi specifici. Di nuovo, sono disponibili varie utility Linux per monitorare l'allocazione della memoria. |
Script BASH
Gli script vengono definiti come parte di un processo automatico (senza intervento umano) o vengono eseguiti in modo interattivo, con l'utente che risponde ai prompt. Finché si dispone dell'autorizzazione eseguibile per un file, è possibile eseguirla dalla riga di comando digitandone il nome. Se non si dispone dell'autorizzazione di esecuzione per il file ma si dispone dell'autorizzazione di lettura, è possibile eseguire lo script anteponendolo a sh
.
Se uno script è progettato per essere eseguito senza l'input dell'utente, sono disponibili diverse opzioni per chiamarlo. È possibile eseguire uno script in background e continuare anche se si esegue la disconnessione, immettendo un comando nel seguente modulo:
nohup /path_to_dir/myscript_here.sh &
Ciò può risultare utile per l'esecuzione di script che richiedono molto tempo per essere completati. Il comando at
può essere utilizzato per eseguire uno script in futuro e cron
può essere utilizzato per pianificare l'esecuzione periodica degli script.
Gli esempi seguenti illustrano gli aspetti essenziali della visualizzazione dell'output (utilizzando echo
), del loop, della logica condizionale e dell'assegnazione di variabili.
print_args.sh. Gli argomenti sono parole a destra del nome del comando che vengono passate nello script. Per accedere al primo parametro, utilizzare la variabile $1
. La variabile $0
contiene il nome dello script stesso. La variabile $#
contiene il numero di argomenti nello script. Un metodo pratico per l'iterazione di tutti i parametri passati prevede l'utilizzo di un loop while
e del comando Maiusc. Questo comando consente di iterare tutti gli argomenti della lista di argomenti (anziché rimanere in un loop infinito).
while [ $# -ne 0 ]
do
echo $1
shift
done
Se uno script accetta un nome file come argomento (o richiede un nome utente) e il file verrà letto in un secondo momento nello script, è consigliabile verificare se è accessibile e leggibile. Ad esempio, uno script di recupero che prevede la selezione di un file di controllo di backup potrebbe richiedere all'utente di effettuare una selezione che verrà utilizzata successivamente nello script per ripristinare il file.
if [ ! -r $1 ]; then # not exists and is readable
echo "File $1 does not exist or is not readable."
exit;
fi
La sequenza di caratteri
se [ ! -r $1 ];
è ciò che esegue effettivamente il test. Se il contenuto tra parentesi viene restituito su true, i comandi visualizzati tra if e fi verranno eseguiti. Il test effettivo viene visualizzato tra le parentesi. Il punto esclamativo serve a negare il test che si sta facendo. L'opzione -r
controlla se il file è leggibile. Ciò che viene testato in questo caso particolare è il primo argomento trasmesso allo script. Utilizzando un test diverso ( -d
), è possibile verificare se una determinata voce è una directory (vedere is_a_directory.sh).
do_continue.sh. Questo esempio è una semplice sequenza rappresentativa di comandi che può essere utilizzata per leggere l'input dell'utente per vari scopi. Prima di eseguire un processo che può causare la perdita di dati o altri risultati indesiderati in determinate condizioni che non sono determinabili dall'interno dello script, è consigliabile includere un prompt che chiede se l'utente desidera effettivamente che lo script esegua il comando o i comandi successivi. L'esempio seguente chiede se l'utente desidera continuare, legge una variabile denominata doContinue
dalla riga di comando e valuta ciò che l'utente ha immesso. Se l'utente inserisce qualcosa di diverso da "y", viene informato che lo script è "quitting" e esce senza eseguire il resto dello script dopo la fine del blocco if (fi
).
doContinue=n
echo -n "Do you really want to continue? (y/n) "
read doContinue
if [ "$doContinue" != "y" ]; then
echo "Quitting..."
exit
fi
È assolutamente necessario che solo gli utenti con le autorizzazioni corrette e l'ambiente eseguano un determinato script. Un utile check-in di uno script verifica l'utente che sta tentando di eseguire lo script. Se si racchiude un comando all'interno dei caratteri apici inversi ( '), i risultati del comando possono essere restituiti allo script. L'esempio seguente recupera l'utente attualmente connesso utilizzando whoami
e visualizza la data utilizzando il comando date più avanti nello script.
echo "You are logged in as ‘whoami‘";
if [ ‘whoami‘ != "oracle" ]; then
echo "Must be logged on as oracle to run this script."
exit
fi
echo "Running script at ‘date‘"
Gli script scritti per interagire con Oracle Database talvolta richiedono l'immissione di informazioni riservate quali una password di database. Il comando stty –echo
disattiva l'eco della schermata in modo che le informazioni immesse per il successivo comando read non vengano visualizzate sullo schermo. Dopo che le informazioni riservate sono state lette e memorizzate in una variabile (pw
nell'esempio seguente), il display può essere attivato nuovamente con l'eco stty.
stty -echo
echo -n "Enter the database system password: "
read pw
stty echo
Script Oracle
Alcuni file risiedono in una posizione fissa per una determinata installazione Oracle. È possibile determinare l'inventario Oracle visualizzando il file /etc/oraInst.loc. Il file /etc/oratab identifica i database (e altri programmi Oracle) installati sul server.
get_inv_location.sh. Questo script è un po' meno intuitivo degli esempi precedenti. Scomponendo lo script nei comandi del componente, si otterrà una migliore comprensione di ciò che viene realizzato.
Per determinare la posizione dell'inventario, si eseguirà la pipe dei risultati del comando cat (che visualizza il contenuto del file) su grep (utility che stampa le linee che corrispondono a un determinato pattern). Si stanno cercando linee che contengono il valore inventory_loc.
cat /etc/oraInst.loc | grep inventory_loc
Se sono presenti più ubicazioni di magazzino a causa di più installazioni, escludere le righe commentate con # . L'opzione -v esclude le righe che contengono il pattern specificato.
cat /etc/oraInst.loc |grep -v "#"|grep inventory_loc
Il risultato di questo comando sarà simile al seguente:
inventory_loc=/u01/oraInventory
È possibile reindirizzare gli standard in un file usando il reindirizzamento >. Se il file non esiste, viene creato. Se esiste, viene sovrascritto.
cat /etc/oraInst.loc|grep -v "#"|grep inventory_loc > tmp
Una volta ottenuto il record che indica l'ubicazione del magazzino, si desidera rimuovere la parte del record prima del segno di uguale. Questa volta si esegue il pipe dei risultati del comando cat per risvegliare (un linguaggio di scansione pattern e di elaborazione spesso utilizzato per suddividere i campi di lunghezza variabile), che essenzialmente tokenizza la stringa. L'opzione –F
indica che è possibile utilizzare il segno di uguale come delimitatore. Viene quindi stampato il secondo token di questa stringa ( $2
), che è tutto a destra del segno di uguale. Il risultato è la nostra posizione di inventario (/u01/oraInventory).
cat tmp | awk -F= '{print $2}'
Non esiste un motivo particolare per consentire la rimozione del file temporaneo (tmp).
tmp rm
list_oracle_homes.sh. Se si desidera determinare ORACLE_HOME per un determinato database, sono disponibili diverse opzioni. È possibile accedere come utente del database e echo
alla variabile $ORACLE_HOME. È inoltre possibile eseguire la ricerca nel file /etc/oratab e selezionare il nome associato a una determinata istanza. Le voci del database in questo file sono nel formato
$ORACLE_SID:$ORACLE_HOME:<N|Y>:
La riga seguente stampa il file ORACLE_HOME di una voce con il file ORACLE_SID di TESTDB:
cat /etc/oratab | awk -F: '{if ($1=="TESTDB") print $2 }'
Tuttavia, cosa succede se bisogna eseguire un'operazione su ogni ORACLE_HOME elencato nel file /etc/orainst? È possibile iterare in un elenco di questo tipo utilizzando lo snippet di codice seguente.
dblist=‘cat /etc/oratab | grep -v "#" | awk -F: '{print $2 }'‘
for ohome in $dblist ; do
echo $ohome
done
La variabile dblist
viene utilizzata come array. Questa variabile contiene tutti i percorsi ORACLE_HOME. Un loop for
viene utilizzato per iterare in questo elenco e ogni voce viene assegnata alla variabile ohome
e quindi rieseguita all'output standard.
search_log.sh. I prodotti Oracle generano una vasta gamma di log che ti suggeriamo di monitorare. L'alert log del database contiene messaggi critici per le operazioni del database. I file di log vengono generati anche quando i prodotti vengono installati o disinstallati e quando vengono applicate le patch. Lo script seguente viene iterato su un file passato ad esso come argomento. Se vengono trovate righe contenenti ORA-, un messaggio e-mail viene inviato a un destinatario designato.
cat $1 | grep ORA- > alert.err
if [ ‘cat alert.err|wc -l‘ -gt 0 ]
then
mail -s "$0 $1 Errors" administrator@yourcompany.com < alert.err
fi
Il test specifico eseguito è il conteggio del numero di parole presenti nel file alert.err, scritto quando si reindirizza a alert.err. Se il numero di parole ( wc
) è maggiore di ( -gt
) zero, il contenuto del blocco if verrà eseguito. In questo caso, si utilizza mail
(è possibile utilizzare anche send mail
) per inviare un messaggio. Il titolo del messaggio contiene lo script in esecuzione ($0
), il nome del log in fase di ricerca ($1
) e le righe corrispondenti alla ricerca iniziale (ORA-
) come corpo del messaggio.
Le variabili ambientali, ad esempio ORACLE_HOME, ORACLE_BASE e ORACLE_SID, possono essere utilizzate per individuare le risorse che non si trovano in una posizione fissa nell'ambiente Linux. Se si gestisce un'istanza dell'applicazione Oracle E-Business Suite 11i, è possibile utilizzare numerose altre variabili ambientali per individuare le risorse. Queste includono APPL_TOP, TWO_TASK, CONTEXT_NAME e CONTEXT_FILE, per citarne alcune. Per visualizzare un elenco completo nell'ambiente in uso, eseguire il comando seguente ed esaminare il file risultante (myenv.txt):
ambiente > myenv.txt
È possibile utilizzare diverse combinazioni di queste variabili ambientali come posizione di un file in fase di ricerca. Ad esempio, una posizione dell'alert log può essere designata come
$ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log
Sulla base dei principi introdotti in questo script, una più grande può essere scritta e programmata per l'esecuzione a intervalli periodici che cercherà il contenuto dell'alert log (o di un altro file di interesse) e invierà una e-mail se esistono errori. Quindi il contenuto del log può essere spostato in un altro file, in modo che solo i messaggi di errore più recenti verranno inviati via e-mail.
Script di Oracle Recovery Manager. Oracle Recovery Manager (RMAN) è una utility che può essere utilizzata per amministrare il backup e il recupero del database. Ciò semplifica notevolmente l'amministrazione su più piattaforme, poiché tutti gli script di backup possono essere scritti per essere eseguiti da RMAN, riducendo la quantità di codice specifico della piattaforma. RMAN può essere chiamato dal sistema operativo sottostante e passato uno script. Ad esempio, un backup a freddo (cold.sh) può essere composto dallo script seguente:
#!/bin/bash
rman target / <<EOF
shutdown immediate;
startup mount;
backup spfile;
backup database;
alter database open;
delete noprompt obsolete;
quit;
EOF
La riga 1 indica che si sta utilizzando la shell bash. La riga 2 richiama Oracle Recovery Manager e specifica il login dell'utente del sistema operativo al database di destinazione (specificato nella variabile di ambiente $ORACLE_SID). Il comando <<EOF
riportato di seguito indica che i comandi successivi verranno passati a RMAN per l'elaborazione. L'EOF sull'ultima riga indica che è stata raggiunta la fine della serie di comandi da passare a RMAN. RMAN viene quindi utilizzato per arrestare il database, avviare e attivare il database e procedere al backup del file dei parametri del server e del contenuto del database. Il database viene quindi aperto. I backup più vecchi di quelli specificati nel criterio di conservazione vengono quindi eliminati. Consultare la documentazione RMAN per creare un backup pertinente alla situazione.
I backup notturni vengono in genere pianificati ed eseguiti automaticamente. Lo script sopra riportato può essere chiamato e il contenuto dello standard inviato a un indirizzo di posta elettronica con il seguente comando:
sh cold.sh | mail -s"Backup ‘date‘" administrator@yourcompany.com
È possibile eseguire altre utility Oracle anche dagli script shell. La utility tnsping può essere utilizzata per verificare se un determinato identificativo di connessione Oracle può contattare il listener. È possibile eseguire questa utility per verificare la presenza di problemi di connessione:
tnsping ptch04 |grep TNS-
Le esportazioni di database e le importazioni (tradizionali e Data Pump) sono anche buoni candidati per la creazione di processi ripetuti.
Installazione del database. Molti dei passi coinvolti nell'impostazione di un database possono essere automatizzati. Prima di installare Oracle 10g su Linux, è necessario eseguire vari test per verificare la versione minima richiesta dei pacchetti e le impostazioni dei parametri del kernel. È possibile eseguire una query sulla versione di un pacchetto utilizzando il comando rpm
con l'opzione –q
.
rpm -q compat-libstdc++
È possibile determinare vari aspetti del sistema guardando il file system /proc "virtuale" o "pseudo". Non contiene file reali ma, piuttosto, informazioni sul sistema di runtime che possono essere visualizzate come se fossero presenti nei file. Ad esempio, /proc/meminfo contiene informazioni sulla memoria del sistema e grep MemTotal /proc/meminfo
visualizza la memoria totale del sistema. Usando awk
come in precedenza, è possibile isolare la quantità di memoria in kilobyte, utilizzando:
grep MemTotal /proc/meminfo | awk '{print $2}'
Tale comando potrebbe essere utilizzato nel contesto di uno script che effettui confronti e risponde di conseguenza (anche aggiornando il sistema stesso). Gli script di esempio 10gchecks_kernel.sh e 10gchecks.sh visualizzano semplicemente le versioni e le impostazioni correnti e consigliate in base alla documentazione Oracle.
Monitoraggio del database. Il comando ps
può essere utilizzato per segnalare lo stato del processo e per verificare se è in esecuzione un database, un listener, uno script o un altro processo di interesse. Se si desidera elencare tutti i database attualmente in esecuzione su un server, è possibile eseguire il seguente comando:
echo "'ps -ef | grep smon|grep -v grep|awk '{print $8}'| wk -F \"_\" '{print$3}'"
Anche se è funzionale, è un po' difficile capire a prima vista. Il primo comando, ps
(utilizzando le opzioni -ef
per un elenco completo di tutti i processi), trova tutti i processi in esecuzione sul server. Il successivo, grep
, cerca SMON (il processo in background di Oracle System Monitor), che indica che il database è in esecuzione. Si desidera rimuovere le voci che fanno riferimento al comando grep stesso, che è in esecuzione. Utilizzare quindi awk
per individuare l'ottava colonna nell'elenco, che contiene il nome del processo di monitoraggio del sistema nel formato ora_smon_<oracle_sid>. L'ultima istanza di risveglio utilizza quindi il carattere di sottolineatura come delimitatore per cercare e stampare il nome del database proprietario del processo SMON. Il carattere di sottolineatura deve essere visualizzato tra virgolette e la barra rovesciata viene utilizzata prima di ogni virgoletta per sfuggire a tali virgolette (perché l'intera stringa viene visualizzata in un insieme di virgolette doppie).
exec_sql.sh. Come indicato in precedenza, è possibile eseguire una query sul database da uno script shell a condizione che l'utente abbia accesso a sqlplus. L'esempio seguente restituisce un elenco (delimitato da spazi) di computer che attualmente gestiscono le sessioni nel database:
#!/bin/bash
output=‘sqlplus -s "/ as sysdba" <<EOF
set heading off feedback off verify off
select distinct machine from v\\$session;
exit
EOF
‘
echo $output
Questo script è simile al precedente script RMAN in cui si stanno inserendo comandi in un altro programma. Al database viene effettuata una connessione autenticata dal sistema operativo locale come sysdba. Per impedire la restituzione di messaggi estranei, questo script disattiva l'intestazione, il feedback e verifica le opzioni di SQL*Plus. La query viene eseguita e SQL*Plus viene chiuso.
Prendere nota della barra doppia prima del simbolo del dollaro nel nome della vista. Queste sono le sequenze di escape obbligatorie all'interno della stringa: la prima barra scatena la seconda barra, che sfugge il simbolo del dollaro. Di nuovo, non è perfetto, ma è funzionale.
Come accennato in precedenza, se si sta per scrivere qualcosa che richiede un ampio accesso al database, lo script shell non è l'opzione migliore. Potrebbe essere meglio riscrivere lo script in PL/SQL, Perl (che utilizza una sintassi simile a quella utilizzata negli script shell), Python, Java o un altro linguaggio di tua scelta.
Conclusione
Lo script shell può essere uno strumento efficace per automatizzare rapidamente le attività di amministrazione ripetitive e soggette a errori. Gli esempi in questo articolo forniscono un'introduzione alle possibilità disponibili, ma sono ben lungi dall'essere completi. Ogni sistema presenta diverse peculiarità e punti deboli e una configurazione unica. Un amministratore svilupperà soluzioni uniche per soddisfare le esigenze del sistema specifico.
Casimir Saternos è un DBA certificato da Oracle, IBM Certified Enterprise Developer e Sun Certified Java Programmer basato su Allentown, Pa.