oracle enterprisedb 兼容 到底怎样

如题所述

  在位于英国牛津附近的企业性能中心(Enterprise Performance Enter),EnterpriseDB 数据库性能专家们对EnterpriseDB企业的性能进行了优化,使其运行速度比EnterpriseDB基础版(PostgreSQL)快50%以 上。因此,能过EnterpriseDB我们可以获得一个具有高度可扩展性的数据库解决方案,该解决方案极其经济高效,令同类产品无法企及。实际上,许多 客户反映,将其现有针对 Oracle 数据库的应用程序迁移到 EnterpriseDB 数据库后,应用程序性能与基于 Oracle 数据库运行的同样的应用程序相同,甚至更快。
  SQL语义兼容

  EnterpriseDB 数据库与 Oracle 数据库能够相互兼容的基础在于,前者能够识别和准确执行用 Oracle SQL 语言表示的数据库查询。另外,EnterpriseDB 数据库支持与 Oracle 数据库相同的数据类型、函数和变量,并可解决 Oracle 数据库与 EnterpriseDB 数据库在处理字段别名、公共同义词、序列以及 DUAL 表方面的不兼容问题。如:
  数据类型
  CHAR、VARCHAR、VARCHAR2、NUMBER、CLOB、BLOB、DATE等
  数据库函数
  TO_CHAR、TO_DATE、SYSDATE、DBMS_XXX等
  字段别名
  与Oracle相同,在EnterpriseDB企业版中设定"字段别名"时可心省略"AS"关键字
  SEQUENCE序列
  与Oracle相同,可通过seq_name.CURRVAL 和 seq_name.NEXTVAL进行操作
  DUAL表
  EnterpriseDB企业版支持DUAL表,与Oracle数据库实现SQL语句兼容
  等等……

  PL/SQL过程语言兼容
  EnterpriseDB企业版包括一种称为 EDB-SPL 的过程语言,该语言与 Oracle 的 PL/SQL 过程语言相匹配。与 PL/SQL 类似,SPL 是一种高效、块状结构的过程编程语言,可用于编写自定义过程、函数和触发器。EnterpriseDB SPL 和 Oracle PL/SQL 之间极大的相似性还使 EnterpriseDB企业版数据库能够支持 Oracle 式的过程包、函数或变量。
  
  块结构
  与 PL/SQL 一样,SPL 过程、函数和触发器具有同样的块结构。一个块由最多三部分组成 - 一个可选的声明部分、一个强制可执行程序部分以及一个可选的异常部分。一个块至少必须有一个可执行程序部分,该部分包含一个或多个介于关键字 BEGIN 和 END 之间的过程语句。
  
  数据库包
  EnterpriseDB企业版数据库支持 Oracle 式的数据库包。包是一种构造,用于构建可复用代码和采用面向对象的设计技术。包是一组通过数据库中通用包名称来识别的相关数据库对象的集合。这些数据库对象包括过程、函数和变量。
  与Oracle数据库一样,EnterpriseDB企业版数据库包有以下两个主要部分组成:
  ● 包规范:这是包含公共过程、函数和变量的公共接口,这些过程、函数和变量可以在包外由其他程序和应用程序引用。
  ● 包体:包体包括在包规范中声明的过程和函数的实施逻辑,以及对不能由包以外的其他程序和应用程序访问的私有变量、过程和函数的声明以及逻辑。
  过程
  EnterpriseDB SPL 中的过程与 Oracle PL/SQL 中的过程使用方式相同。过程是一些可作为单独程序语句调用的程序。调用的时候,过程可以有选择地以输入参数的形式接收来自调用程序的值,并有选择地以输出 参数的形式向调用程序返回值。通过在 EnterpriseDB 数据库中输入过程代码,可将过程存储到数据库中。然后,可以通过其他程序调用该过程。
  函数
  EnterpriseDB SPL 中的函数与 Oracle PL/SQL 中的函数使用方式相同。函数是可作为表达式调用的程序。计算完成后,函数会返回一个值,该值在该函数所嵌入的表达式中被替代。函数可以有选择地以输入参数 的形式采用来自调用程序的值。除了返回值以外, 函数还可以有选择地以输出参数的形式向调用程序返回其他值。然而,在函数中使用输出参数并非一种值得提倡的编程方法。函数可用于语句中任何会出现表达式的 地方。
  触发器
  EnterpriseDB SPL 中的触发器与 Oracle PL/SQL 中的触发器使用方式相同。触发器是一个代码块,该代码块具有给定的名称,与表相关联,被存储在数据库中。当发生某些针对表的事件时,代码块即被执行。当代 码块被执行时,即形象地称触发器被"触发"。
  与 Oracle 数据库类似,EnterpriseDB企业版支持行级触发器和语句级触发器。对于受触发事件影响的每一行,行级触发器将被"触发"一次。与此相对应,对于每条触发语句,语句级触发器将触发一次,而无需考虑受触发事件影响的行的数量。
  和 Oracle 数据库一样,对于语句级触发器,可以在触发语句之前或之后由 EnterpriseDB企业版执行触发器代码块,对于行级触发器,可以在受触发事件影响之前或之后由 EnterpriseDB企业版执行触发器代码块。
  匿名块
  在 EnterpriseDB企业版数据库中,过程代码块可以像在 Oracle 数据库中一样,被方便地执行。这类代码块称为匿名块。匿名块是未命名的,并且未被存储在数据库中。可以从应用程序缓冲区执行和删除匿名块,除非重新在应用 程序中输入块代码,否则匿名块不可被再次执行。对于快速、一次性程序(如测试程序),匿名块非常有用。
  数据词典视图
  EnterpriseDB企业版提供了针对其数据词典的视图,这些视图与通常使用的 Oracle 数据词典视图非常像。这些视图使熟悉 Oracle 数据库的数据库管理员和开发人员能够快速查找词典信息,而无需了解新的数据词典格式。
  SQL*Plus工具兼容
  EDB*Plus是一个工具程序,它提供一个命令行方式的用户界面,用于访问 EnterpriseDB企业版。在EDB*Plus中,可以使用标准SQL命令,SPL匿名代码块,和EDB*Plus命令。EDB*Plus 命令与Oracle 的SQL*Plus命令兼容,并且提供各种功能,包括:
  ● 查询某些数据库对象
  ● 执行存储过程
  ● 对SQL命令的输出结果进行格式化
  ● 执行批量处理脚本
  ● 记录输出

  SQL*Load快速写入兼容
  EDB*Loader的一些特性可以改善加载文本文件(text)到数据库的性能。EDB的标准加载命令是"COPY",但是它有一些重要的限制使得加载的时间明显增加。
  第一个限制就是"COPY"命令不能处理固定长度格式的文件(fixed width file formats)。但是许多文件都是这种格式的,要使用EnterpriseDB数据库,这些文件就必须被转换成不受限制的文件格式,这就导致了文件从底层被重写了两次。
  另一个主要的限制就是"COPY"命令缺少错误处理机制。当使用"COPY"命令时,如果要加载文件中的某一行是不合法的,则所有的行都将被抛弃,并且整个文件都要被重新加载。
  EDB*Loader可以将不合法的记录转移到discard文件中,从而使得发生错误时,整个文件的处理仍可继续。这样用户可以在批量加载处理完成后,单独地检查discard文件中的问题数据。
  然而,EDB*Loader最具戏剧性的功能还是它的直接路径加载(Direct Path load),直接路径加载忽略了影响批量处理性能的大量处理步骤,因此性能更好,但它也需要遵循完整的原子性操作,也即要么全做,要么一点也不做。
  直接路径加载利用控制文件中定义的列的描述信息来解析输入的行,然后将文件中的数据转换为列的数据类型,并创建一个内部数据结构。之后,这个数据结构将直 接被格式化成EnterpriseDB数据库的数据块。新创建的块又直接写入到数据目录中,从而略过了许多处理过程,因此能够更快地加载。
  

  Copy加载和直接路径加载对比

  DBLink链接兼容
  一个数据库链接(Database Link)定义了从一个数据库服务器到另一个数据库服务器的通信信道。使用数据库链接的好处是:它允许用户能够访问一个远程数据库的对象,这样,该用户便被绑定到远程对象的用户权限集中。
  数据库链接同时也是分布式数据库的基础,应用程序可以同时访问分布式环境中的多个数据库。例如,一个客户端可以从本地库中发起一个简单的查询,而连接远程数据库的表。数据库的位置和使用的平台对于客户端应用程序来说是透明的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-10
北京元鼎时代做oracle服务,可以帮你解答
相似回答