bestsource

연결 시 Java 애플리케이션이 Oracle에 대해 식별되도록 하려면 어떻게 해야 합니까?

bestsource 2023. 7. 23. 14:32
반응형

연결 시 Java 애플리케이션이 Oracle에 대해 식별되도록 하려면 어떻게 해야 합니까?

응용프로그램이 Oracle 데이터베이스에 연결될 때 연결된 데이터베이스의 활성 세션을 확인할 수 있습니다.현재는 "JDBC Thin Client"로 인식하고 있습니다. 왜냐하면 그것이 제가 사용하는 드라이버이기 때문입니다. 하지만 제가 가지고 있는 다른 Java 기반 애플리케이션들은 어떻게든 이 값을 "SQL Developer"와 같은 더 의미 있는 값으로 설정할 수 있습니다.나는 그것이 그것의 재산이라고 생각했습니다.Connection또는OracleDataSource하지만 저는 그 묘기를 부릴 수 있는 사람을 찾지 못했습니다.이것이 가능합니까?만약을 위해, 저는 Oracle 10g과 10g thin 드라이버가 있는 Java 1.5를 사용하고 있습니다.

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

애플리케이션 수준에서 다음 방법을 사용하여 v$session에서 client_info, 모듈 작업을 설정할 수 있습니다.

dbms_application_info.set_client_info
dbms_application_info.set_module
dbms_application_info.set_action

오라클 기능도 있습니다.

dbms_application_info.set_client_info('Client Info');

v$session에서 ClientInfo 열을 설정합니다.

이 기능은 기본 데이터 원본 또는 드라이버 관리자가 아닌 연결에만 액세스할 수 있는 경우에 유용할 수 있습니다.

Oracle jdbc 12.1 이후로 jdbc api를 통해 일부 client-info 값을 설정할 수 있습니다. 즉,

connection.setClientInfo("OCSID.CLIENTID", "MyClientId");

속성 OCSID...

작업, 클라이언트 ID, ECID, 모듈, 시퀀스_번호 및 DBOP

https://docs.oracle.com/database/121/JJDBC/jdbcvers.htm#JJDBC29006 을 참조하십시오.

PROGRAM을 설정하는 것은 이러한 방식으로 작동하지 않습니다. 승인된 답변에 설명된 대로 또는 시스템 속성 "oracle.jdbc.v$session.program"을 설정하여 이 작업을 다소 쉽게 수행할 수 있습니다.

연결 속성을 정의해야 합니다.v$session.program해당 속성이 각 연결에 추가되는 방식으로 데이터 원본에서.데이터 소스 구현 방식에 따라 다릅니다.속성을 설정한 값이 오라클의 활성 세션 테이블에 나타납니다.

12.1부터 시작setEndToEndMetrics더 이상 사용하지 않습니다. 사용할 수 있습니다.setClientInfo여기에서 12.2에 대한 설명서

다음은 사용법에 대한 토막글입니다.

// "conn" is an instance of java.sql.Connection:
conn.setClientInfo("OCSID.CLIENTID", "clientID");
conn.setClientInfo("OCSID.MODULE", "myModule");
conn.setClientInfo("OCSID.ACTION", "myAction");

에서 설정을 확인할 수 있습니다.V$SESSION관련 세션의 이 질문과 함께.

 select MODULE, ACTION, CLIENT_IDENTIFIER from v$session where ...

이 연결을 사용하여 다음 문을 실행한 후에만 가능합니다.의 부름setClientInfo이 정보는 다음 통화 시 전달됩니다.

또한 Oracle(랩되지 않은) 연결을 사용해야 합니다. 참조하려면 이 항목을 선택하십시오.

언급URL : https://stackoverflow.com/questions/1548400/how-do-i-make-my-java-application-identify-itself-to-oracle-on-connection

반응형