Pratiche di programmazione
Utilizzare le procedure di programmazione riportate di seguito.
Usa pacchetti strumentazione
Oracle Database fornisce pacchetti di strumentazione i cui sottoprogrammi consentono all'applicazione di generare informazioni di traccia quando necessario. Utilizzando queste informazioni di trace, è possibile eseguire il debug dell'applicazione senza un debugger e identificare il codice che si comporta male.
La strumentazione fornisce alla tua applicazione una notevole funzionalità; quindi, non è sovraccarico. Overhead è qualcosa che si può rimuovere senza perdere molto beneficio.
Oracle Database fornisce i seguenti pacchetti di strumentazione:
-
DBMS_APPLICATION_INFO consente a un amministratore di sistema di tenere traccia delle prestazioni dell'applicazione in base al modulo.
Per ulteriori informazioni su DBMS_APPLICATION_INFO, vedere Oracle Database PL/SQL Packages and Types Reference.
-
DBMS_SESSION consente all'applicazione di accedere alle informazioni sulla sessione e impostare preferenze e livelli di sicurezza
Per ulteriori informazioni su DBMS_SESSION, vedere Oracle Database PL/SQL Packages and Types Reference.
-
UTL_FILE consente all'applicazione di leggere e scrivere i file di testo del sistema operativo
Per ulteriori informazioni su UTL_FILE, vedere Oracle Database PL/SQL Packages and Types Reference.
Vedere anche: Oracle Database PL/SQL Packages and Types Reference per un riepilogo dei package PL/SQL forniti da Oracle Database
Raccolta statistiche e trace applicazione
Le statistiche del database forniscono informazioni circa il tipo di carico sul database e le risorse interne ed esterne utilizzate dal database. Per diagnosticare accuratamente i problemi di prestazioni del database utilizzando ADDM, è necessario che siano disponibili le statistiche.
Per informazioni sulla raccolta delle statistiche, vedere Oracle Database 2 Day + Performance Tuning Guide.
Nota: se Oracle Enterprise Manager non è disponibile, è possibile raccogliere le statistiche utilizzando i programmi secondari DBMS_MONITOR, descritti in Oracle Database PL/SQL Packages and Types Reference.
Oracle Database fornisce diversi strumenti di trace che consentono di monitorare e analizzare le applicazioni Oracle Database. Per informazioni dettagliate, vedere Oracle Database SQL Tuning Guide.
Usa funzionalità esistente
Un'applicazione che utilizza funzionalità esistenti è più facile da sviluppare e gestire di una che non lo fa, e funziona anche più velocemente.
Quando sviluppi la tua applicazione, utilizza le funzionalità esistenti del tuo linguaggio di programmazione, del tuo sistema operativo, di Oracle Database, dei pacchetti e dei tipi PL/SQL che Oracle Database fornisce il più possibile.
Esempi di funzionalità esistenti che molti sviluppatori reinventano includono le seguenti funzioni:
-
Vincoli
Per informazioni introduttive sui vincoli, vedere "Garantire l'integrità dei dati nelle tabelle".
-
Funzioni SQL (funzioni che sono SQL "integrate")
Per informazioni sulle funzioni SQL, vedere Oracle Database SQL Language Reference.
-
Sequenze (che possono generare valori sequenziali univoci)
Vedere "Creazione e gestione delle sequenze".
-
Audit (il monitoraggio e la registrazione delle azioni selezionate del database dell'utente)
Per informazioni introduttive sull'auditing, vedere Oracle Database Security Guide.
-
Replication (il processo di copia e gestione di oggetti di database, come le tabelle, in più database che formano un sistema distribuito di database)
Per informazioni sulla replica, consultare la documentazione di Oracle GoldenGate.
-
Accodamento dei messaggi (come le applicazioni aziendali basate sul Web comunicano tra loro)
Per informazioni introduttive su Oracle Database Advanced Queuing (AQ), vedere Oracle Database Advanced Queuing User's Guide.
-
Gestione di una cronologia delle modifiche apportate ai record
Per informazioni introduttive su Workspace Manager, vedere Oracle Database Workspace Manager Developer's Guide.
In Esempio 8-4, due transazioni concorrenti rimuovono dalla coda i messaggi memorizzati in una tabella, ovvero ogni transazione trova e blocca la riga successiva non elaborata della tabella. Invece di richiamare semplicemente la procedura DBMS_AQ.DEQUEUE (descritta in Oracle Database PL/SQL Packages and Types Reference), l'esempio crea un indice basato su funzioni nella tabella e quindi utilizza tale funzione in ogni transazione per recuperare le righe e visualizzare i messaggi.
Il codice nell'Esempio 8-4 implementa una funzione simile a un richiamo DBMS_AQ.DEQUEUE, ma con meno funzionalità. Il tempo di sviluppo risparmiato utilizzando la funzionalità esistente (in questo caso, gli indici basati sulle funzioni) può essere elevato.
Esempio 8-4 transazioni di rimozione dalla coda concorrenti
Crea tabella:
DROP TABLE t;
CREATE TABLE t
( id NUMBER PRIMARY KEY,
processed_flag VARCHAR2(1),
payload VARCHAR2(20)
);
Crea indice per la tabella:
CREATE INDEX t_idx ON
t( DECODE( processed_flag, 'N', 'N' ) );
Inserisci dati nella tabella:
INSERT INTO t
SELECT r,
CASE WHEN MOD(r,2) = 0 THEN 'N' ELSE 'Y' END,
'payload ' || r
FROM (SELECT LEVEL r FROM DUAL CONNECT BY LEVEL <= 5);
Mostra tabella:
SELECT * FROM t;
Risultato:
ID P PAYLOAD
---------- - --------------------
1 Y payload 1
2 N payload 2
3 Y payload 3
4 N payload 4
5 Y payload 5
5 rows selected.
Prima operazione:
DECLARE
l_rec t%ROWTYPE;
CURSOR c IS
SELECT *
FROM t
WHERE DECODE(processed_flag,'N','N') = 'N'
FOR UPDATE
SKIP LOCKED;
BEGIN
OPEN c;
FETCH c INTO l_rec;
IF ( c%FOUND ) THEN
DBMS_OUTPUT.PUT_LINE( 'Got row ' || l_rec.id || ', ' || l_rec.payload );
END IF;
CLOSE c;
END;
/
Risultato:
Got row 2, payload 2
Transazione concorrente:
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
l_rec t%ROWTYPE;
CURSOR c IS
SELECT *
FROM t
WHERE DECODE(processed_flag,'N','N') = 'N'
FOR UPDATE
SKIP LOCKED;
BEGIN
OPEN c;
FETCH c INTO l_rec;
IF ( c%FOUND ) THEN
DBMS_OUTPUT.PUT_LINE( 'Got row ' || l_rec.id || ', ' || l_rec.payload );
END IF;
CLOSE c;
COMMIT;
END;
/
Risultato:
Got row 4, payload 4
Vedere anche:
-
Guida alle nuove funzionalità di Oracle Database (con ogni release)
-
Oracle Database Concepts (con ciascuna release)
Copri tabelle database con viste di edizione
Se l'applicazione utilizza tabelle di database, coprire ciascuna di esse con una vista di edizione in modo da poter utilizzare la ridefinizione basata su edizioni (EBR) per aggiornare il componente di database dell'applicazione mentre è in uso, riducendo al minimo o eliminando i tempi di inattività.
Per informazioni sulla ridefinizione basata sull'edizione, vedere Oracle Database Development Guide.