2009-10-10 16 views
7

私のアプリケーションがOracleデータベースに接続すると、接続されているデータベース内のアクティブなセッションを調べることで、そのアプリケーションを見ることができます。現在、それは私が使用しているドライバだから "JDBC Thin Client"と自分自身を識別しますが、私が持っている他のJavaベースのアプリケーションは、この値を何らかの意味で "SQL Developer"のような意味に設定できます。私はそれがConnectionまたはOracleDataSourceの財産だと思っていましたが、私はそのトリックをするものを見つけることはできませんでした。これは可能ですか?場合は、Oracle 10gと10gの薄いドライバでJava 1.5を使用しています。接続時にJavaアプリケーションをOracleに識別させるにはどうすればよいですか?

+0

アクティブなセッションを表示するときにアプリケーションを区別したいと思っていますか? –

答えて

13
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:

dbms_application_info.set_client_info 
dbms_application_info.set_module 
dbms_application_info.set_action 
2

データソースに接続プロパティーv$session.programを定義して、そのプロパティーを各接続に追加する必要があります。どのように行うかは、データソースの実装に依存します。プロパティを設定する値は、Oracleのアクティブ・セッション表に表示されます。あなたが設定するには、以下の方法を使用することができ、アプリケーションレベルで

2

あるlso Oracle関数:

dbms_application_info.set_client_info('Client Info'); 

これは、ClientInfo列をv $ sessionに設定します。

これは、基になるDataSourceまたはDriverManagerではなくConnectionにのみアクセスできる場合に便利です。

0

のOracle JDBC 12.1以来あなたは...あなたはプロパティOCSIDため

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

を行うことができますつまり、JDBC APIを介して

ACTION、CLIENTID、ECID、MODULE、SEQUENCE_NUMBERをいくつかのクライアント情報の値を設定することができますそしてDBOP

https://docs.oracle.com/database/121/JJDBC/jdbcvers.htm#JJDBC29006

設定プログラムは、このように動作しません、あなたは受け入れ答えで説明したりなどすることを行うことができます参照してください。システム・プロパティー "oracle.jdbc.v $ session.program"を設定することでやや簡単です。

関連する問題