Empfohlene Programmierverfahren
Verwenden Sie die folgenden empfohlenen Programmierverfahren.
Instrumentierungspakete verwenden
Oracle AI Database stellt Instrumentierungspackages bereit, deren Unterprogramme es Ihrer Anwendung ermöglichen, bei Bedarf Traceinformationen zu generieren. Mit diesen Trace-Informationen können Sie Ihre Anwendung ohne Debugger debuggen und Code identifizieren, der schlecht funktioniert.
Instrumentierung bietet Ihrer Anwendung eine beträchtliche Funktionalität; daher ist es kein Overhead. Overhead ist etwas, das Sie entfernen können, ohne viel Nutzen zu verlieren.
Einige Instrumentierungspakete, die Oracle AI Database bereitstellt, sind:
-
DBMS_APPLICATION_INFO, mit dem ein Systemadministrator die Performance Ihrer Anwendung nach Modul verfolgen kann.
Weitere Informationen zu DBMS_APPLICATION_INFO finden Sie in der Oracle AI Database PL/SQL-Packages and Types-Referenz.
-
DBMS_SESSION, mit der Ihre Anwendung auf Sessioninformationen zugreifen und Voreinstellungen und Sicherheitsebenen festlegen kann
Weitere Informationen zu DBMS_SESSION finden Sie in der Oracle AI Database PL/SQL-Packages and Types-Referenz.
-
UTL_FILE, mit dem die Anwendung Betriebssystemtextdateien lesen und schreiben kann
Weitere Informationen zu UTL_FILE finden Sie in der Oracle AI Database PL/SQL Packages and Types Reference.
Siehe auch: Oracle AI Database PL/SQL Packages and Types Reference für eine Zusammenfassung der PL/SQL-Packages, die Oracle AI Database bereitstellt
Statistiksammlung und Anwendungs-Tracing
Datenbankstatistiken bieten Informationen über den Lasttyp in der Datenbank und die von der Datenbank verwendeten internen und externen Ressourcen. Um Performanceprobleme mit der Datenbank mithilfe von ADDM genau diagnostizieren zu können, müssen Statistiken verfügbar sein.
Informationen zum Sammeln von Statistiken finden Sie unter Oracle AI Database - Erste Schritte mit Performance Tuning.
Hinweis: Wenn Oracle Enterprise Manager nicht verfügbar ist, können Sie Statistiken mit DBMS_MONITOR-Unterprogrammen erfassen, wie in der Oracle AI Database PL/SQL Packages and Types Reference beschrieben.
Oracle AI Database bietet mehrere Tracing-Tools, mit denen Sie Datenbankanwendungen überwachen und analysieren können. Weitere Informationen finden Sie in der Dokumentation SQL Tuning Guide für Oracle AI Database.
Vorhandene Funktionen verwenden
Eine Anwendung, die vorhandene Funktionen verwendet, ist einfacher zu entwickeln und zu warten als eine Anwendung, die dies nicht tut, und sie wird auch schneller ausgeführt.
Verwenden Sie bei der Entwicklung Ihrer Anwendung die vorhandene Funktionalität Ihrer Programmiersprache, Ihres Betriebssystems, der Oracle AI Database sowie der PL/SQL-Packages und -Typen, die Oracle AI Database so weit wie möglich bereitstellt.
Beispiele für vorhandene Funktionen, die viele Entwickler neu erfinden, sind:
-
Constraints
Einführende Informationen zu Constraints finden Sie unter "Datenintegrität in Tabellen sicherstellen".
-
SQL-Funktionen (Funktionen, die in SQL integriert sind)
Informationen zu SQL-Funktionen finden Sie in der Oracle AI Database SQL Language Reference.
-
Sequenzen (die eindeutige sequenzielle Werte generieren können)
Siehe "Sequenzen erstellen und verwalten".
-
Auditing (Überwachung und Aufzeichnung ausgewählter Benutzerdatenbankaktionen)
Einführende Informationen zum Auditing finden Sie in der Dokumentation Oracle AI Database Security Guide.
-
Replikation (der Prozess zum Kopieren und Verwalten von Datenbankobjekten, wie Tabellen, in mehreren Datenbanken, aus denen ein verteiltes Datenbanksystem besteht)
Informationen zur Replikation finden Sie in der Oracle GoldenGate-Dokumentation.
-
Nachrichtenwarteschlange (wie webbasierte Geschäftsanwendungen miteinander kommunizieren)
Einführende Informationen zu Oracle AI Database Advanced Queuing (AQ) finden Sie in der Dokumentation Oracle AI Database Advanced Queuing - Benutzerdokumentation.
-
Historie der Datensatzänderungen verwalten
Einführende Informationen zu Workspace Manager finden Sie in der Dokumentation Oracle AI Database Workspace Manager Developer's Guide.
In Beispiel 8-4 entpacken zwei nebenläufige Transaktionen Nachrichten, die in einer Tabelle gespeichert sind (d.h. jede Transaktion findet und sperrt die nächste nicht verarbeitete Zeile der Tabelle). Anstatt einfach die Prozedur DBMS_AQ.DEQUEUE aufzurufen (in Oracle AI Database PL/SQL Packages and Types Reference beschrieben), erstellt das Beispiel einen funktionsbasierten Index für die Tabelle und verwendet diese Funktion dann in jeder Transaktion, um die Zeilen abzurufen und die Nachrichten anzuzeigen.
Der Code in Beispiel 8-4 implementiert ein Feature, das einem DBMS_AQ.DEQUEUE-Aufruf ähnelt, jedoch weniger Funktionen aufweist. Die durch die Verwendung vorhandener Funktionen eingesparte Entwicklungszeit (in diesem Fall funktionsbasierte Indizes) kann groß sein.
Beispiel 8-4: Gleichzeitige Dequeuing-Transaktionen
Tabelle erstellen:
DROP TABLE t;
CREATE TABLE t
( id NUMBER PRIMARY KEY,
processed_flag VARCHAR2(1),
payload VARCHAR2(20)
);
Index in Tabelle erstellen:
CREATE INDEX t_idx ON
t( DECODE( processed_flag, 'N', 'N' ) );
Tabelle ausfüllen:
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);
Tabelle anzeigen:
SELECT * FROM t;
Ergebnis:
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.
Erste Transaktionen:
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;
/
Ergebnis:
Got row 2, payload 2
Hintergrundtransaktion:
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;
/
Ergebnis:
Got row 4, payload 4
Siehe:
-
Leitfaden zu neuen Features von Oracle AI Database (mit jedem Release)
-
Oracle AI Database Concepts (mit jedem Release)
Datenbanktabellen mit Editionsansichten abdecken
Wenn Ihre Anwendung Datenbanktabellen verwendet, decken Sie jede Anwendung mit einer Editionsansicht ab, sodass Sie die Datenbankkomponente Ihrer Anwendung mit einer Editions-basierten Neudefinition (EBR) upgraden können, während sie verwendet wird. Dadurch wird die Ausfallzeit minimiert oder eliminiert.
Informationen zur Editions-basierten Neudefinition finden Sie im Oracle AI Database Development Guide.