Lorsque mon application se connecte à une base de données Oracle, je souhaite pouvoir voir en examinant les sessions actives de la base de données connectée. Actuellement, il s'identifie comme "client mince JDBC" car c'est le pilote que j'utilise, mais d'autres applications basées sur Java que j'ai sont en quelque sorte capables de définir cette valeur à quelque chose de plus significatif, comme "développeur SQL". Je pensais que c'était une propriété de la connexion code> code> ou du oracledatasource code>, mais je n'ai pas réussi à en trouver un qui fait l'affaire. Est-ce possible? Au cas où il importe, j'utilise Java 1.5, avec Oracle 10G et le conducteur mince 10G. P>
5 Réponses :
Vous devez définir la propriété de connexion v $ session.program code> dans votre source de données, de telle manière que cette propriété sera ajoutée à chaque connexion. Comment vous faites cela dépend de votre mise en œuvre de la source de données. La valeur que vous définissez La propriété apparaîtra dans la table de session active de Oracle. P>
dbms_application_info.set_client_info dbms_application_info.set_module dbms_application_info.set_action
Méfiez-vous de Limites de longueur arbitraire pour ces V $ Session. * Code> Propriétés
Il y a aussi une fonction Oracle: qui définit la colonne clientInfo en V $ Session. p> Ceci pourrait être utile si vous n'avez que l'accès à la connexion plutôt que la source de données ou le drivermanager sous-jacent. p> p>
Depuis Oracle JDBC 12.1, vous pouvez définir des valeurs de client-info via JDBC API, c'est-à-dire que vous pouvez faire
connection.setClientInfo("OCSID.CLIENTID", "MyClientId");
commençant par 12.1 Le Voici un extrait de l'utilisation p> Vous pouvez voir le réglage dans mais seulement après une instruction suivante est exécutée avec cette connexion forte>. L'appel de Notez également que vous devez utiliser la conengence Oracle (non emballée) - Vérifier Ce pour référence. p> p> setendtoendMetrics code> est obsolète, vous pouvez utiliser
setClientInfo code>
Voir la documentation pour 12.2 ici
v $ SESSION CODE> avec cette requête de la session correspondante P>
setClientInfo code> déclenche sans tension supplémentaire Cette information est passée avec l'appel suivant. P>
Merci! Je n'ai pas réalisé que le changement est effectué après le traitement de la déclaration. Je ne comprends pas pourquoi la connexion doit être non emballée si la méthode fait partie de l'API JDBC, et non la connexion interne Oracle uniquement (même le wrapper de la connexion au pool de serveurs d'applications porte l'interface de connexion)?
Vous espérez distinguer les applications lors de la visualisation de sessions actives?