JDBC接続Oracleデータベースの位置決めプロセスの概要


この間、会社の製品は総一日でOracleが最大接続数に達するという問題が発生しました.会社の製品は3~4個の独立したアプリケーションで構成されているので、どのアプリケーションが引き起こした問題が診断に時間がかかりましたか.具体的には以下の通りです.
 
一、まず運行環境を紹介する
  •  HP-NuIXオペレーティングシステム
  • のいくつかのアプリケーションはそれぞれ独立して実行され、java.exeの名前を変更して異なるプロセスを区別します.
  • いくつかのアプリケーションは、接続プールを使用してOracleデータベースに接続する場合があります.1つはApache-BCPを使用しています.1つはHibernateを使用してC 3 P 0接続プール(私が担当しているアプリケーション)を使用しているため、1~2つのアプリケーションは、どのように接続されているOracleデータベースかを特定できません.

  • 環境は概ね上記の通りである.
     
    二、診断位置決め過程
     
    最初はnetstatコマンドを使用してポート接続を表示し、どのプロセスの接続数が大きすぎて制御されていないかを確認したいのですが、表示結果はPIDにナビゲートできません.そこでGoogle HP-UNIXがPIDを位置決めするコマンド、Googleの最終結果は私がまとめたHP-UNIXポート番号とプロセスの対応関係を確認する文を参照してください.しかしLSOFコマンドが見つかると接続数は正常になります~~~.
     
    その後、Oracleから履歴反位置決めプロセスを調べることができるかどうか考え、v$session、v$processビューなど、v$processビューにPIDフィールドがあることを前後して調べましたが、私が望んでいないようです.ただし、「plsqldev.exe」などの値を持つプログラムフィールドがv$sessionビューにあることが判明し、JDBCで接続されているプログラムの値がすべて「JDBC Thin Client」であることが判明し、JDBC接続時に私のJDBCのOracleでのv$sessionビューでの値を指定できるかどうか考えています.
     
    Googleで「Oracle JDBC v$session program」の最初の項目を入力すると、次のように構成された文書(参照)にナビゲートします.
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  
         <property name="jdbcUrl" value="${jdbcUrl}"/>
         <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
         <property name="properties">
         	<map>
         		<entry key="user" value="${user}"/>
         		<entry key="password" value="${password}"/>
         		<entry key="v$session.program" value="${program}"/>
         	</map>
         </property> 
    </bean>

     
    これまで2つのルートで接続数の問題を特定することができてきましたが、以上の内容で最終的に会社の問題を特定しました~.
     
     
     
    記事のリファレンスリンクは次のとおりです.
  • http://www.magpiebrain.com/blog/2006/05/09/specifying-a-program-name-in-oracle-jdbc-connections/
  • http://bbs.chinaunix.net/viewthread.php?tid=1299023
  • http://bbs.chinaunix.net/viewthread.php?tid=7362