Oracle与DB2的对应关系

1,Oracle与DB2的对应关系
1)日期型数据转化
Oracle的数据类型中只有一种日期型,即Date型,占用固定长度;
DB2的数据类型中有三种日期型,即Date型,time型,timestamp型,在使用工具进行移植时,系统将Oracle的Date对应到timestamp。
序号 项目 Oracle中的格式 DB2中的格式 备注
1
日期型转化为字符型 To_char(dTime,’yyyy-mm-dd hi24:mi:ss’) To_char(dTime,’yyyy-mm-dd hh24:mi:ss’) yyyy-mm-dd hh24:mi:ss, Oracle的格式串中小时为hi24,DB2中的格式串中是hh24
Substr(char(dTime),1,19) DB2中转化出来的字符串形式为:yyyy-mm-dd-hi24.mi.ss
To_char(dTime,’yyyy-mm-dd’) Substr(char(dTime),1,10) 一致
2
字符型转化为日期型 To_date(cTime,’yyyy-mm-dd hi24:mi:ss’) to_date(ctime,’yyyy-mm-dd hh24:mi:ss’) Oracle的格式串中小时为hi24,DB2中的格式串中是hh24
To_date(cTime,’yyyy-mm-dd’) Timestamp (ctime+’ 00:00:00) DB2版本8提供的新函数TO_CHAR和TO_DATE
3 字符型转化为数值型 To_number Integer()
Decimal(S,20,8) S为要转换的字符
4 系统日期 Sysdate Current timestamp
Select sysdate from dual Select current timestamp from sysibm.sysdummy1
Dual sysibm.sysdummy1 sysibm.sysdummy1表是一个特殊的内存中的表
5 常用函数 Nvl
Coalesce
Value 判断值是否为空,如果为空则赋予一个默认值
Mod Mod 求余
Floor Floor 下取整

2)JSP实现分页
在JSP页面实现分页显示时,Oracle是通过嵌套SQL和rownum来实现指定序列号的记录定位的,即:
/////// iBegin和iEnd为想要查询的起始行号和结束行号 //////
select * from (select t.*, rownum as rowno from (strSQL ) t) where rowno>=iBegin and rowno<= iEnd;
在DB2中的实现机制如下:
select * from (select t.*,(rownumber() over()) as rowno from (strSQL ) t) where rowno>=iBegin and rowno<= iEnd;

3)序列
在Oracle中,序列Sequence是作为一种数据库对象存在,可以Create和Drop,并通过
SELECT seqname.nextval FROM dual来实现序列值得引用和自动增加(或减少);
在DB2中没有对应的数据库对象,只能通过在某一列上实现Oracle中相应的Sequence功能,例如:
create table dept (deptno smallint not null generated always as identity(start with 200,
increment by 1),
deptname varchar(36) not null,
location char(30));
接下来插入数据
insert into dept values
(default,’sales’,’smith,50,’downtown’),
(default,’marketing’,’wong’,23,’midtown’),
(default,’accounting’,’fisher’200,’uptown’);

已经修改的序列有:SEQ_GROUP,SEQ_SYS_LOG
4)SQL语句
左联接
在Oracle中,左联接是通过在等号左边用“(+)”符号来实现,例如:
c.cid(+)=tt.cid
在DB2中左联接是通过“LEFT OUTER JOIN”来实现,范例如下:
SELECT fname,wphone,count(*) from db2cert.candicate c
LEFT OUTER JOIN db2cert.test_taken tt ON c.cid=tt.cid and c.fname=’aaa’
GROUP BY fname,wphone
右联接
在Oracle中,右联接是通过在等号右边用“(+)”符号来实现,例如:
c.cid=tt.cid(+)
在DB2中右联接是通过“RIGHT OUTER JOIN”来实现,范例如下:
SELECT name,count(DISTINCT char(tt.cid)) FROM db2cert.test_taken tt
RIGHT OUTER JOIN db2cert.test t
ON tt.number = t.number
GROUP BY name;

CASE语句
在Oracle和DB2中Case语句的语法完全一致,语法格式如下:
CASE
WHEN integer(SCORE) < 65 THEN ‘Not Passed’
WHEN SCORE <= score(90) THEN ‘Passed’
ELSE
‘Excellent’
END
Truncate语句
在Oracle中,通过语句truncate table tab_name来清空表中的内容并重组表的空间,truncate是DDL语句,相对于Delete语句执行效率高,不生成日志,但是也不能回滚。
DB2不支持truncate语句,但提供另外二种方法来解决上面的问题。
(1) 在建表时加选项not logged initially ,当清空表时通过alter table [name] activate not logged initially with empty table
(2)首先在操作系统上建一个空文件empty.del,接着通过import命令import from empty.del of del replace into [table_name]来清空表中的数据并重组表空间。

5)JDBC联接数据库
Oracle与Java提供的JDBC接口吻合得比较好,并不需要添加额外的开发包,接口代码如下:
Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();
String url=”jdbc:oracle:thin:@localhost:1521:orcl”; //orcl为数据库的SID
String user=”test”;
String password=”test”;
Connection conn= DriverManager.getConnection(url,user,password);

在DB2中,通过JDBC联接数据库有四种方式,常用的是采用Type 2(jdbc.app)和Type4(jcc)

的方式。
(1)JBuilder 7采用Type 2(jdbc.app)的方式连接数据库,
采用Type 2连接必须安装客户端软件。java实现代码如下:
Class.forName(“COM.ibm.db2.jdbc.app.DB2Driver “);//注意COM必须大写
String url=”jdbc:db2:sample”; //sample为你的数据库名
String user=”admin”;
String password=”“;
Connection conn= DriverManager.getConnection(url,user,password);

在稽核系统中,需要修改的是D:\projects\cmbc_cp\conf\system_config.xml中的结点。


COM.ibm.db2.jdbc.app.Db2Driver
jdbc:db2:offas
db2admin
db2admin
2
3
0.5

以此种方式实现的JDBC接口必须包含DB2提供的.jar开发包,存放在C:\Program Files\IBM\SQLLIB\java\db2java.zip,以JBuilder 7.0为例:
点开Project->Project Properties,弹出“Project Properties”对话框,选择“Required Libraries”将C:\Program Files\IBM\SQLLIB\java\db2java.zip添加进去。
另外,如果程序需要在Tomcat中运行,也需要将C:\Program Files\IBM\SQLLIB\java\db2java.zip添加到Tomcat中,以Jbuilder 7。0为例,
选择Tools->Configure Servers,弹出“Configure Servers”对话框,选择Tomcat 4.0,在右边的Class页中通过Add按钮将C:\Program Files\IBM\SQLLIB\java\db2java.zip包添加进去(如果是采用Eclipse开发,则需要将zip包转换成.jar包,添加到???)。

(2)MyEclips 3.0采用Type 2(jdbc.app)的方式连接数据库;
同样必须安装DB2客户端软件,Java实现代码和D:\projects\cmbc_cp\conf\system_config.xml都是一样的,不同的是jar包的配置。
以MyEclips3.0.0为例,点开Project->Properties,将弹出 Properties for xxx的对话框,选中左侧的“Java Build Path”,查看右侧的“Libraries”页是否包含db2java.zip包,如果没有包含,则需要包含进来(一般而言,都应该已经包含)。
如果程序需要在web服务器上运行,以Tomcat为例:
选择“Windows -> Preferences”,将弹出Preferences对话框,展开左侧的“MyEclips-〉Application Servers-〉Tomcat 5 –〉Paths”,然后在右边选择“Append to classpath”编辑框,通过“Add JAR/ZIP”按钮来进行db2java.zip包的添加。
添加Path完毕之后,展开左侧的“MyEclips-〉Application Servers-〉Tomcat 5 -〉JDK”,然后在右边选择“Tomcat JDK name ”,如果下拉框中没有包含新安装的JDK的名称,则用“Add…”按钮进行添加,然后在“Optional Java VM Arguments”编辑框中输入“-Djava.library.path=”C:\Program Files\IBM\SQLLIB\BIN””(假定db2java.zip包的位置在C:\Program Files\IBM\SQLLIB\java目录下面),注意,输入的路径是BIN目录。当然,还需要注意“MyEclips-〉Application Servers-〉Tomcat 5”右侧页面上Tomcat Server上的Enable被选中且“Tomcat Home Directory”已经配置好。

6)修改数据库参数
查看数据库参数:db2 connect to cibas user cibas using password
db2 get db cfg
修改日志文件大小(以4K为单位):db2 update database configuration using LOGFILSIZ 40960
修改日志缓冲区大小:db2 update database configuration using LOGBUFSZ 32
修改Bufferpool大小(以4K为单位):db2 “alter bufferpool IBMDEFAULTBP immediate size 8096”

猜你喜欢

转载自blog.csdn.net/weixin_42800008/article/details/81939961
db2