There's an article "PHP Web Auditing, Authorization and Monitoring with Oracle Database" at www.oracle.com/technetwork/articles/dsl/php-web-auditing-171451.html which is all about using oci_set_client_identifier()
(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)
oci_set_client_identifier — Establece el identificador del cliente
Establece el identificador del cliente usado por varios componentes de la base de datos para identificar usuarios de aplicaciones ligeras que se identificaron con el mismo usuario de base de datos.
El identificador del cliente se registra con la base de datos cuando ocurra el siguiente "viaje de ida y vuelta" desde PHP a la base de datos, normalemnte cuando una sentencia SQL es ejecutada.
El identificador puede ser consultado subsiguientemente, por ejemplo,
con SELECT SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER')
FROM DUAL
. Las vistas de administración de la base de datos como
V$SESSION
también contendrán el valor. Se
puede usar con DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE
para rastreo y también para auditoría.
El valor podría mantenerse entre peticiones de páginas que usen la misma conexión persistente.
connection
Un identificador de conexión de Oracle, devuelto por oci_connect(), oci_pconnect(), o oci_new_connect().
client_identifier
La cadena elegida por el usuario, hasta 64 bytes de longitud.
Devuelve true
en caso de éxito o false
en caso de error.
Ejemplo #1 Establecer el identificador del cliente para el usuario de la aplicación
<?php
// Buscar el nombre de identificación de usuario de la aplicación
session_start();
$un = my_validate_session($_SESSION['username']);
$c = oci_connect('myschema', 'welcome', 'localhost/XE');
// Indicar a Oracle qué usuario es
oci_set_client_identifier($c, $un);
// El siguiente viaje de ida y vuelta a la base de datos adjuntará el identificador
$s = oci_parse($c, 'select mydata from mytable');
oci_execute($s);
// ...
?>
Algunas, pero no todas, las funciones de OCI8 causan viajes de ida y vuelta. Estos podrían no ocurrir con las consultas cuando está habilitado el almacenamiento en caché de resultados.
There's an article "PHP Web Auditing, Authorization and Monitoring with Oracle Database" at www.oracle.com/technetwork/articles/dsl/php-web-auditing-171451.html which is all about using oci_set_client_identifier()