Start · Sprachen · PHP · Referenz · oci_set_action

oci_set_action

Funktion

Setzt den Aktionsnamen für die aktuelle Oracle-Datenbankverbindung, der in Datenbanküberwachungs- und Diagnosetools sichtbar ist.

seit PHP 5.3.2 Kategorie: db

Signatur

oci_set_action(resource $connection, string $action): bool

Beschreibung

oci_set_action weist der aktuellen Oracle-Verbindung einen Aktionsnamen zu, der in der Oracle-Datenbank für Überwachungs-, Auditing- und Diagnosezwecke gespeichert wird. Der gesetzte Name ist über Datenbankviews wie V$SESSION und V$SQLAREA sowie über Oracle Enterprise Manager und andere Monitoring-Werkzeuge einsehbar.

Diese Funktion ist besonders nützlich, um im Datenbankprofiling gezielt nachvollziehen zu können, welche Aktion (z. B. ein bestimmter Verarbeitungsschritt oder eine Controller-Methode) eine bestimmte SQL-Anfrage ausgelöst hat. Zusammen mit oci_set_module_name und oci_set_client_info ermöglicht sie eine fein granulierte Kennzeichnung von Datenbankoperationen.

Der Aktionsname wird erst bei der nächsten Datenbankkommunikation (z. B. beim Ausführen einer Abfrage) an den Server übertragen. Die maximale Länge des Aktionsnamens beträgt 32 Byte; längere Zeichenketten werden abgeschnitten.

Diese Funktion steht nur zur Verfügung, wenn PHP mit der Oracle Database 10g Client-Bibliothek oder neuer kompiliert wurde.

Parameter

Name Typ Default Beschreibung
$connection Pflicht resource Eine gültige Oracle-Verbindungsressource, die z. B. von oci_connect, oci_pconnect oder oci_new_connect zurückgegeben wurde.
$action Pflicht string Der Aktionsname, der der Verbindung zugewiesen werden soll. Maximale Länge: 32 Byte. Längere Zeichenketten werden ohne Fehlermeldung abgeschnitten.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Aktionsname erfolgreich gesetzt wurde, oder false im Fehlerfall (z. B. wenn die Verbindungsressource ungültig ist).

Beispiele

Aktionsnamen vor einer Datenbankabfrage setzen

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}

// Modul und Aktion für die Verbindung setzen
oci_set_module_name($conn, 'MeinShop');
oci_set_action($conn, 'Bestellung_erstellen');

// Die Aktion ist nun in V$SESSION sichtbar, sobald die nächste Abfrage ausgeführt wird
$stid = oci_parse($conn, 'INSERT INTO bestellungen (id, betrag) VALUES (seq_bestellungen.NEXTVAL, :betrag)');
oci_bind_by_name($stid, ':betrag', $betrag);
$betrag = 99.95;
oci_execute($stid);

echo "Bestellung erfolgreich angelegt.\n";

oci_free_statement($stid);
oci_close($conn);
Bestellung erfolgreich angelegt.

Aktionsnamen dynamisch je nach Controller-Methode setzen

<?php
function verarbeiteAnfrage(resource $conn, string $controllerAction): void
{
    // Aktionsnamen für das DB-Monitoring setzen
    oci_set_module_name($conn, 'WebApp\\UserController');
    oci_set_action($conn, $controllerAction);

    $stid = oci_parse($conn, 'SELECT COUNT(*) AS anzahl FROM benutzer');
    oci_execute($stid);
    $row = oci_fetch_assoc($stid);
    echo "Benutzeranzahl: " . $row['ANZAHL'] . "\n";
    oci_free_statement($stid);
}

$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}

verarbeiteAnfrage($conn, 'listUsers');
oci_close($conn);
Benutzeranzahl: 42

// Wichtig · Fallstricke

Verfügbarkeit: oci_set_action erfordert Oracle-Clientbibliotheken ab Version 10g. Bei älteren Client-Versionen steht die Funktion nicht zur Verfügung.

Länge: Oracle begrenzt den Aktionsnamen auf 32 Byte. Mehrbyte-Zeichen (z. B. UTF-8) können dazu führen, dass weniger als 32 sichtbare Zeichen übertragen werden.

Übertragungszeitpunkt: Der Aktionsname wird nicht sofort, sondern erst mit dem nächsten Roundtrip zur Datenbank (z. B. beim Ausführen einer Abfrage) übermittelt. Wird die Verbindung danach für andere Aktionen wiederverwendet, sollte der Aktionsname entsprechend aktualisiert werden.

Persistente Verbindungen: Bei der Verwendung von oci_pconnect (persistente Verbindungen) sollte der Aktionsname zu Beginn jedes Requests neu gesetzt werden, da persistente Verbindungen wiederverwendet werden und den zuletzt gesetzten Wert beibehalten könnten.