`
2277259257
  • 浏览: 525666 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle数据库10个小问题

 
阅读更多

Oracle数据库10个小问题

 

1、自增长字段

很多人从别的数据转来使用Oracle时,会发现Oracle的数据类型里没有自增长字段类型,而像mysql,sqlserver,db2等主流数据库都有对应的自增长字段类型,Oracle的官方解决方案是采用sequence实现,sequence比较灵活,可以指定增长间隔等参数,虽然最终可以实现与其它数据库一样的效果,但是本来一个简单的数据类型可能解决,在Oracle却需要增加一个sequenceinsert的时候还需要用sequence.nextval才行,这个地方感觉特不方便,为了兼容Oracle数据库很通用系统还不得不自己设计自增长字段解决方案,比如增加一张专用表来保存自增长字段的表和字段名,每次新增记录时都把这个记录值加1再取出使用。

2、安装

Oracle的安装是出名的复杂,特别是在非windows系统中,在网上可以找到遍地的Oracle安装文档,但依然有很多人花了大量时间才安装成功,如果要搭建rac系统,那就更复杂了。我们也看到Oracle公司也一直在降低安装的复杂度,11g的安装已经比8i,9i方便了一些。最让人费解的是Oracle非要搞一个java的安装界面,很多朋友都是因为java图形化界面的问题安装失败。我想Oracle是认为java的跨平台特性,选择了用java开发安装程序以统一界面,这样也不用开发多套软件,但是有没有发现我们在安装完后,服务器上使用Oracle数据库大部份管理都是命令行,几乎就没用到过图形化界面了。 Oracle安装其实可以做得更简单,操作系统变量及环境变量安装程序应该可以自动处理,软件包依赖检测可以人性化提示。在非windows系统上图形化是为了更方便安装,但是我感觉Oracle这图形化界面如果启动了我基本上也是点next,安装好了,库建好了再来修改相关参数。

3、外连接

外连接(left join ,right join,full join)SQL标准语法中就有明确的定义,但是Oracle的语法确与标准完全不同,这个是历史原因了,没有左连接与右连接的概念,也不支持全外连接,Oracle语法如下所示:select * from t1,t2 where t1.id=t2.id(+)

采用(+)来表示外连接,但是大部份人第一眼会认为这是一个右连接的语法,其实在Oracle中它相当于左连接,我直到现在还有时会搞错左右。好在Oracle9i中增加了标准外连接的语法支持。但是现在用Oracle数据库的人SQL大部份还是采用传统的语法,主要原因可能是传统语法已经习惯,传统语法更好用提示优化,SQL标准语法成熟度不够且还存在一些BUG等等。

4VARCHAR2类型

VARCHAR2这名字,还以为有新的VARCHAR类型,其实在Oracle中就这一种变长字符类型,为什么叫VARCHAR2我也不清楚,也许是历史原因吧,在Oracle也可以使用VARCHAR,但是VARCHAR只是VARCHAR2的一个同义词,而且在官方文档中还建议大家都用VARCHAR2,真是不明白了。

VARCHAR2类型的最大长度到11g中还是4000字节,这个上限不知道为什么这么小,很多需求都会超过4000,只能使用lob来管理,但是Oraclelob比较复杂,性能也不好,所以有些系统甚至在一个表建多个varcahr2(4000)的字段来表示一个字段的内容。而其它数据库varchar类型的最大长度都比4000大,有8K,32K,还有64K的。

5NUMBER类型

10g以前NUMBER类型是Oracle唯一数值类型,可以用来表示整数和小数,范围也足够我们使用,Oracle也支持INTEGER语法,但是INTEGER只是NUMBER的一个同义词,不明白Oracle为什么没有专用的整数类型。NUMBER类型很灵活,但是存储空间很大,性能也不好,如果用4字节可以表示的整数,用NUMBER平均需要6字节存储,如果采用number类型做指数或对数运算,与标准的浮点数性能可能会相差50倍。好在Oracle10g中增加了高效的浮点类型binary_float,binary_double,从而弥补了浮点数性能的问题。Oraclepl/sql语法中有专用的整形pls_integer,但是pls_integer不能做为字段的类型。

6DATE类型

Oracle主要有两种日期类型,datetimestamp,从词面看以为是date表示日期,timestamp可以存储时间,但是实际是date类型可以表示日期和时间,timestamp可以存储更高精度的时间,为什么date不叫datetime算了,Oracle没有只保存日期的类型,如果我们的数据仅要保存日期,那2-4个字节就可以搞定了,但Oracledate类型需要7个字节存储。

7、物化视图

materialized viewOracle官方文档中好像是翻译为实体化视图,物化视图是国内的通用叫法。一提起视图脑海里立即会认为这只是视图的一种类型,在数据库中也只是一些定义,但是实际上materialized view与普通视图关系不大,它更像是一个表,它是保存了实实在在的数据,并且可以与表一样定义存储参数,可以与表一样使用(select,insert,update,delete)。在其它数据库中也有和物化视图相似的解决方案,DB2叫物化查询表(materialized query table),sqlserver有索引视图,但是索引视图仅是起优化作用,与oracle的物化视图还不太一样。

8、用户与SCHEMA

schema的概念在很多数据库之间都没有统一的定位,有些数据库可以有多个database,每个database下面有多个schema,Oracle中的schema有点怪怪的,因为Oracle只有一个database的概念,所以schema就与其它数据库中的database有点类似,我们一般理解是schema(database)与用户没有直接关系,schema是逻辑概念,user是为了安全认证,只与权限有关,但Oracle用户与schema关系与其它数据库不一样,一个用户就对应一个schema,且不能更改,而且对schema的权限管理不方便,比如想让某个user可以访问另一个schema所有对像的权限就很麻烦。这种设计也是oracle特有的,估计Oracle也不会去改变。

9、客户端

装个客户端,给我个几百M大小的软件,有这么复杂吗,还有,为什么客户端安装好了还要做什么TNS配置,我直接提供数据库连接信息 (ip+port+dbname)不行吗。OracleTNS配置确实让开发人员头痛了很久,特别是那种要把C/S软件发布给客户端使用的场景,本来安装客户端就不方便,还要配置TNS,故障诊断时总是要检查一下TNS是否配置正确,不小心选错了TNS名连错了数据库导致误删除了数据的情况也时有发生。因为客户端软件的庞大,有些人还专门制做了只有几M或几十M的简易客户端安装软件,还有人开发了不需要客户端的插件,可以集成在软件里发布,可见Oracle的客户端安装配置不是一般人能接受的。好在现在很多应用都是B/S系统了,Oracle SQL DEVELOPER也不需要配置客户端,用jdbc连接Oracle仿佛世界清静了许多。

10、管理及开发工具

大部份数据库系统都会有一个比较官方全面的数据库管理工具,尤其是微软的产品,但是Oracle发展到现在自身的管理工具还是没有定型,8i用企业管理器,9iJAVA重写了,10gWEB重写了,现在11g官方推荐用Oracle SQL DEVELOPER做开发,用B/S架构的OEM做管理与监控。对于Oracle官方的开发管理工具,一直认为太不专业了,远没有其它第三方面工具好用,plsql developertoad应该是Oracle管理及开发人员用得最多的工具,其次就是sqlplus了。Oracle SQL DEVELOPER采用JAVA开发,很强大,可以用JDBC连接管理任何数据库,但是还是不专业,使用起来不方便。10gOEM有一些公司开始用了,它的监控功能应该还是不错的,但是不能做开发管理,这个是产品定位的问题了。期待有一天Oracle能有一个像SQL SERVER那个强大的开发及管理工具。

 

以上说的是个人认为Oracle一些不爽的地方,从9i11g也可以看出Oracle在增强功能以外,系统易用性,数据类型性能方面一直在改进,但是还有很多提高的空间。这些并不影响Oracle成为当前最先进的关系型数据库系统,它的并发处理机制,锁管理,数据字典,性能监控与统计,提供多种优化方法,在线管理,RAC高可用性架构等地方是其它数据库短时还无法超越的。

分享到:
评论

相关推荐

    《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf

    《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle...

    Oracle数据库课程设计医院系统数据库源代码.zip

    Oracle数据库课程设计医院系统数据库源代码。包含Java代码和SQL语句。源码中默认使用的数据库为运行的Oracle数据库 如需修改,在java源码/database.propertie中修改即可!Oracle数据库课程设计医院系统数据库源代码...

    Oracle数据库字符集问题解析.pdf

    "Oracle数据库字符集问题解析" Oracle 数据库字符集问题解析是 Oracle 数据库管理系统中一个非常重要的问题。字符集是创建数据库时设定的,在创建后通常不能更改。因此,字符集的设定是个非常关键的问 题,如果...

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    2. 提供oracle数据库dba日常管理方法。 3. 掌握oracle数据库体系机构,为oracle优化奠定基础。 三、适合人群: 1.有意从事oracle 数据库工作,担任dba角色的人员; 2. Oracle数据库设计、开发和备份等管理人员; ...

    DBeaver oracle数据库驱动

    DBeaver与Oracle数据库的结合使用,通过配置和使用正确的JDBC驱动,为数据库的管理和维护提供了一个强大的工具。无论对于开发人员还是数据库管理员,能够灵活地操作和管理Oracle数据库都是极其重要的技能。

    Veeam 备份恢复oracle数据库详细配置文档

    Veeam 备份恢复 Oracle 数据库详细配置文档 本文档旨在详细介绍如何使用 Veeam 备份恢复 Oracle 数据库的配置过程。该文档将指导读者从环境准备到推送 Oracle RMAN Plugin,再到创建备份作业和运行备份作业,最后...

    ORACLE数据库中文显示乱码问题的解决

    ORACLE数据库中文显示乱码问题的解决,系统中ORACLE数据库在安装后不能正确显示中文,而是显示为'???'等此类乱码。他人总结分析的内容,可以参考下。

    易语言连接Oracle数据库

    易语言连接Oracle数据库时,主要依赖两个关键组件:数据库连接和记录集。数据库连接组件用于建立与Oracle数据库的物理连接,而记录集组件则负责在程序中操作数据,如查询、插入、更新和删除记录。 1. 数据库连接...

    Oracle数据库基础教程课后习题答案

    Oracle数据库基础教程课后习题答案是《Oracle数据库基础教程》的配套习题答案,涵盖Oracle 10g的基础知识点。本资源对Oracle数据库的逻辑结构、物理结构、内存结构、事务处理、安装和卸载、数据库管理、配置和维护...

    Oracle数据库大作业

    总的来说,这个“Oracle数据库大作业”是一个综合性的学习资源,涵盖了数据库设计理论、实践操作和问题解决,对于想深入了解Oracle数据库在实际项目中应用的学生或者开发者来说,是非常有价值的参考资料。...

    Oracle数据库转Mysql数据库

    Oracle 数据库转换为 Mysql 数据库是指将 Oracle 数据库中的数据和结构转换为 Mysql 数据库中,整个过程涉及到多个步骤,包括数据库设计、数据类型转换、sequence 实现等。下面将详细介绍 Oracle 数据库转换为 Mysql...

    Oracle数据库体系结构( 中文详细版)

    10. **进程**(Processes):Oracle数据库运行时涉及多种进程,如数据库服务器进程(DBWn)、检查点进程(CKPT)、日志写入进程(LGWR)、系统监控(SMON)和进程监控(PMON)等,它们协同工作以保证数据库的正常...

    oracle数据库日志查看方法

    Oracle数据库是企业级应用中广泛使用的数据库管理系统之一,为了确保数据库系统的稳定运行和快速定位问题,掌握Oracle数据库日志查看方法至关重要。本文将详细介绍如何查看Oracle数据库中的各种日志文件,并提供具体...

    查看登录oracle数据库用户记录.docx

    Oracle 数据库是一个强大的关系型数据库管理系统,提供了强大的数据存储和管理功能。为了管理和监控数据库的访问情况,需要对登录 Oracle 数据库的用户记录进行跟踪和查看。本文将介绍如何查看登录 Oracle 数据库的...

    Oracle数据库升迁时字符集问题的解决.pdf

    这个问题的解决需要了解 Oracle 数据库升迁过程中的字符集问题,并掌握 Export 和 Import 命令的使用方法。 在 Oracle 数据库升迁过程中, 字符集问题最主要的原因是 Oracle 数据库系统升迁时的字符集转换问题。...

    access数据库MDB数据文件导入oracle数据库操作步骤.pdf

    Access 数据库 MDB 数据文件导入 Oracle 数据库操作步骤 Access 数据库 MDB 文件是 Microsoft Access 应用程序的数据库文件格式,而 Oracle 数据库是关系数据库管理系统。将 Access 数据库 MDB 文件导入 Oracle ...

    如何连接oracle数据库及故障解决办法

    连接 Oracle 数据库是每个开发者和数据库管理员都需要掌握的基本技能,但是很多人在连接 Oracle 数据库时都会遇到各种问题,本文将详细介绍如何连接 Oracle 数据库及故障解决办法。 首先,在连接 Oracle 数据库之前...

    Oracle数据库系统应用与开发

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它在企业级数据管理和应用程序开发中扮演着核心角色。本资源“Oracle数据库系统应用与开发”深入探讨了Oracle数据库的使用和开发技术,特别关注...

    Oracle数据库资料大全

    Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗、政府等多个领域得到广泛应用。本资料大全将围绕Oracle数据库的核心概念、管理和优化等方面进行深入探讨。 一、Oracle数据库基础 Oracle数据库系统基于...

Global site tag (gtag.js) - Google Analytics