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
   927 (=x039F)  PC Traditional Chinese DBCS
   928 (=x03A0)  PC Simplified Chinese DBCS
   930 (=x03A2)  EBCDIC Japanese Katakana/Kanji mixed
   932 (=x03A4)  Japanese OS/2
   933 (=x03A5)  EBCDIC Korean Mixed
   935 (=x03A7)  EBCDIC Simplified Chinese Mixed
   937 (=x03A9)  EBCDIC Traditional Chinese Mixed
   939 (=x03AB)  EBCDIC Japanese Latin/Kanji mixed
   941 (=x03AD)  Japanese PC DBCS - for open systems
   942 (=x03AE)  Japanese PC Data Mixed - extended SBCS
   943 (=x03AF)  Japanese PC Mixed - for open systems
   944 (=x03BO)  Korean PC data Mixed - extended SBCS
   946 (=x03B2)  Simplified Chinese PC data Mixed - extended SBCS
   947 (=x03B3)  PC Traditional Chinese DBCS
   948 (=x03B4)  PC Traditional Chinese Mixed - extended SBCS
   949 (=x03B5)  PC Korean Mixed - KS code
   950 (=x03B6)  PC Traditional Chinese Mixed - big5
   951 (=x03B7)  PC Korean DBCS - KS code
   970 (=x03CA)  euc Korean
   1004 (=x03EC)  PC Data Latin1
   1006 (=x03EE)  ISO Urdu
   1008 (=x03F0)  ASCII Arabic 8-bit ISO
   1025 (=x0401)  EBCDIC Cyrillic
   1026 (=x0402)  EBCDIC Turkish
   1027 (=x0403)  EBCDIC Japanese Latin
   1040 (=x0410)  IBM-1040: Korean
   1041 (=x0411)  Japanese PC - extended SBCS
   1042 (=x0412)  PC Simplified Chinese - extended SBCS
   1043 (=x0413)  PC Traditional Chinese - extended SBCS
   1046 (=x0416)  PC-ASCII Arabic
   1047 (=x0417)  IBM-1047: Western European
   1051 (=x041B)  ASCII roman8 for HP Western European
   1088 (=x0440)  PC Korean SBCS - KS code
   1089 (=x0441)  ISO8859-6 Arabic
   1097 (=x0449)  EBCDIC Farsi
   1098 (=x044A)  PC-ASCII Farsi
   1112 (=x0458)  EBCDIC Baltic (Latvian/Lithuanian)
   1114 (=x045A)  PC Traditional Chinese - big 5 SBCS
   1115 (=x045B)  PC Simplified Chinese SBCS
   1122 (=x0462)  EBCDIC Estonian
   1123 (=x0463)  EBCDIC Ukrainian
   1124 (=x0464)  UNIX-ASCII Ukrainian
   1131 (=x046B)  PC-ASCII Belarus
   1140 (=x0474)  EBCDIC USA, with euro (like 037)
   1141 (=x0475)  EBCDIC Austria, Germany, with euro (like 273)
   1142 (=x0476)  EBCDIC Denmark, Norway, with euro (like 277)
   1143 (=x0477)  EBCDIC Finland, Sweden, with euro (like 278)
   1144 (=x0478)  EBCDIC Italy, with euro (like 280)
   1145 (=x0479)  EBCDIC Spain, with euro (like 284)
   1146 (=x047A)  EBCDIC UK, with euro (like 285)
   1147 (=x047B)  EBCDIC France, with euro (like 297)
   1148 (=x047C)  EBCDIC International, with euro (like 500)
   1149 (=x047D)  EBCDIC Iceland, with euro (like 871)
   1200 (=x04B0)  Unicode - UCS-2
   1208 (=x04B8)  Unicode - UTF-8
   1250 (=x04E2)  Windows - Eastern European
   1251 (=x04E3)  Windows - Cyrillic
   1252 (=x04E4)  Windows - Western European
   1253 (=x04E5)  Windows - Greek
   1254 (=x04E6)  Windows - Turkish
   1255 (=x04E7)  Windows - Hebrew
   1256 (=x04E8)  Windows - Arabic
   1257 (=x04E9)  Windows - Baltic Rim
   1275 (=x04FB)  Apple - Western European
   1280 (=x0500)  Apple - Greek
   1281 (=x0501)  Apple - Turkish
   1282 (=x0502)  Apple - Eastern European
   1283 (=x0503)  Apple - Cyrillic
   1284 (=x0504)  IBM-504: Eastern European
   1285 (=x0505)  IBM-505: Eastern European
   1363 (=x0553)  Windows Korean PC Mixed including 11,172 full hangul
   1364 (=x0554)  Korean Host Mixed extended including 11,172 full hangul
   1380 (=x0564)  PC Simplified Chinese DBCS
   1381 (=x0565)  PC Simplified Chinese Mixed
   1383 (=x0567)  euc Simplified Chinese Mixed
   1386 (=x056A)  PC Simplified Chinese Data GBK Mixed
   1388 (=x056C)  DBCS Host Simplified Chinese Data GBK Mixed
   5346 (=x14E2)  Windows-Eastern European with Euro (like 1250)
   5347 (=x14E3)  Windows - Cyrillic with Euro (like 1251)
   5348 (=x14E4)  Windows-Western European with Euro (like 1252)
   5349 (=x14E5)  Windows-Windows - Greek with Euro (like 1253)
   5350 (=x14E6)  Windows - Turkish with Euro (like 1254)
   5351 (=x14E7)  Windows - Hebrew with Euro (like 1255)
   5352 (=x14E8)  Windows - Arabic with Euro (like 1256)
   5353 (=x14E9)  Windows - Baltic Rim with Euro (like 1257)
   5354 (=x14EA)  'Windows - Vietnamese with Euro (like 1258)

4.还是编码问题,代码编码

    在java代码编译时,也要考虑编译编码与数据库编码是否相配的问题。一般如果代码中不存在汉字的硬编码的话,不会有问题。但如果有硬编码,则需要考虑写 入数据库的信息是否能被正常识别而不会造成乱码。解决方法与上面类似db2 get db cfg for dbname 查看数据库的编码类型。使得java编译编码同其一致。

5.系统用户权限

    安装好DB2之后,默认有两个用户可以有DB2的管理权限:administrator 和db2admin。如果用其他的用户登录windows,不做设置是无法对DB2进行配置管理的。也可以通过将db2admin组用户权限赋予其他系统 用户的方式来通过其他用户管理DB2。

 6.JDBC驱动

    如果是自己安装DB2.在DB2的安装目录下会有db2java.zip、db2jcc.jar、Common.jar、sqlj.zip、 db2fs.jar。这些是IBM送给广大java发烧友最好的东东,千万记得用。不要到别的地方去找,这里的才是最吻合的lib。其中 db2java.zip就是JDBCtype2和type3用的包。可以将他改名为db2java.jar加到我们的工程中去。db2jcc.jar中提 供JDBC Type4支持。Type4驱动程序是仅纯 Java 的 JDBC 驱动程序,它直接连接到数据库服务器。其实现包名为com.ibm.db2.jcc.DB2Driver。

    如果开发者不是DB2安装者,应该搞清楚DB2版本后取得相应的JDBC驱动。

你可能感兴趣的:(apple,windows,jdbc,IBM,db2)