日期:2014-05-16  浏览次数:20428 次

DB2及JDBC安装部署若干问题

原文:http://tech.e800.com.cn/articles/2009/730/1248921490555_1.html

?

在DB2的安装和JDBC开发中,会遇到一些常见的问题做个记录以备忘:

1. license

DB2的正版与否取决于license,然而在安装过程中不会有提示。license安装:

db2licm -a [path]/db2ese.lic

如果license不正确,最大的影响是:数据库无法向除本机以外的其他服务器提供服务。这是个致命的问题...谁装DB2是为了自己玩玩呢...当然你也可以自己玩玩,那就必须注意下面一个问题:

2.app与net

JDBC type2与type3是相似的连接方法。一个是本地应用,一个是远程应用。

type2的主要代码:
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver";).newInstance();
Connection c = DriverManager.getConnection("jdbc:db2://[localDBName]", "[user]", "[password]");

Type 2 的 JDBC 驱动程序,它通过 DB2 本地客户机库的帮助建立和 DB2本地数据库或是远程数据库的连接(事先将远程数据库编目到本地)。因此,我们必须在应用系统所在的机器上同时部署 DB2 本地客户机库,这也许是它最大的一个不足之处。
type3的主要代码:
Class.forName("COM.ibm.db2.jdbc.net.DB2Driver";).newInstance();
Connection c = DriverManager.getConnection("jdbc:db2://[serverIP]:[port默认6789]/[DBName]", "[user]", "[password]");

注意,这里的端口号,是远程客户端给我们的端口号,并不是数据库的端口号50000.

Type 3 的 JDBC 驱动程序,它通过与一台已经部署了 DB2 本地客户机库的机器通信来建立和 DB2 远程数据库的连接。

注意,如果没有license,可能会造成远程连接不可用哦。

3.CODEPAGE错误

如果远程连接系统与本地有编码差异,则可能出现代码页问题,提示信息例如:

SQL0332N? There is no available conversion for
the source code page "1386" to the target code
page "819".? Reason Code "1".? SQLSTATE=57017

建库的时候CODESET 指定为GBK
那么该库的CODEPAGE 为1386

而AIX系统下DB2默认的CODEPAGE为819
由于连接的客户端与数据库的CODEPAGE要一致
因此可以首先通过 db2 get db cfg for dbname 得到对应数据库的CODEPAGE
然后通过db2set设置DB2CODEPAGE
重启数据库后生效

例:

db2set db2codepage=819

db2 terminate

附:CODEPAGE代码页列表

Conversion between any of the following codepages is provided.

?? 37? (=x0025)? EBCDIC US Einglsh
?? 273 (=x0111)? EBCDIC German
?? 277 (=x0115)? EBCDIC Danish/Norwegian
?? 278 (=x0116)? EBCDIC Finnish/Swedish
?? 280 (=x0118)? EBCDIC Italian
?? 284 (=x011C)? EBCDIC Spanish
?? 285 (=x011D)? EBCDIC UK English
?? 297 (=x0129)? EBCDIC French
?? 300 (=x012C)? EBCDIC Japanese DBCS
?? 301 (=x012D)? Japanese PC DBCS
?? 420 (=x01A4)? EBCDIC Arabic
?? 424 (=x01A8)? EBCDIC Arabic
?? 437 (=x01B5)? PC-ASCII US
?? 500 (=x01F4)? EBCDIC International
?? 803 (=x0323)? Hebrew Set A
?? 813 (=x032D)? ISO8859-7 Greek
?? 819 (=x0333)? ISO8859-1 Western European
?? 833 (=x0341)? IBM-833: Korean
?? 834 (=x0342)? IBM-834: Korean Host DBCS
?? 835 (=x0343)? EBCDIC Traditional Chinese DBCS
?? 836 (=x0344)? EBCDIC Simplified Chinese SBCS
?? 838 (=x0346)? EBCDIC Thai SBCS
?? 850 (=x0352)? ISO8859-1 Western European
?? 852 (=x0354)? PC-ASCII Eastern European
?? 855 (=x0357)? PC-ASCII Cyrillic
?? 856 (=x0358)? PC-ASCII Hebrew
?? 857 (=x0359)? PC-ASCII Turkish
?? 858 (=x035A)? PC-ASCII Western European with Euro
?? 860 (=x035C)? PC-ASCII Portuguese
?? 861 (=x035D)? PC-ASCII Icelandic
?? 862 (=x035E)? PC-ASCII Hebrew
?? 863 (=x035F)? PC-ASCII Canadian French
?? 864 (=x0360)? PC-ASCII Arabic
?? 865 (=x0361)? PC-ASCII Scandinavian
?? 866 (=x0362)? PC-ASCII Cyrillic #2
?? 868 (=x0364)? PC-ASCII Urdu
?? 869 (=x0365)? PC-ASCII Greek
?? 870 (=x0366)? EBCDIC Eastern Europe
?? 871 (=x0367)? EBCDIC Icelandic
?? 872 (=x0368)? PC-ASCII Cyrillic with Euro
?? 874 (=x036A)? PC-ASCII Thai SBCS
?? 875 (=x036B)? EBCDIC Greek
?? 880 (=x0370)? EBCDIC Cyrillic
?? 891 (=x037B)? IBM-891: Korean
?? 897 (=x0381)? PC-ASCII Japan Data SBCS
?? 903 (=x0387)? PC Simplified Chinese SBCS
?? 904 (=x0388)? PC Traditional Chinese Data - SBCS
?? 912 (=x0390)? ISO8859-2 Eastern European
?? 915 (=x0393)? ISO8859-5 Cyrillic
?? 916 (=x0394)? ISO8859-8 Hebrew
?? 918 (=x0396)? EBCDIC Urdu
?? 920 (=x0398)? ISO8859-9 Turkish
?? 921 (=x0399)? ISO Baltic
?? 922 (=x039A)? ISO Estonian
?? 923 (=x039B)? ISO8859-15 Western Europe with euro (Latin 9)
?? 924 (=x039C)? EBCDIC Western Europe with euro