Identifikace uživatele v connection poolu JDBC
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
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
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