Cuando mi aplicación se conecta a una base de datos Oracle, quiero poder ver las sesiones activas en la base de datos a la que está conectada. Actualmente se identifica como "Thin Client JDBC" porque ese es el controlador que estoy usando, pero otras aplicaciones basadas en Java que tengo de alguna manera pueden establecer este valor en algo más significativo, como "SQL Developer". Pensé que era una propiedad de Connection
o OracleDataSource
, pero no he logrado encontrar una que funcione. es posible? En caso de que importe, estoy usando Java 1.5, con Oracle 10g y el controlador delgado de 10g.¿Cómo hago para que mi aplicación Java se identifique a Oracle en la conexión?
Respuesta
java.util.Properties props = new java.util.Properties();
props.setProperty("password","mypassword");
props.setProperty("user","myusername");
props.put("v$session.osuser", System.getProperty("user.name").toString());
props.put("v$session.machine", InetAddress.getLocalHost().getCanonicalHostName());
props.put("v$session.program", "My Program Name");
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
Connection conn=
DriverManager.getConnection("jdbc:oracle:thin:@myhostname:1521:mysid", props);
SQL>select username,osuser,program,machine
from v$session
where username = 'ROB';
USERNAME OSUSER PROGRAM MACHINE
--------- ----------- ------------------ -----------
ROB rmerkw My Program Name machine
a nivel de aplicación puede utilizar los siguientes métodos para establecer client_info, módulo y acción en v $ session:
dbms_application_info.set_client_info
dbms_application_info.set_module
dbms_application_info.set_action
Debe definir la propiedad de conexión v$session.program
en su fuente de datos, de tal forma que esa propiedad se agregará a cada conexión. Cómo lo hace depende de la implementación de su fuente de datos. El valor que establezca la propiedad aparecerá en la tabla de sesión activa de Oracle.
Hay un También es una función de Oracle:
dbms_application_info.set_client_info('Client Info');
que establece la columna ClientInfo en v $ session.
Esto podría ser útil si solo tiene acceso a Connection en lugar de DataSource o DriverManager.
Desde JDBC de Oracle 12.1 se puede establecer algunos valores del cliente-info a través de API JDBC, es decir, puede hacer
connection.setClientInfo("OCSID.CLIENTID", "MyClientId");
de propiedades OCSID ...
ACCIÓN, ClientId, ECID, MÓDULO, sequence_number y DBOP
Ver https://docs.oracle.com/database/121/JJDBC/jdbcvers.htm#JJDBC29006
programa de establecimiento no funciona de esta manera, se puede hacer eso como se describe en la respuesta aceptada o algo más fácil configurando la propiedad del sistema "oracle.jdbc.v $ session.program".
- 1. ¿Cómo hago para que mi aplicación Java se cierre correctamente en Windows?
- 2. ¿Cómo hago para que mi ID de aplicación
- 3. ¿Cómo hago para que Java use mi proveedor de seguridad?
- 4. ¿Cómo se usa telnet para verificar una conexión a Oracle?
- 5. ¿cómo hago que mi aplicación lea la configuración de la aplicación en lugar de machine.config?
- 6. No se puede conectar mi aplicación de rieles a Oracle
- 7. ¿Cómo hago para que mi aplicación se desplace más allá de algo cubierto por el teclado?
- 8. ¿Cómo hago para que un subproceso espere a que JFrame se cierre en Java?
- 9. ¿Cómo hago que mi aplicación para Android genere un número aleatorio?
- 10. ¿Cómo hago que las tareas de Rake se ejecuten en mi aplicación/entorno Sinantra?
- 11. ¿Cómo hago que NUnit respete mi bindingRedirect en mi testassembly.dll.config?
- 12. ¿Cómo hago para que mi objeto flash se enfoque en la carga?
- 13. ¿Cómo hago que mi icono de wamp se vuelva verde?
- 14. ¿Cómo hago que mi aplicación iPhone muestre una alerta de banner superior, como la aplicación Correo?
- 15. ¿Cómo hago para que mi chat Node/Socket.io se comunique cuando está en un dominio?
- 16. compresión de conexión Oracle?
- 17. ¿Cómo hago para que mi diálogo de progreso se cierre después de cargar la vista web?
- 18. ¿Cómo puedo proteger mi aplicación web java?
- 19. ¿Cómo hago referencia al archivo db Sqlite en la carpeta App_Data para mi aplicación web ASP.NET?
- 20. ¿Cómo hago que mi comparación de cadenas sea insensible?
- 21. ¿Cómo hago para ir a buscar mi paquete?
- 22. Conexión a Oracle DB usando Ruby
- 23. ¿Cómo hago que mi JSON sea menos detallado?
- 24. ¿Cómo hago referencia a un recurso en Java?
- 25. ¿Cómo hago la parte superior 1 en Oracle?
- 26. ¿Cómo hago para que mis colegas no desprecien a SVN?
- 27. ¿Cómo puedo asegurar mi conexión a la base de datos?
- 28. ¿Cómo hago que wget se silencie correctamente?
- 29. La aplicación solicita conexión a Internet
- 30. ¿Cómo hacer que iAd se vea globalmente en mi aplicación?
¿Espera distinguir entre aplicaciones cuando se ven sesiones activas? –