作者:Lewis Cunningham
Oracle 数据库 XE 并不一定只对新手、学生、业余爱好者或小型企业具有重要价值 - 它在许多其他情况下同样很有吸引力。
2006 年 3 月发布
除非您根本不看新闻,否则很可能听说过 Oracle 数据库 10g 特别版 (XE) 的生产版本 - 一个适合 DBA 和开发人员使用的免费入门级数据库。该版本是 Oracle 的一个真正具有历史意义的版本。
但 Oracle 数据库 XE 并不一定只对新手、学生、业余爱好者或小型企业具有重要价值;它在许多其他情况下同样很有吸引力。它将为 DBA、开发人员以及分析人员处理其日常工作提供很大的帮助,无论其企业规模如何。
具体而言,如果您是一位 DBA,并且用户想要在您的数据库中演示“假定分析”方案,则可以通过 Oracle 数据库 XE 创建一个用于向用户提供数据的策略,这种情况下 Oracle 数据库 XE 的作用将发挥到及至(并且对服务器的影响最小)。部署该产品还可以解决下载和安装开放源代码数据库的用户或开发人员所遇到的常见问题(该问题为您带来了很 多维护、支持和安全性难题)。
如果您是一位渴望学习“DBA”任务或只需要 R&D 数据库来试用一些新功能的开发人员,或者如果您只是苦于应用程序需要伸缩时所遇到的开放源代码不兼容和移植问题,那么 Oracle 数据库 XE 将是您最佳的替代产品。
最后,如果您是一位需要进行“假设分析”但在您所选择的数据仓库或应用程序中无法执行所需操作的业务分析人员,那么 Oracle 数据库 XE 可以使用电子表格和模型,使您可以安全、可靠地访问所需数据。
本文将概述 Oracle 数据库 XE 为以上三个角色提供帮助的某些明显和不太明显的方法。但在开始前,必须先了解一下 Oracle 数据库 XE 的固有限制。
限制条件
为了使该版本易于安装(例如,通过标准 Windows 安装程序进行安装)、配置和维护,Oracle 对该产品进行了某些限制。
第一个限制是内存 - Oracle 数据库 XE 仅支持 1GB RAM。但由于提供 1GB 内存的计算机相对较少(尤其是在小型企业中),因此该限制将主要影响可以同时访问数据库的用户数量,并在达到这些限制时在多大程度上影响数据库的性能。大 多数情况下,由于 Oracle 数据库 XE 将部署在一个用户桌面或一个小型工作组服务器,因此 1GB 内存绰绰有余。
第二个限制是 XE 将只使用一个 CPU。这并不 意味着它不会执行多个任务,也不意味着它一次只执行一项功能。相反,XE 可在具有多个 CPU 的计算机上运行,只不过不使用这些 CPU 而已。要使用多个 CPU,您需要购买 Oracle 数据库标准版或企业版。对于本文介绍的使用场合而言,一个 CPU 绰绰有余。
第三个限制是,任何给定计算机上只能运行一个 XE 数据库。此处有一点很重要,即您不必像某些其他数据库那样为每个创建的应用程序分配一个数据库。相反,Oracle 使用模式这个概念来分隔应用程序。
最后一个限制是,磁盘空间最大为 4GB - 表面看来这似乎是一个比较苛刻的限制。但对于大多数应用程序而言,4GB 已经是一个比较大的存储大小了。与多 TB 数据仓库相比,4GB 确实显得有些小,但在实际情况下却并非如此。
以附带的 HR 示例模式为例。EMPLOYEES 表的最大行大小为 144 字节。4GB = 4,294,967,296 字节,4GB/144 = 29,826,162。这意味着您可以存储几乎 3 千万个雇员记录。这是一个相当大的员工数量。即使将 JOBS、DEPARTMENTS 以及其他示例表考虑在内,您也不希望在本地存储如此多的数据。(这就是您为什么要购买企业许可的原因了。)Oracle 数据库 XE 用于只存储该数据有用的子集。
您将在下个部分了解到,这些限制实际上不会为您执行日常的 DBA 任务设置任何障碍。
聚合角度
以数据仓库环境为例。通过在这样的环境中实施 4GB 磁盘限制,您将不必担心数据溢出。可以为客户制定清除和刷新(推或拉)计划。数据库位于用户的桌面上并不意味着它已经“离开建筑物”。
因此,可以使用 Oracle 数据库 XE 发送聚合的数据,以便用户可以完全控制他们的数据,由此可以减少企业硬件的负载。如果可以将 EE 许可成本减少一个 CPU,则这样的努力就值得。(聚合的数据还意味着您不必担心隐私或合规性问题。)
Oracle 数据库 XE 支持物化视图复制,但如果运行 XE 的用户数量很大,则使用该复制可能会适得其反。一个更好的解决方案是在客户端创建一组存储过程(在 XE 中)。这些过程将清理旧数据并重新填充最新、最重要的数据。以下是一个示例脚本:
/* Turn on spooling and write output to the file test_links.lst for later review */ spool test_links /* Connect to the LOCAL XE database as SYSTEM (DBA) This user, SYSTEM, has the permissions to execute the following grant */ connect system/&local_system_pwd.@local_xe /* Grant CREATE TABLE directly to HR We need to grant explicitly so that the create table command can be used in a stored procedure */ grant create table to hr; /* Connect to the REMOTE XE Database as HR HR is a sample account that comes pre-loaded with Oracle Database XE */ connect hr/&remote_hr_pwd.@remote_xe /* This select tells us how many records are actually in the HR.EMPLOYEES table */ select count(*) from hr.employees; /* Create a view to restrict data in the remote HR schema The where clause will reduce the number of records that a user sees */ create or replace view hr_employees_vw as select * from hr.employees where salary < 5000; /* Re-execute the select from above against the new view and note that there are fewer records in the view than there are in the table */ select count(*) from hr_employees_vw; /* Connect to the local HR account */ connect hr/&local_hr_pwd.@local_xe /* Create a database link from the local XE database to the remote XE database HR account */ create database link remote_db connect to hr identified by hr using 'remote_xe'; /* Create a procedure to populate a local table The procedure drops the local HR_LOCAL_EMPLOYEES table and then recreates it by selecting from the newly created HR_EMPLOYEES_VW in the remote XE database using the database link created above */ create or replace procedure pop_hr_data as begin begin -- Drop the local table execute immediate 'drop table hr_local_employees cascade constraints'; exception when others then null; end; -- Create the table by selecting across the database link execute immediate 'create table hr_local_employees as ' || 'select * from hr_employees_vw@remote_db'; end; / /* Run the procedure to execute the new procedure */ exec pop_hr_data /* Verify that the procedure, link and view are working by executing a select that counts the number of records in the HR_LOCAL_EMPLOYEES table.This number should be the same number as the count from the remote XE restricted view above */ select count(*) from hr_local_employees; /* Turn off the spooled output.This will save the file so that the script and results can be reviewed */ spool off
该方法的部分好处在于可以制定刷新计划;您可以决定每个用户的最佳加载时间。
通过在 EE 端使用视图,您可以通过在数据仓库或 SE/EE 数据库中为每个用户提供一个 ID 控制任何特定用户可以访问的数据。当您为用户提供用于填充的存储过程时,使用他们的 ID 创建一个专用数据库链接。将来,当他们使用该链接访问数据库时,该链接将具有他们的权限和角色。这意味着不会为 DBA 带来额外的安全性开销。要删除用户对数据的访问权限(当用户换了一个新工作或离开公司时),可以锁定或删除该用户帐户,而您的数据库仍是安全的。
另一种用于向用户提供数据的选择不久将以 Oracle Warehouse Builder 的下一代版本(代号为“Paris”)形式推出。Paris 将使映射能够通过普通连接 (ODBC) 从摘要表中提取数据,这意味着它可以为 Oracle 数据库 XE 或其他数据库提供同样好的性能。其应用对象可以是客户的 PC 或工作组服务器。
Oracle 数据库 XE 还支持外部表。如果系统已经将平面文件导入到数据仓库中,或生成了其他用途的平面文件,则您现在可以为用户提供一个脚本来创建外部表。更改他们的数据就像 复制平面文件一样简单。最终用户可以将计算所得的值以及其他用户数据保存在他们自己的表中。上面提到的 4GB 限制适用于数据库中的用户存储,而不适用于外部表。
许多较小的应用程序(如源代码控制、配置管理、错误跟踪和项目管理)使用 ODBC 或 JDBC 连接性以及 ANSI SQL 将数据存储到开放源代码数据库中。Oracle 数据库 XE 支持 ANSI 标准 SQL 以及以上两种类型的连接性。在某些情况下,只需运行一些 DDL 脚本(创建数据库对象)并更改连接字符串便可以将这些应用程序移植到 Oracle 数据库 XE。随着该版本越来越受欢迎,很有可能将 XE 支持构建到许多更新的项目中。
对于开发人员:是自由的
如果您是开发人员,您是否曾经希望立即投入到项目中但却必须等待创建开发实例?您是否曾想要测试某个想法但却没有必要的权限?您是否想要摆弄数据库 参数以了解其作用但却被告知“这是 DBA 的工作”?如果您曾遇到这些情况,则 Oracle 数据库 XE 就可以解决您的这些问题。
一种新类型的支持:社区
Oracle 将以安装形式通过 MS 安装程序或 Linux RPM 执行升级。由于将不发布补丁,因此将显著简化升级过程。用户可以自行运行一个简单的命令执行升级,而不必让您(即 DBA)升级所有本地计算机。 您和您的用户还可以从同一个地方(OTN 上的 Oracle 数据库 XE 论坛 )获得支持。该论坛是一个互助平台,任何人均可以注册 ID。如果您有一个有效的支持合同,Metalink 还可以就您遇到的任何问题或提出的疑问提供大量信息。但请注意,无论您拥有的是什么样的支持合同,您都无法针对 XE 问题创建技术协助请求 (TAR)。 |
经验告诉您,使用开放源代码数据库执行以上操作会产生问题。两个完全相同的数据库是不存在的;大多数开放源代码数据库的参数与 Oracle 参数完全不同。数据库之间的管理任务也不同 - 如果在开放源代码数据库上测试某个想法,则无法保证 Oracle 将有相同的反应。而最糟糕的是,如果在开放源代码数据库上开始编程,则在某个时刻您将需要连接到 Oracle 并且必须解决移植问题。
而 Oracle 数据库 XE 则不存在这些问题。如果需要的话,您完全可以“扮演 DBA 的角色”。安装和配置的工作量很小,以便您可以专注于开发,但如果您要试用配置,则拥有完全的控制权限。
使用 Oracle Application Expres(先前的 HTML DB),您可以使用不同的权限级别创建多个用户。或者,可以使用 SQL*Plus 创建用户、角色和配置文件。花费在配置以及其他 DBA 任务的时间完全取决于您。Oracle 数据库 XE 马上就可以用于应用程序开发。
当然,大小的减小以及管理开销的降低意味着某些内容将被忽略。数据库的内部不再有 Java 支持。您可以通过 JDBC 连接到外部 JVM,但在编写本文期间,尚没有内部 JVM。
然而却包含了 .Net CLR 外部进程监听器。该监听器类似于 Oracle 8.0 之后推出的 C 外部监听器。该外部进程支持在数据库中注册 .NET 程序,以便可以像任何其他 PL/SQL 过程那样从 PL/SQL 存储过程中调用这些程序。
.Net 支持仅在 Windows 平台上提供,并且此时只能用于 Visual Studio 2003。(对 VS2005 的支持将于 2006 年年初推出。)但您会因为 Microsoft 在 VS Express 工具集中加入了限制而无法使用 VS Express 工具。
您的所有其他开发工具(包括 TOAD、JDeveloper、Forms、PHP 和 Oracle 的新 Project Raptor 图形数据库开发工具)将按照预期的方式在 XE 中工作。您可以根据任何应用程序的需要随意进行研究、测试和开发。
与其他版本一样,Oracle 数据库 XE 包含 Application Express 基于 Web 的开发和部署工具以及 XML DB。使用后者,您可以立即开始使用 XML、WebDAV 以及内置的 HTTP 和 FTP 服务器。
(注意:作为 Oracle 开发人员,您的 PC 上可能有多个 Oracle Home。如果可能的话,请在安装任何其他 Oracle 工具之前安装 XE。否则,请确保在安装前将任何 ORACLE_HOME 和 TNS_ADMIN 变量注释掉。如果设置 TNS_ADMIN 环境变量,则可以为所有 Oracle Home 目录维护一个 TNSNAMES.ORA 文件。)
在某些情况下,Oracle 个人版 (PE) 可能是一个更适用于数据库开发的解决方案。尽管 PE 需要许可,但却为您提供了完整的 EE 功能集以及 Oracle Metalink 支持服务。如果要对表进行分区、通过 VPD 保护应用程序或将表扩大到 4GB 以上,则 PE 将是一个比 XE 更好的选择。
全天侯假定分析?
大多数分析人员使用 Excel 和 Access 代替 Oracle,这是因为该软件在企业 PC 中比较普及。而这些 PC 应用程序有一些比较明显的缺点,例如可靠性、安全性以及 Excel 苛刻的 64k 行限制等。
但如果分析人员无法创建他们自己的表、混合和匹配数据或修改该数据以查看“假定分析”情景,那么他们应该怎么办?由于提供了合理的磁盘和内存大小、 简单的安装过程以及完整的权限集,Oracle 数据库 XE 可以实现以上所有操作。如果您的生产数据库中包含用户 ID,则将其数据置入 Oracle 数据库 XE 中只需创建一个数据库链接。
Application Express 创建数据库链接
此处最重要的特性是 Application Express,一个考虑到非编程人员的基于 Web 的 GUI 屏幕和报表构建器。除了构建屏幕和报表以外,您还可以使用 Application Express 向导查看磁盘使用率或创建表、索引以及其他数据库对象。
Application Express 提供了一个图形查询构建器(适用于不了解 SQL 或对其了解有限的用户)和一个图形数据库浏览器。数据库浏览器使您可以导航数据库中的对象以及查看或修改这些对象。
Application Express 查询构建器 - 条件
Application Express 查询构建器 - 视图 SQL
Application Express 查询构建器 - 结果
Application Express 对象浏览器
分析人员可以使用 Application Express“Create From Spreadsheet”向导从现有电子表格中创建表和应用程序。单击一个菜单选项并选择上载电子表格(或剪切并粘贴它)后您便可以进行创建。该向导甚至 向您提供了基于电子表格构建的摘要报表。它确实就这么简单。
Application Express 从电子表格创建应用程序
可以将 Application Express 的输出另存为一个可以由 Excel 打开的 CSV 文件。
与转换 Excel 电子表格相比,替换 Access 应用程序对技术知识的需要略高一些。有关将 Access 应用程序移植到 Application Express 的提示,请参阅本演示文稿 。
Oracle 数据库 XE 还提供了许多内置的分析函数:LAG、LEAD、PERCENTILE_RANK、STDDEV 等。所有这些分析函数均可以在 Application Express 应用程序中使用。XE 并不适用于复杂的智能应用程序,因此不支持 OLAP 和 SELECT MODEL 子句。
并不仅仅是一个入门级数据库
尽管具有本文所述的各个优点,但 Oracle 数据库 XE 并不是一个万能的数据库。如果您有重要的隐私或合规性要求,则应将数据保存到数据中心,在那里可以保护数据并对数据进行审计。如果您需要为大量用户提供支 持,并且如果 XE 的可用磁盘空间不足,则 DBA 应在受控制的环境中管理和维护数据库。
但对于许多其他情况(而不仅仅对于培训或测试)而言,XE 是一个很优秀的新工具。从小型企业一直到全球 500 强企业,您都可能发现 XE 是一个适用于桌面的数据库。