Я пытаюсь, да. Они действительно помогают пригодности для обслуживания и удобочитаемости Вашего кода. Однако существуют люди, которые действительно оскорбляют их, обычно (от того, что я видел) путем принуждения системы в шаблон, который не существует.
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
На уровне приложения вы можете использовать следующие методы, чтобы установить client_info , модуль ] и действие в v $ session :
dbms_application_info.set_client_info
dbms_application_info.set_module
dbms_application_info.set_action
Вам необходимо определить свойство соединения v $ session.program
в вашем источнике данных таким образом, чтобы это свойство добавлялось к каждому соединению. Как вы это сделаете, зависит от реализации вашего источника данных. Значение, которое вы задали для свойства, появится в активной таблице сеанса Oracle.
Также существует функция Oracle:
dbms_application_info.set_client_info('Client Info');
, которая устанавливает столбец ClientInfo в v $ session.
Это может быть полезно, если у вас есть доступ только к соединению, а не к базовому источнику данных или DriverManager.