Pratiche di programmazione consigliate
Utilizzare le seguenti procedure di programmazione consigliate.
Usa pacchetti strumentazione
Oracle AI Database fornisce pacchetti di strumentazione i cui sottoprogrammi consentono all'applicazione di generare informazioni di trace 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.
Di seguito sono riportati alcuni pacchetti di strumentazione forniti da Oracle AI Database.
-
DBMS_APPLICATION_INFO, che 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 AI Database PL/SQL Packages and Types Reference.
-
DBMS_SESSION, che consente all'applicazione di accedere alle informazioni sulla sessione e impostare preferenze e livelli di sicurezza
Per ulteriori informazioni su DBMS_SESSION, vedere Oracle AI Database PL/SQL Packages and Types Reference.
-
UTL_FILE, che consente all'applicazione di leggere e scrivere i file di testo del sistema operativo
Per ulteriori informazioni su UTL_FILE, vedere Oracle AI Database PL/SQL Packages and Types Reference.
Vedi anche: Oracle AI Database PL/SQL Packages and Types Reference per un riepilogo dei package PL/SQL forniti da Oracle AI 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 Introduzione a Oracle AI Database con il tuning delle prestazioni.
Nota: se Oracle Enterprise Manager non è disponibile, è possibile raccogliere le statistiche utilizzando i programmi secondari DBMS_MONITOR, come descritto in Oracle AI Database PL/SQL Packages and Types Reference.
Oracle AI Database fornisce diversi strumenti di trace che possono aiutarti a monitorare e analizzare le applicazioni di database. Per i dettagli, vedere Oracle AI 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 AI Database, dei pacchetti e dei tipi PL/SQL che Oracle AI Database fornisce il più possibile.
Esempi di funzionalità esistenti che molti sviluppatori reinventano sono:
-
Vincoli
Per informazioni introduttive sui vincoli, vedere "Garantire l'integrità dei dati nelle tabelle".
-
Funzioni SQL (funzioni "integrate" in SQL)
Per informazioni sulle funzioni SQL, vedere Oracle AI Database SQL Language Reference.
-
Sequenze (che possono generare valori sequenziali univoci)
Vedere "Creazione e gestione delle sequenze".
-
Audit (il monitoraggio e la registrazione di azioni selezionate del database dell'utente)
Per informazioni introduttive sull'auditing, vedere Oracle AI 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 AI Database Advanced Queuing (AQ), vedere Oracle AI Database Advanced Queuing User's Guide.
-
Gestione di una cronologia delle modifiche apportate ai record
Per informazioni introduttive su Workspace Manager, vedere Oracle AI 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 AI 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 AI Database (con ogni release)
-
Oracle AI Database Concepts (con ogni release)
Copri tabelle database con viste di edizione
Se l'applicazione utilizza tabelle di database, coprirle 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 AI Database Development Guide.