私のアプリケーションがOracleデータベースに接続すると、接続されているデータベース内のアクティブなセッションを調べることで、そのアプリケーションを見ることができます。現在、それは私が使用しているドライバだから "JDBC Thin Client"と自分自身を識別しますが、私が持っている他のJavaベースのアプリケーションは、この値を何らかの意味で "SQL Developer"のような意味に設定できます。私はそれがConnection
またはOracleDataSource
の財産だと思っていましたが、私はそのトリックをするものを見つけることはできませんでした。これは可能ですか?場合は、Oracle 10gと10gの薄いドライバでJava 1.5を使用しています。接続時にJavaアプリケーションをOracleに識別させるにはどうすればよいですか?
7
A
答えて
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"を設定することでやや簡単です。
関連する問題
- 1. 私のアプリケーションを別の.Netアプリケーションに接続するにはどうすればいいですか?
- 2. udp接続でプレーヤーを識別するにはどうすればいいですか
- 3. LANに接続され、ルータ経由でインターネットに接続されているコンピュータに接続するにはどうすればよいですか?
- 4. Javaでデータベース接続が重複しないようにするにはどうすればよいですか?
- 5. TCP接続時にJavamail POP3をタイムアウトさせるにはどうすればいいですか?
- 6. Oracleデータベースに接続するAndroidログインページを作成するにはどうすればよいですか?
- 7. JavaアプリケーションをElasticsearchに接続するにはどうすればいいですか?
- 8. 接続されたクライアントのホスト名をjavaで取得するにはどうすればよいですか?
- 9. SpringブートJARをリモートOracleデータベースに接続するにはどうすればよいですか?
- 10. Javaアプリケーションからoracleリモート・データベースに接続する方法は?
- 11. PHPをOracleにどのように接続できますか?
- 12. defaultSharedPreferencesをaddPreferencesFromResourceに接続するにはどうすればよいですか?
- 13. プロデューサをアクタに接続するにはどうすればよいですか?
- 14. データベースをAPI.AIに接続するにはどうすればよいですか?
- 15. サーバーをAtlasに接続するにはどうすればよいですか?
- 16. MvxCommandをBottomBarに接続するにはどうすればよいですか?
- 17. サイドバーをフッタに接続するにはどうすればよいですか?
- 18. アプリケーションにスクリプトをフォーカスさせるにはどうすればよいですか?
- 19. C#でOAuthに接続するにはどうすればよいですか?
- 20. Java ClassLoaderに使用可能なクラスを認識させるにはどうすればよいですか?
- 21. Magentoのタブを識別するにはどうすればよいですか?
- 22. Oracleの接続文字列で初期カタログを設定するにはどうすればよいですか?
- 23. pythonスクリプトでoracle DBを接続するにはどうすればよいですか?
- 24. Campaign Monitor APIに接続するにはどうすればよいですか?
- 25. iOSアプリケーションからOracleに接続する
- 26. gdbserverを起動時にプロセスに接続するにはどうすればよいですか?
- 27. Visual Studio 2017でAzure Webアプリケーションにデバッガを接続するにはどうすればよいですか?
- 28. HTML5 for Mobileアプリケーションでデータベース接続をWebサーバーに保存するにはどうすればよいですか?
- 29. Javaアプリケーションを強制的にネットワークプロキシにログオンさせるにはどうすればよいですか?
アクティブなセッションを表示するときにアプリケーションを区別したいと思っていますか? –