Start · Sprachen · PHP · Referenz · oci_set_module_name

oci_set_module_name

Funktion

Setzt den Modulnamen für eine Oracle-Datenbankverbindung, der in Oracle-Diagnose- und Monitoring-Views sichtbar ist.

seit PHP 5.3.2 Kategorie: db

Signatur

oci_set_module_name(resource $connection, string $name): bool

Beschreibung

oci_set_module_name() weist der aktuellen Oracle-Datenbankverbindung einen Modulnamen zu. Dieser Name erscheint anschließend in Oracle-internen Views wie V$SESSION oder V$SQLAREA in der Spalte MODULE und erleichtert so das Monitoring, die Diagnose und das Performance-Tuning auf Datenbankebene.

Die Funktion ist besonders nützlich in größeren Anwendungen oder Microservice-Architekturen, in denen mehrere Applikationen dieselbe Oracle-Datenbank nutzen. Durch das Setzen eines aussagekräftigen Modulnamens (z. B. "Bestellverwaltung") können Datenbankadministratoren Abfragen und Sessions eindeutig einer Anwendungskomponente zuordnen.

Der Modulname wird beim nächsten Roundtrip zur Datenbank übertragen. Er kann während der Laufzeit beliebig oft geändert werden, um verschiedene Phasen der Anwendung zu kennzeichnen. Zusammen mit oci_set_action() und oci_set_client_info() ermöglicht er eine feingranulare Kontextinformation für Oracle-Monitoring-Tools wie Oracle Enterprise Manager.

Der Name darf maximal 48 Bytes lang sein. Längere Strings werden von Oracle serverseitig abgeschnitten.

Parameter

Name Typ Default Beschreibung
$connection Pflicht resource Eine gültige Oracle-Verbindungsressource, wie sie von oci_connect(), oci_pconnect() oder oci_new_connect() zurückgegeben wird.
$name Pflicht string Der zu setzende Modulname. Maximal 48 Bytes lang. Längere Werte werden von Oracle serverseitig auf 48 Bytes gekürzt.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. ungültige Verbindungsressource).

Beispiele

Modulnamen für eine Verbindung setzen

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');

if (!$conn) {
    $e = oci_error();
    trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}

// Modulnamen setzen – erscheint in V$SESSION.MODULE
oci_set_module_name($conn, 'Bestellverwaltung');

// Eine Abfrage ausführen – der Modulname wird beim nächsten Roundtrip übertragen
$stmt = oci_parse($conn, 'SELECT bestellnummer FROM bestellungen WHERE rownum <= 5');
oci_execute($stmt);

while ($row = oci_fetch_assoc($stmt)) {
    echo 'Bestellung: ' . $row['BESTELLNUMMER'] . PHP_EOL;
}

oci_free_statement($stmt);
oci_close($conn);
Bestellung: 10001 Bestellung: 10002 Bestellung: 10003 Bestellung: 10004 Bestellung: 10005

Kombination mit oci_set_action für feingranulares Monitoring

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');

if (!$conn) {
    $e = oci_error();
    trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}

// Modul und Aktion setzen – beide erscheinen in V$SESSION
oci_set_module_name($conn, 'Webshop');
oci_set_action($conn, 'Warenkorb laden');

$stmt = oci_parse($conn, 'SELECT artikel_id, menge FROM warenkorb WHERE kunden_id = :kid');
oci_bind_by_name($stmt, ':kid', $kundenId);
$kundenId = 42;
oci_execute($stmt);

while ($row = oci_fetch_assoc($stmt)) {
    echo 'Artikel ' . $row['ARTIKEL_ID'] . ' – Menge: ' . $row['MENGE'] . PHP_EOL;
}

// Aktion für den nächsten Schritt aktualisieren
oci_set_action($conn, 'Bestellung abschließen');

oci_free_statement($stmt);
oci_close($conn);

// Wichtig · Fallstricke

Längengrenze: Oracle begrenzt den Modulnamen auf 48 Bytes. Mehrbyte-Zeichen (z. B. UTF-8-Umlaute) können die effektive Zeichenanzahl reduzieren. Verwende kurze, ASCII-basierte Namen, um Abschneidungen zu vermeiden.

Verfügbarkeit: Die Funktion steht nur zur Verfügung, wenn PHP mit der Oracle-Erweiterung OCI8 kompiliert wurde (--with-oci8). Sie ist ab PHP 5.3.2 und OCI8 1.4 verfügbar.

Persistente Verbindungen: Bei persistenten Verbindungen (oci_pconnect()) kann der Modulname von einem vorherigen Request noch gesetzt sein. Es empfiehlt sich, ihn zu Beginn jedes Requests explizit neu zu setzen.