`
maincoolbo
  • 浏览: 527317 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于oracle 的10 个 常见问题

阅读更多

1、自增长字段

很多人从别的数据转来使用Oracle时,会发现Oracle的数据类型里没有自增长字段类型,而像mysql,sqlserver,db2等主流数据库都有对应的自增长字段类型,Oracle的官方解决方案是采用sequence实现,sequence比较灵活,可以指定增长间隔等参数,虽然最终可以实现与其它数据库一样的效果,但是本来一个简单的数据类型可能解决,在Oracle却需要增加一个sequence,insert的时候还需要用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等等。

4、VARCHAR2类型

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

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

5、NUMBER类型

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

6、DATE类型

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

7、物化视图

materialized view在Oracle官方文档中好像是翻译为实体化视图,物化视图是国内的通用叫法。一提起视图脑海里立即会认为这只是视图的一种类型,在数据库中也只是一些定义,但是实际上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)不行吗。Oracle的TNS配置确实让开发人员头痛了很久,特别是那种要把C/S软件发布给客户端使用的场景,本来安装客户端就不方便,还要配置TNS,故障诊断时总是要检查一下TNS是否配置正确,不小心选错了TNS名连错了数据库导致误删除了数据的情况也时有发生。因为客户端软件的庞大,有些人还专门制做了只有几M或几十M的简易客户端安装软件,还有人开发了不需要客户端的插件,可以集成在软件里发布,可见Oracle的客户端安装配置不是一般人能接受的。好在现在很多应用都是B/S系统了,Oracle SQL DEVELOPER也不需要配置客户端,用jdbc连接Oracle仿佛世界清静了许多。

10、管理及开发工具

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



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


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yzsind/archive/2010/06/16/5674275.aspx
分享到:
评论

相关推荐

    Oracle 10g常见问题精选

    Oracle 10g常见问题精选

    win7 oracle10g常见错误

    Oracle 10g 在 Win7 平台常见错误解决方案 Oracle 10g 是一种流行的关系数据库管理系统,在 Windows 7 平台上安装 Oracle 10g 可能会出现一些常见错误,本文总结了一些常见错误的解决方案。 一、检查操作系统版本...

    安装 oracle10g 常见错误

    在进行Oracle 10g数据库在Linux环境下的...综上所述,在Linux环境下安装Oracle 10g的过程中,需要注意多个方面的问题。通过仔细准备并遵循上述建议,可以有效避免或解决常见的安装错误,顺利完成Oracle 10g的部署工作。

    ORACLE常见问题集锦

    以下是一些关于Oracle常见问题的详细解答: 1. Oracle安装完成后,系统中预设了一些默认的用户名和密码,例如: - internal/oracle - sys/change_on_install - system/manager - scott/tiger - sysman/oem_...

    oracle常见问题1000个

    ### Oracle常见问题解析 #### 一、Oracle安装后的初始口令 - **Internal**: `internal` - **OracleSys**: `sys/change_on_install` - **System**: `system/manager` - **Scott**: `scott/tiger` - **Sysman**: `...

    oracle的1000个常见问题

    本资源“Oracle的1000个常见问题”旨在为Oracle数据库的使用者提供详尽的解决方案,涵盖了从基础操作到高级技术的各种问题。 1. **基础操作**:Oracle数据库的基础操作包括安装配置、启动停止数据库服务、创建和...

    Oracle连接常见问题

    Oracle连接常见问题 Oracle连接常见问题

    Oracle面试常见问题.doc

    Oracle 面试常见问题 Oracle 面试常见问题是数据库维护人员和开发人员的必备知识,涵盖了 Oracle 数据库的各种常见问题和解决方案。 1. 冷备份和热备份的不同点及各自的优点 冷备份指在数据库关闭后进行备份,...

    oracle常见问题集锦

    oracle常见问题集锦oracle常见问题集锦

    oracle dba面试 常见问题

    oracle dba 面试,常见题,大家看看,照这个提纲整理下思路

    oracle_常见故障处理

    oracle_常见故障处理.startup mount alter

    Oracle数据库的常见问题及解决方法

    以下是一些常见的Oracle数据库问题及其解决方法: 1. 导入.dmp文件:Oracle数据库的备份通常是以.dmp格式存储的。要导入这些文件,首先需要创建一个表空间,如`logdatafile`,然后创建一个用户,如`log`,指定其...

    Oracle数据库常见问题诊断

    Oracle数据库常见问题诊断 Oracle数据库是目前最流行的关系数据库管理系统之一,但是在实际应用中,会出现一些常见的问题,这些问题可能会影响数据库的性能和稳定性。以下是Oracle数据库常见问题诊断中的一些典型...

    oracle的各种常见问题和使用技巧

    2. **oracle常见错误代码的分析与解决.doc**:Oracle数据库在运行时可能会遇到各种错误,每个错误都有特定的错误代码。此文档应详尽解析了这些错误代码,帮助用户快速定位问题并找到解决方案。 3. **oracle数据仓库...

    ORACLE DB数据库常见问题解决及诊断技巧集锦-ORACLE DBA故障修复必备手册.zip

    本手册针对Oracle DB的常见问题进行深入解析,旨在帮助DBA们快速定位并修复故障。 手册内容可能涵盖以下几个核心领域: 1. **性能优化**:性能问题是数据库管理中的常见挑战。可能涉及SQL查询优化、索引策略调整、...

    ORACLEDB数据库常见问题解决及诊断技巧集锦-ORACLEDBA故障修复必备手册汇编.pdf

    ORACLEDB数据库常见问题解决及诊断技巧集锦-ORACLEDBA故障修复必备手册汇编.pdf

    oracle迁移达梦常见问题汇总

    本文主要结合之前一次oracle迁移达梦的项目,将碰到的问题以及一系列踩过的坑列举出来供大家参考,数据库版本是达梦7。(本文中涉及到的部分对象名已用sch1,tab1等方式替换) 1、整体情况 迁移过程中失败任务数低于5%...

    Win7下安装Oracle 10g常见错误解决

    综上所述,通过对`refhost.xml`和`oraparam.ini`文件的适当修改以及手动配置虚拟网卡,可以有效解决在Windows 7环境下安装Oracle 10g时遇到的常见问题。这些方法不仅有助于提高安装成功率,还能保证数据库系统的稳定...

Global site tag (gtag.js) - Google Analytics