Identifikace uživatele v connection poolu JDBC

2014-02-17 Tema obsahu Petr Šrajer
Pěkný den.

V serverové aplikaci používáme connection pool . Uživatelé tedy 
přistupují k databázi přes JDBC pod jediným DB uživatelem. Náš zákazník nyní 
požaduje, abychom byli schopni identifikovat dlouhoběžící SQL dotazy na úrovni 
aplikačního uživatele.
Jako ORM vrstvu používáme Eclipselink, DB servery používáme Oracle a 
IBM Informix. Napadají mě 2 možné varianty - nějakým způsobem přeposílat 
opravdového operátora jako součást dotazu a nějak operátora zobrazit přímo na 
DB serveru. Nebo použít nějaký proxy JDBC driver, který by uměl uživatele 
evidovat a vypsat. 
Pokud máte zkušenosti s tímto problémem prosím dejte vědět jak jste 
problém řešili u Vás.

  Díky
Petr Šrajer

Re: Identifikace uživatele v connection poolu JDBC

2014-02-17 Tema obsahu Ondra Medek
Ahoj,

viz java.sql.Connection.setClientInfo(String, String). používal jsem kdysi
přesně na stejnou věc pro Oracle. Akorát už se nepamatuji přesně jaký
parametr name jsem tenkrát používal, asi ClientUser, jak je nápověda v
javadoc.

Ondra Medek


2014-02-17 14:14 GMT+01:00 Petr Šrajer petr.sra...@ais.cz:

 Pěkný den.

 V serverové aplikaci používáme connection pool . Uživatelé tedy
 přistupují k databázi přes JDBC pod jediným DB uživatelem. Náš zákazník
 nyní požaduje, abychom byli schopni identifikovat dlouhoběžící SQL dotazy
 na úrovni aplikačního uživatele.
 Jako ORM vrstvu používáme Eclipselink, DB servery používáme Oracle
 a IBM Informix. Napadají mě 2 možné varianty - nějakým způsobem přeposílat
 opravdového operátora jako součást dotazu a nějak operátora zobrazit přímo
 na DB serveru. Nebo použít nějaký proxy JDBC driver, který by uměl
 uživatele evidovat a vypsat.
 Pokud máte zkušenosti s tímto problémem prosím dejte vědět jak
 jste problém řešili u Vás.

   Díky
 Petr Šrajer


Re: Identifikace uživatele v connection poolu JDBC

2014-02-17 Tema obsahu Martin Peterka
Pro plnění auditačních položek přes triggery používáme
vlastní implementaci org.springframework.jdbc.datasource.DelegatingDataSource,
která přidává (plsql procedura) informace o uživateli do session přes
Oracle DBMS_APPLICATION_INFO.
Nevím, jestli to bude použitelné i pro výpis dlouhoběžících sql dotazů -
neznám...
Martin Peterka

2014-02-17 14:14 GMT+01:00 Petr Šrajer petr.sra...@ais.cz:

 Pěkný den.

 V serverové aplikaci používáme connection pool . Uživatelé tedy
 přistupují k databázi přes JDBC pod jediným DB uživatelem. Náš zákazník
 nyní požaduje, abychom byli schopni identifikovat dlouhoběžící SQL dotazy
 na úrovni aplikačního uživatele.
 Jako ORM vrstvu používáme Eclipselink, DB servery používáme Oracle
 a IBM Informix. Napadají mě 2 možné varianty - nějakým způsobem přeposílat
 opravdového operátora jako součást dotazu a nějak operátora zobrazit přímo
 na DB serveru. Nebo použít nějaký proxy JDBC driver, který by uměl
 uživatele evidovat a vypsat.
 Pokud máte zkušenosti s tímto problémem prosím dejte vědět jak
 jste problém řešili u Vás.

   Díky
 Petr Šrajer