DB2_Oracle的技术对比
db2和oracle中character类型
DB2和Oracle是两种常见的关系数据库管理系统,它们在数据存储和处理方面有着不同的特点。
其中,character类型是在数据库中存储字符数据的一种数据类型,它在DB2和Oracle中又有哪些不同呢?本文将从以下几个方面对DB2和Oracle中的character类型进行详细介绍和对比分析。
一、数据类型定义1.1 DB2中的character类型在DB2中,character类型可以分为char和varchar两种。
其中,char表示固定长度的字符类型,需要指定字符的长度,例如char(10)表示存储10个字符的固定长度字符串;而varchar表示可变长度的字符类型,同样需要指定字符的最大长度,例如varchar(100)表示最大可存储100个字符的可变长度字符串。
1.2 Oracle中的character类型在Oracle中,character类型也可以分为char和varchar2两种。
char和varchar2的区别与DB2中的定义相似,char表示固定长度的字符类型,需要指定字符的长度,例如char(10);而varchar2表示可变长度的字符类型,同样需要指定字符的最大长度,例如varchar2(100)。
二、存储空间2.1 DB2中character类型的存储空间在DB2中,char类型的存储空间是固定的,它会根据指定的长度分配固定的存储空间,不会因实际存储的字符长度而改变。
而varchar类型的存储空间是可变的,它会根据实际存储的字符长度分配相应的存储空间,因此在实际应用中更加灵活。
2.2 Oracle中character类型的存储空间在Oracle中,char类型和varchar2类型的存储空间分配与DB2类似,char类型的存储空间是固定的,而varchar2类型的存储空间是可变的。
三、字符串比较3.1 DB2中character类型的字符串比较在DB2中,对于char类型的字符串比较是要考虑到固定长度的特点,因此对于长度不足的字符串会进行填充处理。
db2和oracle中character类型
db2和oracle中character类型摘要:1.DB2 和Oracle 的Character 类型概述2.DB2 的Character 类型3.Oracle 的Character 类型4.两者之间的差异5.使用建议正文:【1.DB2 和Oracle 的Character 类型概述】在数据库管理系统中,Character 类型是用于存储字符数据的数据类型。
DB2 和Oracle 作为两大主流数据库管理系统,它们的Character 类型在存储和管理字符数据方面具有重要作用。
【2.DB2 的Character 类型】DB2 的Character 类型用于存储固定长度的字符数据。
它可以是数字、字母或任何可打印的字符。
Character 类型在DB2 中有两种存储方式:1.固定长度:用户可以指定字符数据的最大长度,实际存储时,如果数据长度小于指定的最大长度,则会用空格填充。
2.可变长度:用户可以指定字符数据的最小和最大长度。
实际存储时,数据会按照实际长度存储,不会进行填充。
【3.Oracle 的Character 类型】Oracle 的Character 类型与DB2 类似,也用于存储固定长度的字符数据。
在Oracle 中,Character 类型有以下特点:1.数据长度固定:用户需要指定字符数据的长度,数据存储时会按照指定的长度进行存储。
2.可以存储空格:与DB2 不同,Oracle 的Character 类型可以存储空格字符。
【4.两者之间的差异】虽然DB2 和Oracle 的Character 类型在存储和管理字符数据方面有很多相似之处,但它们之间还是存在一些差异:1.存储方式:DB2 的Character 类型提供了固定长度和可变长度两种存储方式,而Oracle 的Character 类型只有固定长度一种存储方式。
2.空格处理:DB2 的Character 类型在存储时会将空格替换为空字符,而Oracle 的Character 类型可以存储空格字符。
db2和oracle中character类型
DB2和Oracle中Character类型的比较引言Character类型是关系数据库中常见的数据类型之一,用于存储字符串数据。
在DB2和Oracle这两个主流的关系数据库管理系统中,都提供了Character类型,但在具体实现和使用上存在一些差异。
本文将对DB2和Oracle中Character类型进行比较,包括数据存储方式、长度限制、字符集支持、性能等方面的差异。
数据存储方式在DB2中,Character类型的数据存储方式是定长存储,即每个字符占用固定的存储空间。
例如,如果定义一个长度为10的Character类型字段,无论实际存储的字符串长度是多少,都会占用10个字节的存储空间。
这种方式的好处是可以提高查询性能,但会浪费一些存储空间。
而在Oracle中,Character类型的数据存储方式是变长存储,即根据实际存储的字符串长度来动态调整存储空间。
例如,如果定义一个长度为10的Character类型字段,实际存储的字符串长度只有5个字符,那么只会占用5个字节的存储空间。
这种方式的好处是可以节省存储空间,但可能会影响查询性能。
长度限制DB2和Oracle在Character类型的长度限制上也存在一些差异。
在DB2中,Character类型的长度限制是固定的,需要在定义字段时显式指定长度。
例如,可以定义一个长度为50的Character类型字段来存储最多50个字符的字符串。
而在Oracle中,Character类型的长度限制是可变的,默认为最大长度为4000个字符。
如果需要存储更长的字符串,可以使用CLOB类型。
另外,从Oracle 12c开始,引入了VARCHAR2类型,可以存储最大长度为32767个字符的字符串。
字符集支持DB2和Oracle都提供了对不同字符集的支持。
在DB2中,可以通过指定字符集来定义Character类型的字段。
例如,可以使用UTF-8字符集来存储包含中文字符的字符串。
DB2与Oracle数据库对比
并行能力
DB2的并行版支持位图索引和对象关系,因此,DB2有更好的扩展性和性能。Oracle触发器无法支持并行:在一些特殊的引用完整性(referentialintegrity)的限制下,并行也无法运用:如果表格中有大对象,由于前述的限制(表不能分割),并行也无法运用。总之,Oracle在并行系统中没有实现位图索引和对象关系,
在异构的环境中,IBM数据库方案简单、更加无缝而且比Oracle的成本低; Oracle的异构网关性能差,当访问异构数据库时,Oracle缺乏全局的优化,导致了过多的数据及网络传输。
复制能力
DB2提供业界最佳效率的和最开放的复制方案;DB2提供自动冲突检测和解决方法。 Oracle只提供自动冲突检测和解决方法的例子程序,用户须对例子程序做定制后来解决复制冲突
DB2是IBM的数据库产品,近年来Oracle、Sybase等数据库的大力发展,多人认为DB2将逐步失去数据库市场,而事实证明DB2不但没有没落反而越发壮大,本文我用DB2与Oracle、Sybase等数据库作一个简单的对比,希望能让读者了解DB2能越发壮大的原因。
DB2是IBM的数据库产品,近年来Oracle、Sybase等数据库的大力发展,多人认为DB2将逐步失去数据库市场,而事实证明DB2不但没有没落反而越发壮大,本文我用DB2与Oracle、Sybase等数据库作一个简单的对比,希望能让读者了解DB2能越发壮大的原因。
分布式数据库
DB2分布式数据库的处理(如两阶段提交)及连接功能是建立在DB2的核心中,不需要使用其它的产品附件。性能好,易使用,减少开支。ORACLE的分布式功能需要另外购买DistributedOption以及SQL*NET等产品才能实现分布式数据库的连接。
db2与oracle差别
db2与oracle差别1:并发机制Oracle的默认隔离级是快照(Snapshot),写入事务可不能堵塞读取事务,读取事务能够猎取当前已提交值。
DB2默认是游标稳固性(Cursor Stability),写入事务会堵塞读取事务。
2: 数据类型数据库的核心是数据,类型不匹配或者语义的不同都会阻碍应用是否能够同时在两种数据库中运行。
Oracle支持一些非SQL标准的数据类型,例如VARCHAR2,这些是不被D B2支持的;另外,Oracle中的日期、时刻格式和DB2中相应类型在语义上不完全一致;最后Oracle的PL/SQL储备过程所支持的一些标量数据类型在DB2中需要被映射才能被识别。
如右:3: 隐式类型转换Oracle使用弱类型转换,而DB2使用强类型转换。
隐式类型转换能完成一种类型向另外一种类型的自动转换,关于不匹配的类型,假如数据类型能被合明白得释,比较或者赋值时能够执行隐式类型转换;强类型转换规则,意味着字符串和数字类型之间不能直截了当进行比较,除非显式转换。
4:SQL方言DB2传统上坚持对SQL标准的支持,但Oracle实现了专门多方言。
例如:CONNEC T BY 递归语句、(+)连接操作符、DUAL表、ROWNUM伪列、ROWID伪列、MINUS 操作符、SELECT INTO FOR UPDATE语句、TRUNCATE TABLE等。
假如要在DB2数据库上运行使用了上述方言的应用,就需要进行代码级别的翻译,工作量较大。
5:PL/SQL语言就储备过程和函数开发而言,DB2使用SQL PL语言来开发,Oracle使用PL/SQL 语言来开发。
SQL PL和PL/SQL差异庞大,这也是从Oracle到DB2转型最大的工作量所在。
6:内置包为了方便应用程序开发的需要,Oracle数据库提供了专门多内置包:DBMS_OUTPUT、DBMS_SQL、DBMS_ALERT、DBMS_PIPE、DBMS_JOB、DBMS_LOB、DBMS_UTI LITY、UTL_FILE、UTL_MAIL和UTL_SMTP等。
DB2、Oracle、MySql数据库区别
DB2、Oracle、MySql数据库的不同1.oracle和db2在大多数的语法的使用上兼容性是比较好的,最大的区别还是在存储函数(存储过程)上有些不同;而MYSQL个人主要有自己的函数,并且数据库的表名区分大小写,而其他两个是不区分大小写的。
2.其次说下数据库就下的schema:Mysql这种方式很初级最容易被人想到,Database与User分开是跟其他两个的区别,用授权来关联用户和数据库。
jdbc的连接地址里面,三者分别指定了Database、User、User(&Schema),Db2如果不单独创建Schema则形式是跟Oracle一样的。
Db2的User只能是操作系统的用户,数据库本身不能创建用户,这点好像不太好,对于不同的应用系统,Mysql是创建不同的Database,Oracle是创建不同的User,这时Db2有两种方法,一是创建不同的操作系统用户,二是在User下创建不同的Schema,然后jdbc连接地址声明这个Schema。
就应用划分层面来说,三种数据库的Database、User、Schema在一个层面。
Oracle相比Mysql可以新建多个实例,一个实例等同于Mysql的一个进程,我的理解Oracle的创建实例就是创建database,会新建出一个oracleserver。
Db2的Database跟Oracle实例在一个层面,区别是Oracle创建实例比较麻烦,Db2一句话就执行完了。
Oracle的两个实例之间独立,Db2也是。
访问需要通过特定方式。
统一说来,1:Oracle的实例与Db2的数据库是一回事,应该被统一称作实例比较合适,而Mysql便是单实例模式2:应用划分层,三者分别是database、user、schema,统一称作database比较合适,真正的数据都在这一层。
从这里理解于是:用户名与密码的作用只是用来登陆,以及赋予对database的访问权限。
DB2和ORACLE的印象比较
一个项目需要DB2,以前没用过,用了WINDOWS 2008下的DB29.7 好几周,算入门了吧,下面这文章就当一个ORACLE使用者眼里的DB2的印象吧,也许有些东西可能有偏差,但是就是我自己的印象:
1、体系结构,DB2的实例和数据库分开的做法,我个人还是比较喜欢的,因为实例可以创建多个,数据库的恢复直接恢复到实例下就可以了,相对ORACLE简单多了。
17、再补充一点,DB2的在线文档有全中文的,快速入门什么的写得很不错,ORACLE这方面就差点了,不过想深入了解啥,还是要看E文。
18、DB2可是要许可证的呀,没有许可证,只能用90天,这个我觉得很不爽
8、DB2的远程网络连接采用的编目方式描述连接串的方式我感觉很不爽,为了改个客户端的连接服务器的IP地址,所有的客户端都需要将编目删除,然后重新编目连接地址,晕倒100多台PC机搞下来,尽管可以使用脚本,但是还是把人都快搞疯了。ORACLE采用的用文件来配置远程服务器的方式,所有的PC机都通过更新服务器直接更新本机的TNSNAME,1分钟搞定。
12、DB2的锁自动管理机制,我比较喜欢,打开后,互锁的概率大大降低,相同的程序,在DB2下锁明显少许多,但是不爽的是DB2的select命令也是加锁的。
13、DB2 9.7的ORACLE兼容模式,我也很喜欢,迁移麻烦少了许看要比ORACLE 要强一些,几乎所有的内存参数都能自动管理,ORACLE11G貌似也可以全部自动管理了。
4、DB2的命令执行方式,我很喜欢,可以在命令行上执行SQL,也可以在命令窗口上执行SQL,相对SQLPLUS灵活多了;
5、DB2的自动维护功能做的很好,可以定期自动整理数据库碎片和重建索引,唯一不大理想的是自动维护的备份功能不能指定压缩备份,相对而言ORACLE的自动维护功能就很一般了;
五大主流数据库比较 (DB2 Oracle MySQL SyBase SQLServer)
一、开放性1. SQL Server只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。
Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。
而且windows平台的可靠性,安全性和伸缩性是非常有限的。
它不象unix那样久经考验,尤其是在处理大数据库。
2. Oracle能在所有主流平台上运行(包括windows)。
完全支持所有的工业标准。
采用完全开放策略。
可以使客户选择最适合的解决方案。
对开发商全力支持。
Oracle数据库是以结构化查询语言为基础的大型关系数据库,他是用方便逻辑管理的语言来操纵大量有规则的数据的集合,是目前最流行的客户—服务器体系结构的数据库之一。
oracle 的特点:1),支持多用户,大事务量的事务处理2),数据安全性和完整性控制3),提供对于数据库操作的接口4),支持分布式事务处理5),可移植性,可兼容性和可连接性3. Sybase ASE能在所有主流平台上运行(包括windows)。
但由于早期Sybase与OS集成度不高,因此VERSION11.9.2以下版本需要较多OS和DB级补丁。
在多平台的混合环境中,会有一定问题。
4. DB2能在所有主流平台上运行(包括windows)。
最适于海量数据。
DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%。
5.MySQLMysql 能在所有主流平台上运行(包括windows)。
二、可伸缩性,并行性1. SQL server并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。
2. Oracle并行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。
如果windowsNT不能满足需要,用户可以把数据库移到UNIX中。
Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。
Oracle和DB2间基本架构和管理的差异
Oracle和DB2间基本架构和管理的差异1、简介当今IT的环境正经历着剧烈的变化,依靠单一的关系型数据库管理系统(RDBMS)管理数据的公司开始逐渐减少。
分析家的报告指出,今天超过90%的公司都拥有不只一种RDBMS。
在现在紧张的经济情况下,实际的需求正在挑战IT机构人员的工作极限。
一个公司为管理每种RDBMS而配备不同DBA的情况,越来越少见了。
今天的DBA必须跨平台管理不同的RDBMS,这是非常普通的事。
“58%的DBA被要求管理一种以上的数据库平台。
”―――来自: 的调查通常,一个DBA不但掌握基本的关系理论知识,同时具备一种专门的RDBMS经验。
数据库设计和管理的基本原理在所有RDBMS之间是相通的。
成为一名成功的跨平台的DBA,关键是掌握对术语的真正理解和不同RDBMS的细微差别。
本文将讨论多平台的Oracle和DB2 UDB之间的基本架构和管理的差异。
2、基本组件在不同平台之间,大部分的对象类型和功能是非常相似的,一些很重要差异是存储过程的使用方式和日志生成方式。
本文将详细讨论这些主题。
表1:基本数据库组件中的常用术语的差异3、产品选项当在安装任何一种数据库时,需要选择版本。
为了满足你的IT需求并做出正确的决定,了解各个数据库版本之间的差异是很重要的。
Oracle 10g:Enterprise Edition;Standard Edition;Express Edition。
企业版是使用最多的版本,如果你想使用OEM附加包,这个版本可以满足需要。
DB2 UDB for Linux/Unix/Windows(LUW) V 9.1:数据仓库版;企业服务器版(ESE);工作组版;简化版;个人版;通用开发版;个人开发版。
在DB2 UDB V 8.1之前,在公司环境方面你有两种选择:企业版(Enterprise Edition-EE)和扩展企业版(Extended Enterprise Edition-EEE)。
oracle与db2的区别
oracle与db2的区别数据库2009-11-10 16:37:51 阅读877 评论0 字号:大中小订阅系统结构概述首先,我们需要理解Oracle 使用的架构,并理解它与DB2 的不同之处。
图1 展示了Oracle 的系统结构。
将该图与图2 进行比较,后者显示了DB2 的系统结构。
在阅读本文的时候,为便于理解,可以参照这两个图。
图1. Oracle on Linux, UNIX, and Windows Version 10.2 的系统结构图2. DB2 on Linux, UNIX, and Windows 系统结构回页首实例在Oracle 和DB2 中,实例的概念是类似的。
在这两者之中,实例都是指后台进程与共享内存的组合。
两者之间的主要差别在于,在Oracle 中每个实例只能有一个数据库,而在DB2 中多个数据库可以共享一个实例。
在Oracle 中,由于数据库与实例是一对一的关系,因此用CREATE DATABASE 命令创建一个数据库的同时便隐式地创建了一个实例。
或者,为了在计算机上创建一个Oracle 实例,也可以使用Database Configuration Assistant,或者使用ORADIM 实用程序,后者是Oracle 9i 通过NEW 选项提供的。
另外还必须提供某些信息,包括系统标识符(System Identifier,SID)或一个服务名称、实例密码、最大用户数、启动模式等等。
类似地,为了删除实例,可以使用ORADIM 实用程序加DELETE 选项。
这里需要提供SID 或服务名称。
除非在安装过程中创建一个新的数据库,否则在以fresh 方式安装Oracle 的时候,不会创建缺省的实例。
在DB2 中,当在Windows 平台上安装了该产品之后,便缺省地创建了一个实例"DB2"。
在Linux 和UNIX 中,缺省的实例名称为"db2inst1"。
db2的存储过程与ORACLE区别
db2的存储过程与ORACLE区别很大:(1) DB2中不支持”or replace”的语法;且参数名与IN/OUT的位置也需互换,声明变量时须使用declare关键字,为变量赋值时须使用set关键字。
(2)而对于oracle中的%TYPE的功能,DB2中好像还没有很好的实现方式。
(3)同样,oracle中清空表的命令truncate,DB2也不能原样引用,但它也提供了2种实现方式,一是将一空文件的内容导入表中import null.dat ;二是设置表的特性为不记录日志alter table tablename .但是第二种方式会在某些情况下导致原表无法使用,具体的还没弄清楚呢。
(4)至于sql语句表现不同应该就是oracle与db2各自的语法了。
比如说oracle的rownum,db2可以使用fetch first n only,或row_number() over()等。
DB2有更好的扩展性和性能。
Oracle触发器无法支持并行oracle 触发器例子:CREATE OR REPLACE TRIGGER CRM.T_SUB_USERINFO_AUR_NAME AFTER UPDATE OF STAFF_ NAMEON CRM.T_SUB_USERINFOREFERENCING OLD AS OLD NEW AS NEWFOR EACH ROWdeclarebeginif :NEW.STAFF_NAME!=:OLD.STAFF_NAME thenbegin客户投诉update T_COMPLAINT_MANAGE set SERVE_NAME=:NEW.STAFF_NAME where SERVE_SEED=: OLD.SEED;oracle 存储过程例子:create or replacePROCEDURE p_insert_t(v_x in NUMBER)IStemp_id number;BEGINFOR i IN 1..v_x LOOPselect SEQ_B_USER_ID.nextval into temp_id from dual;insert into buser (id, username, nickname, status, createdtime) values(temp_id, to_char(temp_id ), to_char(temp_id), 0, sysdate);END LOOP; END;--execute。
常见主流数据库对比
• 4、 性能 • SQL Server • 多用户时性能不佳 • Oracle • 性能最高, 保持windowsNT下的TPC-D和TPC-C的世界记录。 • DB2 • 适用于数据仓库和在线事物处理性能较高。
• 5、 客户端支持及应用模式 • SQL Server • C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连
5.SQL Server
• Microsoft SQL Server是微软公司开发的大型关系型数据库系统。SQL Server的功能比
较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与 Windows操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度, 都能得到较大的提升。对于在Windows平台上开发的各种企业级信息管理系统来说, 不论是C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构,SQL Server都是 一个很好的选择。SQL Server的缺点是只能在Windows系统下运行。
• Sybase公司成立于1984年,公司名称“Sybase”取自“system”和“database” 相结合的含义。
Sybase公司的创始人之一Bob Epstein 是Ingres 大学版(与System/R同时期的关系数据库模型产品) 的主要设计人员。公司的第一个关系数据库产品是1987年5月推出的Sybase SQLServer1.0。Sybase 首先提出Client/Server 数据库体系结构的思想,并率先在Sybase SQLServer 中实现。
SQL server 2014功能
• In-memory性能 • 经检验的可预测性能 • 高可用性和灾难恢复 • 跨计算、网络和存储的企业级可扩展性 • 安全性和合规性 • 从本地到云均提供一致的数据平台 • 企业商业智能 • 利用熟悉的Excel和Office 365以及移动设备访问更快地获得洞察力 • 可扩展的数据仓库 • 数据质量和集成服务 • 易用的管理工具 • 可靠的开发工具
SQL,ORACLE,DB2三种数据库的比较
缺点:1:ORACLE一共发展了几代不同的产品,早期的产品,不是很稳定,并缺少事务处理这样的重要功能。2,其操作性相对其他两种产品较复杂。3,不是开源的,而且需付费使用。
B2以下几种优点。1,由于DB2追寻了ORACLE的产品所以它也具有主要应用于大型应用系统中,具有较好的可伸缩性,可支持从大等和ORACLE产品一样的优点。2,另外较其他两种产品, DB2还提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SL命令。3,DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。4, 它以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。 5,DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。 6,DB2也可跨平台运行。
,五脏俱全,即:对于小单位来说,MySL提供的功能已经绰绰有余。2,由于MySL是开放源码的,因此可以降低总体拥有成本。 可以说是一款性价比极高的产品。 缺点:1,正因为它小,也就限制了其功能的拓展,也就是说它功能有限。 ORACLE:
优点:1,因其复杂的关系数据库产品而闻名的ORACLE,它是世界领先的信息管理软件开发商,其使用范围相当广泛。2,处理速度快。3,经过长时间的研发,其安全性能较其他产品要强。4,伸缩性和并行性较强。5,完全支持所有的工业标准,采用完全开放策略。
缺点:1,配置文件和参数太多,而且名字很不规范。2,有些DB2产
db2与oracle区别
1、DB2 访问前10行数据与Oracle区别DB2 :select * from test fetch first 10 rows onlyOracle :select * from test where rownum<=10查询语句Db2:不提供隐形转换select * from employee where empno=1010;oracle:提供隐形转换select * from employee where empno='1010';2、DB2 Insert into 与Oracle区别DB2 允许有类似这样多行插入:insert into staff values(1212,'cemy',20,'sales',3,90000,30000);(1212,'cemy',20,'sales',3,90000,30000);oracle:SQL> insert into staff values(1212,'cemy',20,'sales',3,90000,30000),(1212,'cemy' ,20,'sales',3,90000,30000)3、DB2 Update 与Oracle区Db2DB2 update staff set (salary,comm)=(80000,50000);DB2 update staff set salary=80000,comm=50000;Oracle:SQL> update staff set salary=80000,comm=50000;已更新1 行。
I4、取得系统日期Oracle:Select sysdate from dual;DB2:Select current timestamp from sysibm.sysdummy1;5、转换日期时间到字符类型:OracleTO_CHAR(date_expression_r_r, 'YYYY-MM-DD')TO_CHAR(date_expression_r_r, 'HH24:MI:SS')DB2CHAR(date_expression_r_r,ISO)CHAR(time_expression_r_r,ISO)6、转换日期时间字符串到日期时间类型:OracleTO_CHAR(date_expression_r_r, 'YYYY-MM-DD')TO_CHAR(date_expression_r_r, 'HH24:MI:SS')DB2DATE('2005-05-20')TIME('18:59:59')TIEMSTAMP('2007-2-1', '21:12:12')TIEMSTAMP('2007-2-1 21:12:12')DB2也有TO_CHAR 和TO_DATE函数,但只能提供固定的转换格式,如下TO_CHAR (timestamp_expression_r_r,'YYY-MM-DD HH24:MI:SS')TO_DATE (string_expression_r_r, 'YYY-MM-DD HH24:MI:SS')7、快速清空大表Oracle:truncate table TableName ;DB2:alter table TableName active not logged initially with empty table;8、创建类似表Oracle:create table a as select * from b ;DB2:create table a like b ;9、修改字段长度或类型:ORACLE:ALTER TABLE NODES MODIFY NODE_NAME varchar(32);DB2:alter table NODES ALTER NODE_NAME SET DATA TYPE varchar(32);10、空值处理得到abcOracle:SELECT 'abc' || c1 FROM t1 (c1 IS NULL)DB2 :SELECT 'abc‘ || COALESCE(c1,'') FROM t111、创建indexesOralce:Create TABLE T1 .............IN DATA_TACreate Index ........ ON T1 ...... IN INDX_TSDB2:Create TABLE T1 ........ IN DATA_TS INDEX IN INDX_TSCreate INDEX .....ON T112、更改列名oracle :alter table test rename column mail to mail2;db2不提供更改列名功能(解决办法同删除,或者通过建立一个新视图解决)13、更改列类型oracle :alter table test modify column (mail2 integer);db2 :alter table test alter mail varchar(256) 只可以加宽,不能更改类型14 创建PROCEDURE的参数的区别1)参数类型和参数名称的位置不同db2:CREATE PROCEDURE PRO1 (IN OrgID int)oracle:CREATE PROCEDURE PRO1 (OrgID IN int)2)同时作为输入输出参数的写法不同db2:CREATE PROCEDURE PRO1 (INOUT OrgID int) INOUT连着写oracle:CREATE PROCEDURE PRO1 (OrgID IN OUT int) IN OUT中间空格隔开,而且必须IN 在OUT之前3)没有输入或输出参数时db2:CREATE PROCEDURE PRO1 ()oracle:CREATE PROCEDURE PRO1 不能有空的括号变量定义和BEGIN END体的位置不同db2中变量定义在BEGIN END体内,并且每个变量都要用DECLARE声明;存储过程结束时,END后跟P1,并且不需要分号oracle中变量定义必须在BEGIN END体外,变量都不需要用DECLARE声明(有种说法是,第一个变量需要DECLARE,其他变量不需要);存储过程结束时,END后跟存储过程的名称,并且需要分号db2:CREATE PROCEDURE PRO1()LANGUAGE SQLP1: BEGIN--变量定义DECLARE INSERT_DATE TIMESTAMP;DECLARE ALLDEPT_NO VARCHAR(20);--具体操作SELECT a FROM TAB_1;.........END P1oracle:CREATE PROCEDURE PRO1IS--变量定义INSERT_DATE TIMESTAMP;ALLDEPT_NO VARCHAR(20);BEGIN--具体操作SELECT a FROM TAB_1;.........END PRO1;15、控制语句的不同db2:IF …THEN ......ELSEIF THEN .... END IF;oracle:IF …THEN ......ELSIF THEN .... END IF;16、如何执行脚本SQL文件Oracle:@$PATH/filename.sql;DB2:db2 -tvf $PATH/filename.sql17、查看当前用户的表和视图DB2:LIST TABLESORACLE:SELECT * FROM TAB;DB2:DROP TABLE删除表和定义。
DB2和Oracle的区别
DB2和Oracle的区别DB2数据库的简介:DB2是IBM公司的产品,起源于System R和System R*。
他支持从PC到UNIX,从中小型机到大型机;从IBM到非IBM(HP及SUN UNIX系统等)各种操作平台。
他既可以在主机上以主/从方式独立运行,也可以在客户/服务器环境中运行。
其中服务平台可以是OS/400,AIX,OS/2,HP-UNIX,SUN-Solaris等操作系统,客户机平台可以是OS/2或Windows, Dos, AIX, HP-UX, SUN Solaris等操作系统。
数据库服务器DB2数据库核心又称作DB2公共服务器,采用多进程多线索体系结构,可以运行于多种操作系统之上,并分别根据相应平台环境作了调整和优化,以便能够达到较好的性能。
DB2核心数据库的特色(1) 支持面向对象的编程DB2支持复杂的数据结构,如无结构文本对象,可以对无结构文本对象进行布尔匹配、最接近匹配和任意匹配等搜索。
可以建立用户数据类型和用户自定义函数。
(2) 支持多媒体应用程序DB2支持大二分对象(BLOB),允许在数据库中存取二进制大对象和文本大对象。
其中,二进制大对象可以用来存储多媒体对象。
(3) 备份和恢复能力(4) 支持存储过程和触发器,用户可以在建表时显示的定义复杂的完整性规则(5) 支持的硅SQL查询(6) 支持异构分布式数据库访问(7) 支持数据复制Oracle数据库的简介:Oracle Database,又名Oracle RDBMS,或简称Oracle。
是甲骨文公司的一款关系数据库管理系统。
到目前仍在数据库市场上占有主要份额。
Oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。
不过,一般的中小型企业都比较喜欢用SQL数据库系统,它的操作很简单,功能也非常齐全。
只是比较oracle数据库而言,在处理大量数据方面有些不如。
DB2 与ORACLE的比对
DB2 vs ORACLEPK 11、数据类型转换函数2、Where条件弱类型判断oracle: where 字符型字段 in (整形) 是允许,DB2不允许select 'abc' from dual where '1' in (1) 在oracle下可通过select 'abc' from sysibm.sysdummy1 where '1' in (1) 在DB2下报错oracle:where 字符型字段=数字型字段允许,DB2不允许select 'abc' from dual where '1'=1 在oracle下可通过select 'abc' from sysibm.sysdummy1 whre '1'=1 在DB2下报错3、replace关键字oracle支持,DB2不支持 create or replace语句在DB2下是非法的4、子查询别名ORACLE 支持select * from(select 1 from dual) 或者 select * from(select 1 from dual) tDB2 支持select * from(select 1 from sysibm.sysdummy1) t 或者 select * from(select 1 from sysibm.sysdummy1) as t固兼容的写法是select * from(子查询) t5、DATE数据类型的区别ORACLE中DATE型也是带有时分秒的,但DB2下DATE只是年月日,如'2007-04-28',且可作为字符串直接操作,DB2中要记录时分秒必须采用TIMESTAMP型一个采用hibernate后常见的兼容问题是:如果在映射文件中定义了某个字段为Date型<property name="createTime" type="java.util.Date" ><column name="CREATE_TIME" length="7" /></property>则在DB2下,此字段必须定义为timestamp,而不能定义成DATE,不然会报出字符串右截断的错误对于DB2来说,在查询条件中可以直接用字符串指定日期或时间戳类型字段的值,例如 where create_date = '2007-04-26' 、where create_timestamp = '2007-04-26 08:08:08' ,无须使用字符串转日期函数6、分页的处理如果采用JDBC分页的话,注意rownum在DB2中不受支持,比如从masa_area表中取得area_id 最小的10条记录,语句分别如下,注意这里的别名t书写方法ORACLE: select t.* from (select rownum as r1 ,masa_area.* from masa_area order by area_id) t where t.r1<=10DB2: select t.* from (select rownumber() over() as r1 ,masa_area.* from masa_area order by area_id) t where t.r1<=107、decode函数decode函数在DB2不被支持,兼容的写法是采用case when8、NVL函数nvl写法在DB2不被支持,兼容的写法是采用coalesceORACLE: select NVL(f_areaid,'空') from masa_user 等同于 select coalesce(f_areaid,'空',f_areaid) from masa_userDB2: select coalesce(f_areaid,'空',f_areaid) from masa_user9、substr的不同DB2 substr举例如下:masa_group表的f_groupCode字段定义成VARCHAR(100),所以下面这个语句不会出错,如果是substr(f_groupCode,1,101)就出错了select * from masa_group where substr(f_groupCode,1,50) = '001006' order by f_groupcode在DB2下无错,但是select * from masa_group where substr('001006', 1, 50) = '001006' order by f_groupcode就报错,说第三个参数超限这是因为'001006'已经定义为一个长度为6的charater了这点和ORACLE有很大不同,请大家注意如果是要从第一位取到最后一位,稳妥的办法是不要加第三个参数ORACLE:select substr('123456',1) from dualDB2:select substr('123456',1) from sysibm.sysdummy1都没有问题10、获取操作系统当前日期ORACLE SysdateDB2 CURRENT DATEPK 21、创建PROCEDURE的参数的区别1)参数类型和参数名称的位置不同db2: CREATE PROCEDURE PRO1 (IN OrgID int)oracle:CREATE PROCEDURE PRO1 (OrgID IN int)2)同时作为输入输出参数的写法不同db2: CREATE PROCEDURE PRO1 (INOUT OrgID int) INOUT 连着写oracle:CREATE PROCEDURE PRO1 (OrgID IN OUT int) IN OUT 中间空格隔开,而且必须IN在OUT之前3)没有输入或输出参数时db2: CREATE PROCEDURE PRO1 ()oracle:CREATE PROCEDURE PRO1 不能有空的括号2、变量定义和BEGIN END体的位置不同db2中变量定义在BEGIN END体内,并且每个变量都要用DECLARE声明;存储过程结束时,END后跟P1,并且不需要分号oracle中变量定义必须在BEGIN END体外,变量都不需要用DECLARE 声明(有种说法是,第一个变量需要DECLARE,其他变量不需要);存储过程结束时,END后跟存储过程的名称,并且需要分号db2:CREATE PROCEDURE PRO1()LANGUAGE SQLP1: BEGIN--变量定义DECLARE INSERT_DATE TIMESTAMP;DECLARE ALLDEPT_NO VARCHAR(20);--具体操作SELECT a FROM TAB_1;.........END P1oracle: CREATE PROCEDURE PRO1IS--变量定义INSERT_DATE TIMESTAMP;ALLDEPT_NO VARCHAR(20);BEGIN--具体操作SELECT a FROM TAB_1;.........END PRO1;3、控制语句的不同db2: IF THEN ......ELSEIF THEN .... END IF;oracle: IF THEN ......ELSIF THEN .... END IF;4、异常处理的不同PK 3锁的对比1.Oracle通过具有意向锁的多粒度封锁机制进行并发控制,保证数据的一致性。
DB2_ORACLE数据库语法对比
1.db2 sql语句中计算两个日期相差的语法(1)timestampdiff(8,char(结束时间-开始时间) )(加时分秒计算,会舍去零数)值为744小时(2)(days(结束时间)-days(开始时间))*24 +hour(结束时间)-hour(开始时间) (不加时分秒计算)值为745小时(3)Days(结束日期)-days(开始日期)的值为31天(4)Day(结束日期)-day(开始日期)的值为1天(5)Hour(结束日期)-hour(开始日期)的值为1小时(6)假如开始日期为2012-09-09 10:00:00Month(结束日期)-month(开始日期)的值为1个月2.oracle sql语句中计算两个日期相差的语法结束日期为:2013-5-27 11:20:47开始日期为:2013-4-23 11:24:13(1)Trunc(开始时间)-trunc(结束时间)的值为34天(不加时分秒计算)(2)round(to_number(cast(结束日期 as date) - cast(开始日期 as date))) 的值为35天(加上时分秒计算进行四舍五入)(3)round(to_number(cast(结束日期 as date) - cast(开始日期 as date))*24) 的值为816小时(加上时分秒计算进行四舍五入)(4)round(to_number(cast(结束日期 as date) - cast(开始日期 as date))*24*60) 的值为48957分钟(加上时分秒计算进行四舍五入)3.Sql语句中db2和oracle 类型转换语法(以int转char为例)(PINT为int类型)Db2 语法为:CHAR(PINT)Oracle 语法为:CAST(PINT AS CHAR)4.查询前100条数据Db2 的语法为: FETCH FIRST 100 ROWS ONLYOracle 的语法为:where ROWNUM <= 100(在整体查询出来之后再加这个判断)5.修改字段类型的脚本:Db2的语法为:ALTER table TABLENAME alter column COLUMN1set data type VARCHAR(100);Oracle 的语法为:ALTER TABLE TABLENAME MODIFY PRIVILEGE VARCHAR(100);6.Oracle 中把时间字符串转换为时间类型的语法为:to_date('2013-04-29 15:50:54','yyyy-mm-dd hh24:mi:ss')to_date(to_char(2013-04-29 15:50:54,'YYYY-mm-dd'),'YYYY-mm-dd')7.把非空列改为可为空列Db2的语法为:ALTER TABLE TABLENAME ALTER COLUMN COLUMN1 DROP NOT NULLOracle 的语法为:Alter Table TABLENAME Modify COLUMN1 VarChar2(100) null8.oracle sql语句中应注意的语法:(1)给表起别名不能用 as 关键字(2)字段名 <> '值'不包括为null值的数据(3)字段类型为timestamp,在赋值的时候不能取时间.DATE()(4)检索出来的列名不能有重复(5)日期字符串必须转换成日期格式9.sql语句中当前时间Db2 语法为:currenttimestampOracle 语法为:sysdate10.随机获取n条记录Db2:order by rand() fetch first 100 rowsOracle:ORDERBY DBMS_RANDOM.VALUE 整体加上where rownum<=10011.db2中时间加上或者减去2个小时的语法为:db2语法为:时间+2 HOURSoracle语法为:时间+2/24。
db2和oracle中character类型
db2和oracle中character类型摘要:1.DB2和Oracle中Character类型的概述2.DB2和Oracle中Character类型的比较3.各自的特点和适用场景4.如何在实际工作中选择合适的Character类型正文:在数据库管理系统中,Character类型是一个重要的数据类型,用于存储字符数据。
本文将比较IBM的DB2和Oracle数据库管理系统中的Character 类型,分析它们的特点和适用场景,并探讨如何在实际工作中选择合适的Character类型。
一、DB2和Oracle中Character类型的概述1.DB2中的Character类型IBM的DB2数据库管理系统提供了多种Character类型,如VARCHAR、CHAR和NCHAR等。
这些类型用于存储定长或变长的字符数据。
其中,VARCHAR适用于存储变长字符数据,CHAR适用于存储固定长度的字符数据,NCHAR适用于存储Unicode字符。
2.Oracle中的Character类型Oracle数据库中也提供了多种Character类型,如VARCHAR2、CHAR 和NCHAR等。
这些类型与DB2中的对应类型类似,用于存储定长或变长的字符数据。
其中,VARCHAR2适用于存储变长字符数据,CHAR适用于存储固定长度的字符数据,NCHAR适用于存储Unicode字符。
二、DB2和Oracle中Character类型的比较1.数据长度限制DB2中的Character类型有长度限制,如VARCHAR(n)和CHAR(n),其中n为固定长度。
Oracle中的Character类型也有长度限制,如VARCHAR2(n)和CHAR(n)。
2.存储方式DB2中的Character类型数据采用UTF-8编码方式存储,而Oracle中的Character类型数据采用UTF-16编码方式存储。
3.类型转换在DB2中,可以使用CAST()函数或CONVERT()函数进行数据类型转换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库功能
功能点
DB2
Oracle
点评
平台支持
支持主流的操作系统,包括通用Unix系统(包括AIX、Solaris、HP Unix)、Windows和Linux操作系统,有实际项目使用。
支持各主流平台
不支持HP ITANTIUM处理器,不能有效保护HP小型机用户的既有投资
数据库服务器系统参数允许进行动态设置,不须重启系统
支持
支持
性能
(OLTP、OLAP)
支持基于成本的数据库优化器
单机非集群架构TPC-C测试DB2居榜首
保持开放平台下的TPC-D和TPC-C的记录
性能并非简单得根据TPC的测试结果来比照,我们应当更多地分业务场景来看问题,但无论在哪种应用场景下,DB2都有信心取得比我们的友商更优异的性能表现
支持联机、脱机、增量备份,可以通过购买
Goldengate实现数据库间的复制
能够方便地实现数据同步、数据迁移等功能模块
技术支持
DB2信息中心提供了完整的DB2技术文档,技术支持网站developerworks提供了大量与IBM产品相关的技术文档,从入门级教程到高级调优文档,内容丰富详尽,另外IBM提供7×24的技术支持热线,帮助客户随时随地解决问题,同时IBM还可根据客户需要派出技术工程师协助客户提供现场技术服务
支持
部分支持,不支持多维集簇索引
支持使用索引替代排序技术,在各种排序语法当中都能够使用合适的索引消除排序操作,大幅度减少资源消耗和提高查询效率
支持,绝大部分场景和语法当中都支持使用索引优化排序
支持,但在极少数情况下可使用索引替代排序操作
支持数据高速加载和卸载
支持
支持
支持数据库级的数据字典压缩。各种压缩对象使用统一的压缩技术,并在各种DML语法当中都能保证稳定的压缩率
支持,数据压缩率达60%~90%
支持,使用多种压缩技术的结合,不同技术针对不同的场景有不同的压缩率
数据库大小
应用案例数据库中TB级数量很普遍
应用案例数据库中TB级数量很普遍
均为企业级应用数据库
复制、备份及恢复能力
支持实时异步数据表、事务日志复制,具有联机和脱机备份、增量备份与恢复功能,拥有CDC数据复制,有非常丰富的数据备份、恢复以及超高速导入导出工具
性能
支持基于成本的数据库优化器
支持,拥有成熟度极高的查询优化器
支持CBO,但有时需要使用SQL语句的hint来保持优化器的稳定性
支持SQL引擎级别的语句重写技术,保证所有语句都经过改写,有效提高语句执行效率
支持
不支持引擎级别的查询重写,仅通过物化视图MV支持
支持多种索引技术,包括集簇索引、多维集簇索引、包含索引、双向索引、动态位图索引,有效提高查询效率
技术支持网站metalink,包含巨量的以往案例,一般出现的错误均能找到先例及解决方法。
调优及排错
DB2智能调优器性能最优,能够基于系统情况生成最优的查询计划,用户能够尽量关注业务实现。DB2所有的错误在网上可以通过DB2信息中心查询
可以使用多种调优方法。比如
可以利用hint指定oracle采用较好的执行计划,指定索引。
支持,通过Transparent Gateway访问异构数据源
提供在SQL语句中直接调用消息中间件参数进行数据传输
支持
不支持
高可用性
支持高并发访问
支持双机热备
支持HADR技术
支持pureScale共享磁盘体系架构实现负载分担以及高可用
支持高并发访问
支持双机热备
支持RAC
支持dataguard
支持
flashback(恢复人为错误)
有非常完善的动态性能视图可以辅助调优。出现问题一般均容易在网上找到先例。
数据迁移
DB2从9.7开始全面兼容ORACLE语法,IBM中国实验室有专门的数据库迁移团队支持客户的数据库应用迁移工作,保证用户的业务不受迁移影响
总体评价:Oracle资源较为丰富、用户群较多、调优排错较为方便。DB2作为一款成熟的数据库系统,能够很好地适应OLTP和OLAP各种不同的场景,性能最佳,扩展性好,实施风险最小。
不支持,Oracle使用CLOB存储,效率一般。
支持Xpath、Xquery、SQLX规范,支持SQL与Xquery的事务级混合查询,实现XML文档的输入和输出的数据库本地支持
支持,使用专有的XML引擎对XML类型的数据进行访问,提供了高速、灵活的访问
部分支持
通过联邦数据库访问异构数据源
支持,DB2通过联邦服务器访问异构数据源
不支持
支持联机和脱机备份与恢复、增量备份、支持表空间级备份技术
支持
支持
提供基于数据库日志的实时数据复制能力,保证关键应用的快速切换接管的能力以及业务生产和报表查询的分开处理能力
支持,DB2的HADR提供整个数据库的实时复制,提高业务系统的高可用和实现数据库的容灾
支持,Oracle的Dataguard实现数据库的容灾。
支持
支持
数据库支持纯XML存储方式,无需采用BLOB/CLOB存储,也无须采用解析拆分XML的复杂方式。能为XML类型提供核心索引和层次型存储,XML索引的定义与关系型索引定义一样简单直接,能定义多个XML索引。
支持,DB2 PureXML使用专用的XDA空间存储结构化XML数据,原生态的层次存放保证了高效的访问
ORACLE的许多功能都是使用其私有的,非开放性的技术。例如:ORACLEPL/SQL语言是ORACLE私有的。其存储程式语句也不符合ANSISQL及ISOSQL的标准,客户机/服务器的编程接口,ORACLE的SQL*NET也不是根据标准定义的
支持Web Services技术,内置支持consumer(消费者)和provider(提供者)两种方式
高可用性
支持对称多处理器(SMP)结构
支持
支持
多机共享储存设备的集群结构(Cluster)
支持,通过DB2 pureScale共享磁盘体系架构实现负载分担以及高可用
支持,通过ORACLE的RAC实现
由光纤高速开关连接的多台服务器组成的大规模并行结构(MPP)
支持,通过无共享share nothing体系架构实现对OLAP的支持,有效提升分析型数据库的性能