Archive for the ‘DbVisualizer’ Category

用JDBC连接Oracle 10g RAC遇到的问题

星期二, 11月 20th, 2007

数据库升级为Oracle 10g RAC,原有的连接方式下,出现如下错误:

出错信息:
- Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: “o
rg.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFacto
ry (Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)(
ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))))”
at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnect
ion(QueryTagSupport.java:276)
at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag
(QueryTagSupport.java:159)

于是根据网上的资料修改了JDBC的URL,正确jdbc的url为:

jdbc:oracle:thin:@(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.40.103)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.40.104)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = mydb.618119.com) ) )

或者:

jdbc:oracle:thin:@(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)
(HOST = db01.618119.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)
(HOST = db02.618119.com)(PORT = 1521))
(LOAD_BALANCE = yes)
(failover = yes)
(CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = mydb.618119.com) ) )

结果过依然存在问题:

偶尔会出现错误:

An error occurred while establishing the connection:
Type: java.sql.SQLException Error Code: 17002
Message:
Io 异常: Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=169869568)(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS=’(ADDRESS=(PROTOCOL=TCP)(HOST=RAC02)(PORT=1521))’))(ERROR=(CODE=305)(EMFI=1))))

试了将驱动替换为10g的ojdbc14.jar.

然后再在DbVisualizer中试了很多次断开连接和重新链接,都还没出错.
但是在web页面中测试,还是经常出现获取不到数据库连接的情况.

在网上查询了很多资料,仍未能解决这个问题, 不得已,只好换成oci方式连接.
jdbc客户端所在地服务器中,将TNSNAMES.ORA里本地服务名配置为
mydb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.40.103)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.40.104)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydb.618119.com)
)
)

oci方式的jdbc url=”jdbc:oracle:oci:@mydb”;

获取数据库连接正常.

主要参考了以下资料 : http://www.ixdba.net/hbcms/article/97/244.html

http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=123&threadID=44660&messageID=264712

http://article.51edu.com/computer/shujuku/--escaped_anchor:16f1a67cb32676f46f5bc1b77f5f5e81--/200512/42391.html

http://www.dba---escaped_anchor:e678decc0d1b667116b4e88be425465c--.com/art_oramag_rac_taf.htm

http://www.koorka.com/download/free/Oracle_RAC_For_Windows_install.pdf

http://www.koorka.com/download/free/Oracle_RAC_For_Linux_install.pdf

update:

在使用oci模式进行连接时,整个虚拟机内只能有一份oraclejdbc 驱动,并且所在的机器必须安装了oracle 的client,oracle client必须与驱动版本一致,即,如果是使用10g的jdbc驱动,则必须安装10g的 oracle client,需要Orace client的bin目录需要添加到环境变量的path中,例如:

Path=d:\oracle\product\10.2.0\client_1\bin;D:\Java\apache-ant-1.7.0\bin;D:\J ava\
jdk1.6.0_03\bin;D:\WINDOWS\system32;D:\WINDOWS;D:\WINDOWS\System32\Wbem;D:\Progr
am Files\Microsoft Network Monitor 3\;D:\PROGRA~1\F-Secure\Ssh;

因此在web应用中Oracle jdbc的驱动不能放在WEB-INF/lib目录下,而是要放到 server的lib目录下(例如Tomcat6的D:\Java\apache-tomcat-6.0.14\lib ,Tomcat5的D:\Java\apache-tomcat-5.5.25\common\lib) .

如果出现重复的oracle jdbc驱动文件(或者是多个不同版本的oracle jdbc驱动在一起) ,

则可能出现以下错误信息:

[code]

java.lang.UnsatisfiedLinkError: make_c_state
java.lang.UnsatisfiedLinkError: make_c_state
at oracle.jdbc.oci8.OCIDBAccess.make_c_state(Native Method)
at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:309)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:307)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:442)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:321)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:877)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:851)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)

[/code]

[code]

java.lang.UnsatisfiedLinkError: Native Library D:\oracle\ora92\bin\ocijdbc9.dll
already loaded in another classloader
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1716)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:992)
at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:294)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:307)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
va:442)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:321)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)

[/code]

udate:

http://lhylj2.spaces.live.com/Blog/cns!7E417A90C3FE44A9!229.entry
这里提到换成 Oracle 9.0.2.4的jdbc驱动可以解决时而连不上的问题,我没有测试过 .

Tags: 618119.com, DbVisualizer, Java, jdbc, oci, Oracle, Oracle 10g RAC, RAC, thin, 数据库

Related posts

Navicat 8.0 for MySQL 8.0.20与 Navicat 8.0 for PostgreSQL 8.0.20

星期三, 11月 7th, 2007

Navicat 8.0 for MySQLNavicat 8.0 for PostgreSQL的目前版本均为 v8.0.20。

Navicat 8.0 for MySQL提供简体中文版,下载地址为:

http://www.--escaped_anchor:7cf60dfcd5efccce1ea10dd5f379d929--.com/download/navicat8_mysql_cs.exe
Navicat 8.0 for PostgreSQL只有英文版,下载地址为:
http://www.--escaped_anchor:7cf60dfcd5efccce1ea10dd5f379d929--.com/download/navicat8_pgsql_en.exe

相关的其它文件在:

http://www.4×4y.com/110284_CrackDown_Navicat.for.PostgreSQL.v8.0.20-iNViSiBLE_crack.html

http://www.4×4y.com/111201_CrackDown_Navicat.for.MySQL.v8.0.20-iNViSiBLE_crack.html

两个工具的界面基本一样,主菜单都是“文件”,“查看”,“工具”,“窗口”,“帮助”。
toolbar工具栏也基本一样:“连接”,“管理用户”,“表”,“视图”,“存储过程”,“查询”,“报表”,“备份”,“计划任务”,“全部”。
不同的地方是Navicat 8.0 for MySQL 有“事件”,Navicat 8.0 for PostgreSQL 有“Others”。
Navicat 8.0 for MySQL 8.0.20的中文版把“计划任务”,写成了 “计画任务”,其它还有些地方翻译的内容让人看得迷糊。

由于navicat只提供30天的免费试用,因此可以用免费的工具来替代navicat进行长期使用,
mysql的管理工具可以使用heidisql,来源 :  http://www.--escaped_anchor:ec34ec8db0bbdf2fe05f0af6e2cd6428--.com/ ,(heidisql没有中文版)。
postgresql的管理工具可以使用pgAdmin III ,来源:http://www.--escaped_anchor:cf90b91f9b2686d28b14f90cc79900ec--.org/
pgAdmin支持多种操作系统:fedora,freebsd,opensuse,osx,rhel,slackware,solaris,win32
下载地址在:http://www.--escaped_anchor:f3e2fff4994d4a2862efd861aa99ee75--.org/ftp/pgadmin3/release/v1.8.0/

另外还有功能强大的基于jdbc的数据库管理工具:DbVisualizer-6.0.6
参考:http://618119.com/archives/2007/10/19/9.html

Tags: DbVisualizer, heidisql, mysql, Navicat, pgAdmin, PostgreSQL

Related posts

DbVisualizer 6.0.6 发布了.

星期五, 10月 19th, 2007

DbVisualizer 是一个非常优秀的,可跨平台使用的数据库管理工具,凡是支持JDBC的数据库均可被管理,操作.
下载dbvis_windows_6_0_6.zip ,解压为: D:\Java\DbVisualizer-6.0.6

运行D:\Java\DbVisualizer-6.0.6\dbvis.exe,第一次启动时会自动搜索自带的jdbc驱动,
自带的jsbc驱动有: db2,derby,jtds,mimer,mysql,postgresql.

将”Run JDBC Driver Finder at Startup” 前的钩去掉.
新加 JDBC驱动可以直接放到D:\Java\DbVisualizer-6.0.6\jdbc下,比如:h2.jar,hsqldb.jar等

查看版本信息为:
Product: DbVisualizer Free 6.0.6
Build: #1291 (2007/10/16 00:25)
Java VM: Java HotSpot(TM) Client VM
Java Version: 1.6.0_03-b05
Java Vendor: Sun Microsystems Inc.
OS Name: Windows XP
OS Arch: x86
OS Version: 5.1

注册之后为 DbVisualizer Personal 6.0.6.

(更多…)

Tags: DbVisualizer, jdbc driver, PostgreSQL

Related posts