㈠ c3p0連接池怎麼連接oracle
使用c3p0+spring連接oracle資料庫的方法及配置:
1、C3P0數據源與Hibernate一同發布,需要包c3p0-0.9.0.4.jar。
C3P0的配置,xml文件片段如下:
<bean
id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value=" ${driver}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
bean>
2、C3P0有以下配置屬性,通過這些屬性,可以對數據源進行各種有效的控制:
acquireIncrement:當連接池中的連接用完時,C3P0一次性創建新連接的數目;
acquireRetryAttempts:定義在從資料庫獲取新連接失敗後重復嘗試獲取的次數,默認為30;
acquireRetryDelay:兩次連接中間隔時間,單位毫秒,默認為1000;
autoCommitOnClose:連接關閉時默認將所有未提交的操作回滾。默認為false;
automaticTestTable: C3P0將建一張名為Test的空表,並使用其自帶的查詢語句進行測試。如果定義了這個參數,那麼屬性preferredTestQuery將被忽略。 你 不能在這張Test表上進行任何操作,它將中為C3P0測試所用,默認為null;
breakAfterAcquireFailure: 獲取山埋連接失散唯跡敗將會引起所有等待獲取連接的線程拋出異常。但是數據源仍有效保留,並在下次調 用getConnection()的時候繼沖並續嘗試獲取連 接。如果設為true,那麼在嘗試獲取連接失敗後該數據源將申明已斷開並永久關閉。默認為 false;
checkoutTimeout:當連接池用完時客戶端調用getConnection()後等待獲取新連接的時間,超時後將拋出sqlException,如設為0則無限期等待。單位毫秒,默認為0;
connectionTesterClassName: 通過實現ConnectionTester或QueryConnectionTester的類來測試連接,類名需設置為全限定名。默認為 com.mchange.v2.C3P0.impl.DefaultConnectionTester;
idleConnectionTestPeriod:隔多少秒檢查所有連接池中的空閑連接,默認為0表示不檢查;
initialPoolSize:初始化時創建的連接數,應在minPoolSize與maxPoolSize之間取值。默認為3;
maxIdleTime:最大空閑時間,超過空閑時間的連接將被丟棄。為0或負數則永不丟棄。默認為0;
maxPoolSize:連接池中保留的最大連接數。默認為15;
maxStatements: JDBC的標准參數,用以控制數據源內載入的PreparedStatement數量。但由於預緩存的Statement屬 於單個Connection 而不是整個連接池。所以設置這個參數需要考慮到多方面的因素,如果maxStatements與 maxStatementsPerConnection
均為0,則緩存被關閉。默認為0;
maxStatementsPerConnection:連接池內單個連接所擁有的最大緩存Statement數。默認為0;
numHelperThreads:C3P0是非同步操作的,緩慢的JDBC操作通過幫助進程完成。擴展這些操作可以有效的提升性能,通過多線程實現多個操作同時被執行。默認為3;
preferredTestQuery:定義所有連接測試都執行的測試語句。在使用連接測試的情況下這個參數能顯著提高測試速度。測試的表必須在初始數據源的時候就存在。默認為null;
propertyCycle: 用戶修改系統配置參數執行前最多等待的秒數。默認為300;
testConnectionOnCheckout: 因性能消耗大請只在需要的時候使用它。如果設為true那麼在每個connection提交的時候都 將校驗其有效性。建議使用 idleConnectionTestPeriod或automaticTestTable
等方法來提升連接測試的性能。默認為false;
testConnectionOnCheckin:如果設為true那麼在取得連接的同時將校驗連接的有效性。默認為false。
㈡ Oracle資料庫 關於連接池一
到目前為目 JDBC 的連結池只是一個介面 沒有真正的實現 JDBC 正在開發中 據報已經支持連結池配譽亂 但JDBC 用了JNDI技術 連結池的配置可以讓一個高手都煩死 目前第三方已經實現的連結池當然是poolman 版對一般用戶來說已經足夠用了 配置也簡單虛瞎 版雖然增加了一些功能 但配置也是採用JNDI 對RMI和EJB不懂的朋友可能很煩 建議用 的了 如果有興趣 自己也可以實現連結池 最關鍵的技術也就是把連結作為參數傳給一個BEAN 用完後返回這個參數連結而不是關閉 下面是一個簡單的實現:DBConnectionManager java程序清單如下 import java io *; import java sql *; import java util *; import java util Date; /** * 管理類DBConnectionManager支持對一個或多個由屬性文件定義的資料庫連接 * 池的訪問 客戶程序可以調用getInstance()方法訪問本類的唯一實例 */ public class DBConnectionManager { static private DBConnectionManager instance; // 唯一實例 static private int clients; private Vector drivers = new Vector(); private PrintWriter log; private Hashtable pools = new Hashtable(); /** * 返回唯一實例 如果是第一次調用此方法 則創建實例 * * @return DBConnectionManager 唯一實例 */ static synchronized public DBConnectionManager getInstance() { if (instance == null) { instance = new DBConnectionManager(); } clients++; return instance; } /** * 建構函數私有以防止其它對象創建本類實例 */ private DBConnectionManager() { init(); } /** * 將連接對象返回給由名字指定的連接池 * * @param name 在屬性文件中定義的連接池名字 * @param con 連接對象\r */ public void freeConnection(String name Connection con) { DBConnectionPool pool = (DBConnectionPool) pools get(name); if (pool != null) { pool freeConnection(con); } } /** * 獲得一個可用的(空閑的)連接 如果沒有可用連接 且已有連接數小於最大連接數 * 限制 則創建並返回新連接 * * @param name 在屬性文件中定義的連接池名字 * @return Connection 可用連接或null */ public Connection getConnection(String name) { DBConnectionPool pool = (DBConnectionPool) pools get(name); if (pool != null) { return pool getConnection(); } return null; } /** * 獲得一個可用連接 若沒有可用連接 且已培檔有連接數小於最大連接數限制 * 則創建並返回新連接 否則 在指定的時間內等待其它線程釋放連接 * * @param name 連接池名字 * @param time 以毫秒計的等待時間\r * @return Connection 可用連接或null */ public Connection getConnection(String name long time) { DBConnectionPool pool = (DBConnectionPool) pools get(name); if (pool != null) { return pool getConnection(time); } return null; } /** * 關閉所有連接 撤銷驅動程序的注冊\r */ public synchronized void release() { // 等待直到最後一個客戶程序調用 if ( clients != ) { return; } Enumeration allPools = pools elements(); while (allPools hasMoreElements()) { DBConnectionPool pool = (DBConnectionPool) allPools nextElement(); pool release(); } Enumeration allDrivers = drivers elements(); while (allDrivers hasMoreElements()) { Driver driver = (Driver) allDrivers nextElement(); try { DriverManager deregisterDriver(driver); log( 撤銷JDBC驅動程序 + driver getClass() getName()+ 的注冊\ ); } catch (SQLException e) { log(e 無法撤銷下列JDBC驅動程序的注冊: + driver getClass() getName()); } } } /** * 根據指定屬性創建連接池實例 * * @param props 連接池屬性 */ private void createPools(Properties props) { Enumeration propNames = props propertyNames(); while (propNames hasMoreElements()) { String name = (String) propNames nextElement(); if (name endsWith( url )) { String poolName = name substring( name lastIndexOf( )); String url = props getProperty(poolName + url ); if (url == null) { log( 沒有為連接池 + poolName + 指定URL ); continue; } String user = props getProperty(poolName + user ); String password = props getProperty(poolName + password ); String maxconn = props getProperty(poolName + maxconn ); int max; try { max = Integer valueOf(maxconn) intValue(); } catch (NumberFormatException e) { log( 錯誤的最大連接數限制: + maxconn + 連接池: + poolName); max = ; } DBConnectionPool pool = new DBConnectionPool(poolName url user password max); pools put(poolName pool); log( 成功創建連接池 + poolName); } } } /** * 讀取屬性完成初始化 */ private void init() { InputStream is = getClass() getResourceAsStream( /db properties ); Properties dbProps = new Properties(); try { dbProps load(is); } catch (Exception e) { System err println( 不能讀取屬性文件 + 請確保db properties在CLASSPATH指定的路徑中 ); return; } String logFile = dbProps getProperty( logfile DBConnectionManager log ); try { log = new PrintWriter(new FileWriter(logFile true) true); } catch (IOException e) { System err println( 無法打開日誌文件: + logFile); log = new PrintWriter(System err); } loadDrivers(dbProps); createPools(dbProps); } /** * 裝載和注冊所有JDBC驅動程序\r * * @param props 屬性 */ private void loadDrivers(Properties props) { String driverClasses = props getProperty( drivers ); StringTokenizer st = new StringTokenizer(driverClasses); while (st hasMoreElements()) { String driverClassName = st nextToken() trim(); try { Driver driver = (Driver) Class forName(driverClassName) newInstance(); DriverManager registerDriver(driver); drivers addElement(driver); log( 成功注冊JDBC驅動程序\ + driverClassName); } catch (Exception e) { log( 無法注冊JDBC驅動程序: + driverClassName + 錯誤: + e); } } } /** * 將文本信息寫入日誌文件 */ private void log(String msg) { log println(new Date() + : + msg); } /** * 將文本信息與異常寫入日誌文件 */ private void log(Throwable e String msg) { log println(new Date() + : + msg); e printStackTrace(log); } /** * 此內部類定義了一個連接池 它能夠根據要求創建新連接 直到預定的最\r lishixin/Article/program/Oracle/201311/17331
㈢ 如何檢查oracle資料庫連接池配置
開始菜簡談單里找攔宏碰如上圖,自己配絕返置不同的資料庫連接
㈣ 使用C#訪問Oracle,使用連接池,代碼如何寫,資料庫端要不要做配置
string my="data source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=cjsorcl)));User ID=cjsdog;Password=cjsmap;Pooling = True;Max Pool Size = 10;Min Pool Size = 1;"
OracleConnection conn = new OracleConnection(my);
conn.Open();
... ...
... ...
conn.Close();
連接字元串後加「Pooling = True;Max Pool Size = 10;Min Pool Size = 1;」這三個參數即可實現應用連接中銀池。
Pooling:是否啟用連接池,True為高培雀啟用
Max Pool Size:連接池戚早最大連接數
Min Pool Size:連接池最小連接數
㈤ oracle資料庫連接池怎麼配置
連接池是創建和管理多個連接的一種技術,這些連接可被需要使用它們的任何線程使用。連接池技術基於下述事實:對於大多數應用程序,當它們正在處理通常需要數毫秒完成的事務時,僅需要能夠訪問JDBC連接的1個線程。未處理事務時,連接處於閑置狀態。使用連接池,允許其他線程使用閑置連接來執行有用的任務。事實上,當某一線程需要用JDBC在MySQL或其他資料庫上執行操作時,需要用到由連接池提供的連接。使用連接完成線程後,線程會將連接返回給連接池,以便該連接能夠被其他需要使用連接的線程使用。從連接池「借出」連接時,該連接僅供請求它的線程使用。從編程觀點看,其效果等同於每次需要JDBC連接時調用DriverManager.getConnection(),但是,採用連接池技術,可通過使用新的或已有的連接結束線程。連接池技術能顯著增加Java應用程序的性能,同時還能降低資源使用率。
http://blog.csdn.net/xilangyuyun/article/details/52800380
㈥ 求助:TomCat6.0資料庫連接池配置問題(Oracle 10g資料庫)
路過。。。。
㈦ 如何檢查oracle資料庫連接池配置
1. 有一個簡單的函數從連接池中得到一個 Connection。
2. close 函數必須將connection 放回 資料庫連接池。
3. 當資料庫連接池中沒有空閑的connection,資料庫連接池必須能夠自動增加connection 個數。
4. 當資料庫連接池中的connection 個數在某一個特別的時間變得很大,但是以後很長時間只用其中一小部分,應該可以自動將多餘的connection 關閉掉。
㈧ resin怎樣配置oracle的數據源和連接池
動態web站點設計中,資料庫已成為必不可少的一部分,但資料庫連接和釋放開銷很大,對於一個訪問量少的網站可能沒有什麼影響,但同時有很多用戶來網站查詢資料時,就會導致伺服器響應慢甚至死機。連接池就是針對這個問題提出的。
資料庫連接池負責分配、管理和釋放資料庫連接,它允許應用程序重枯純襲復使用一個現有的資料庫連接,而再不是重新建立一個;釋放空閑時間超過最大空閑時間的資料庫連接來避免因為沒有釋放資料庫連接而引起沒兄的資料庫連接遺漏。這項技術能明顯提高對資料庫操作的性能。
數 據庫連接池在初始化時將創建一定數量的資料庫連接放到連接池中,這些資料庫連接的數量是由最小資料庫連接數來設定的。無論這些資料庫連接是否被使用,連接 池都將一直保證至少擁有這么多的連接數量。連接池的最大資料庫連接數量限定了這個連接池能佔有的最大連接數,當應用程序向連接池請褲散求的連接數超過最大連接 數量時,這些請求將被加入到等待隊列中。