文章关键字 ‘DbVisualizer’

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

2007年11月20日,星期二

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

出错信息:
- 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:::@(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::@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/Oracle/200512/42391.html

http://www.dba-oracle.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模式进行连接时,整个虚拟机内只能有一份oracle的jdbc 驱动,并且所在的机器必须安装了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: , , , , , , , , ,

Navicat 8.0 for MySQL 8.0.20与 Navicat 8.0 for PostgreSQL 8.0.20

2007年11月7日,星期三

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

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

http://www.navicat.com/download/navicat8_mysql_cs.exe

Navicat 8.0 for PostgreSQL只有英文版,下载地址为:

http://www.navicat.com/download/navicat8_pgsql_en.exe

相关的其它文件在:

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

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

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

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

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

Tags: , , , , ,

Windows系统中使用jvmstat查看Java虚拟机信息

2007年10月25日,星期四

0.jdk必须1.5以上,临时文件夹所在的磁盘分区必须为NTFS格式 (命令行下用 set PATH 察看临时文件夹)

1.下载jvmstat-3_0.zip
参考http://java.sun.com/performance/jvmstat/#Download

2.解压到:E:\\

3.启动tomcat ,然后在任务管理器中查看到进程id(例如3866)
(或者使用jps命令)

4.启动 E:\Java\jvmstat\bat>.cmd 3866

5.新出现的三个图形窗口有统计数据.

参考:http://java.sun.com/performance/jvmstat/windows.html

http://java.sun.com/performance/jvmstat/faq.html

命令行执行示例:

D:\Documents and Settings\lizongbo>set TMP
TMP=D:\DOCUME~1\lizongbo\LOCALS~1\Temp

D:\Documents and Settings\lizongbo>set TEMP
TEMP=D:\DOCUME~1\lizongbo\LOCALS~1\Temp

D:\Documents and Settings\lizongbo>cd D:\Java\jvmstat\bat

D:\Java\jvmstat\bat>d:

D:\Java\jvmstat\bat>jps
1212 Jps

D:\Java\jvmstat\bat>jps
1896
1088 Jps

D:\Java\jvmstat\bat>visualgc.cmd 1896

在启动的信息窗口中,可以得到的相关信息

Java Command Line:

Java VM Arguments: -Dexe4j.isInstall4j=true -Dexe4j.moduleName=D:\Java\DbVisualizer-6.0.6\dbvis.exe -Dexe4j.tempDir= -Dexe4j.unextractedPosition=0 -Dexe4j.consoleCodepage=cp0 -Xmx256m -Ddbvis.home=D:\Java\DbVisualizer-6.0.6\ -Dapple.laf.useScreenMenuBar=true -Xmx256m

Java VM Flags:

java.home=d:\java\jdk1.6.0_03\jre

java.class.path=D:\Java\DbVisualizer-6.0.6\.install4j\i4jruntime.jar;D:\Java\DbVisualizer-6.0.6\.\resources;D:\Java\DbVisualizer-6.0.6\.\lib\alloy.jar;D:\Java\DbVisualizer-6.0.6\.\lib\commons-lang.jar;D:\Java\DbVisualizer-6.0.6\.\lib\crimson.jar;D:\Java\DbVisualizer-6.0.6\.\lib\dbvis.jar;D:\Java\DbVisualizer-6.0.6\.\lib\forms.jar;D:\Java\DbVisualizer-6.0.6\.\lib\jai-imageio.jar;D:\Java\DbVisualizer-6.0.6\.\lib\jcchart.jar;D:\Java\DbVisualizer-6.0.6\.\lib\jdom.jar;D:\Java\DbVisualizer-6.0.6\.\lib\jide.jar;D:\Java\DbVisualizer-6.0.6\.\lib\log4j.jar;D:\Java\DbVisualizer-6.0.6\.\lib\nb-editor.jar;D:\Java\DbVisualizer-6.0.6\.\lib\ognl.jar;D:\Java\DbVisualizer-6.0.6\.\lib\openide-util.jar;D:\Java\DbVisualizer-6.0.6\.\lib\poi.jar;D:\Java\DbVisualizer-6.0.6\.\lib\yFiles.jar;

java.library.path=D:\Java\DbVisualizer-6.0.6;.;D:\WINDOWS\Sun\Java\bin;D:\WINDOWS\system32;D:\WINDOWS;D:\Java\apache-ant-1.7.0\bin;d:\\product\10.2.0\client_1\bin;D:\Java\jdk1.6.0_03\bin;D:\WINDOWS\system32;D:\WINDOWS;D:\WINDOWS\System32\Wbem;D:\Program Files\Microsoft Network Monitor 3\;d:\java\jdk1.6.0_03\jre\bin

java.endorsed.dirs=d:\java\jdk1.6.0_03\jre\lib\endorsed

java.ext.dirs=d:\java\jdk1.6.0_03\jre\lib\ext;D:\WINDOWS\Sun\Java\lib\ext

sun.boot.class.path=d:\java\jdk1.6.0_03\jre\lib\resources.jar;d:\java\jdk1.6.0_03\jre\lib\rt.jar;d:\java\jdk1.6.0_03\jre\lib\sunrsasign.jar;d:\java\jdk1.6.0_03\jre\lib\jsse.jar;d:\java\jdk1.6.0_03\jre\lib\jce.jar;d:\java\jdk1.6.0_03\jre\lib\charsets.jar;d:\java\jdk1.6.0_03\jre\classes

sun.boot.library.path=d:\java\jdk1.6.0_03\jre\bin

java.vm.name=Java HotSpot(TM) Client VM

java.vm.info=mixed mode, sharing

java.vm.vendor=Sun Microsystems Inc.

java.vm.version=1.6.0_03-b05

java.vm.specification.name=Java Virtual Machine Specification

java.vm.specification.vendor=Sun Microsystems Inc.

java.vm.specification.version=1.0

Tags: , , , , ,