如何部署Oracle数据库?

时间:2008-12-22 13:23:11

标签: oracle database-installation database-deployment

我有一个连接到Oracle或SQL Server数据库的ASP .NET应用程序。已经开发了一个安装程序,用于使用诸如“restore database ...”之类的sql命令将新数据库安装到现有SQL Server,该命令只是恢复我们保持在源代码管理下的“.bak”文件。

我是Oracle的新手,我们的应用程序最近才移植到与10g兼容。

我们目前正在使用“exp.exe”工具生成“.dmp”文件,然后使用“imp.exe”将其导入开发人员框。

您将如何创建“Oracle数据库安装程序”?

您是使用脚本文件创建数据库,然后使用必需默认数据填充数据库?

你会在幕后运行“imp.exe”工具吗?

我们是否需要为系统管理员提供一个干净的界面,以便他们可以选择目标服务器并完成,或者我们应该只提供“.dmp”文件?什么是最佳实践?

感谢。

4 个答案:

答案 0 :(得分:7)

问题是 - 您的客户对Oracle有何了解?

  • 没有什么?你应该重新考虑这个立场。 Oracle非常庞大而且复杂。如果您认为您的客户一无所知,那么您将开始提供教程并提供不合适的帮助。

  • 最低能力?如果他们有能力,他们就足够了解自己。此外,他们知道足以运行执行SQL的脚本。

  • 实际DBA?大多数能够负担得起Oracle的组织都可以负担得起真正的DBA。真正的DBA可以应付很多事情 - 他们不需要太多的手持。他们中的一些人喜欢根据他们的商店标准分配存储参数。

您应该提供具有合理默认值的脚本。您应该以某人可以轻松找到所有存储参数的方式定义脚本,并在必要时进行调整。

您的初始数据可以通过导出/导入或脚本。我更喜欢剧本。

答案 1 :(得分:5)

作为DBA,开发人员和架构师,我从双方(消费者和提供商)反复做过这个。

作为提供商,我的一项重大成就(1996年)是为最大的保险公司(数百万美元的项目)创建商业保险理赔管理软件产品的安装CD。该安装CD安装了Oracle 7.2 RDBMS引擎,FileNet光存储系统(扫描纸质文档并创建编目的二进制版本),以及我们的自定义声明处理应用程序(内置于VB 4.0),所有这些都集成并准备运行。作为安装过程的一部分,用户可以跳过Oracle软件安装或对其进行自定义,用户可以在其所有主要细节(数据库,模式,表空间,大小,磁盘等)中自定义/覆盖数据库配置。

我还为此产品提供了现场服务,其中包括必要时前往客户端站点。在我可以复制的每个可以想象的场景下,我测试了安装CD数百次,而且我们从未遇到过需要打电话的现场故障,更不用说旅行了(我曾经四次旅行,但是对于预售的东西代替)。

最近(2007年),我编写了为megacorp内部系统创建Oracle 10g数据库的脚本。在生产中,数据库的大小为8 TB,主要用于具有高数据量的单个事务表。在测试中,对于适度的服务器,数据库的大小约为1 TB。在开发中,数据库的大小约为100 MB,可以在我的笔记本电脑上运行。完全相同的脚本创建了所有三个环境,我可以在大约五分钟内扩展它们以处理新的环境/机器。该数据库涉及极端性能调整,因此定制所有相关特性绝对至关重要。

返回保险索赔处理产品 - 请允许我补充一点,我最初被雇用来领导从SQL Server数据库转换到Oracle数据库。该转换被确定为业务必需品,因为大多数潜在客户并未将基于SQL Server的产品视为专业,严肃的解决方案。这在今天并不常见,但它仍然适用于一般情况:如果软件产品可以容纳目标客户(尤其是企业级客户)首选的多个数据库选项,则它具有更好的市场渗透机会。

同样,安装CD也被视为必不可少的元素。但是,这种情况以及更多的情况向我透露,大多数“真正的”DBA都不接受基于导入的数据库安装。作为一名DBA和架构师,我知道我绝对不会出于同样的原因。

简而言之,基于导入的数据库安装使客户几乎无法控制生成的数据库。它对客户来说是不透明的,让他们质疑它做了什么。它迫使客户花费大量的努力来尝试尽可能少地控制它们。众所周知,它很脆弱且容易出错(Oracle的进口因所有权和权限问题,约束问题等而众所周知)。权衡所有这些影响,基于导入的数据库安装是不专业的 - 它不会首先满足客户的需求。

编写数据库安装脚本可提供正确的透明度,可配置性,选择性可重复性以及专业性所需的整体客户控制。它还鼓励您以导入的方式正确理解数据库设计决策的影响。

祝福。

答案 2 :(得分:1)

我个人赞成SQL脚本尽可能地创建数据库和数据。我倾向于使用PL/SQL Developer。它有一些从现有数据库生成脚本的好选项。获得这些后,您可以使用sqlplus或任何可以执行任意SQL的应用程序代码(例如使用Java的JDBC)运行脚本。 Toad是用于Oracle开发的更常见(也更昂贵)的工具。

SQL导出的唯一限制是它无法导出CLOB / BLOB字段。如果您有这些,您需要单独执行它们(作为PL / SQL导出)或将整个事件作为PL / SQL导出。除了文件实际上是二进制导出(扩展名.pde)之外,没有这方面的戏剧,并且在执行它的方式上更受限制。

SQL源文件的另一大优势是它们可以轻松地进行版本控制。通过运行一个或两个脚本来创建数据库环境非常方便。

我认为Oracle的导入和导出工具更适用于备份和还原操作。

现在,至于将它传递给客户,从您的评论中看来,您似乎将这个提供给DBA。几乎任何Oracle安装都会涉及DBA。使用SQL脚本可以很好地创建模式并进行数据加载。他们将进行大量特定于站点的配置(例如,根据预期负载调整SGA,临时表空间,并发连接数等)。

作为供应商,您可以就任何相关配置提供指导,您可能会参与支持和可能的安装,但最终由他们决定哪些对他们有用。 Oracle运行在大量操作系统和硬件变体上,在网络拓扑和防火墙配置方面存在无限变化。您不能将所有这些因素都考虑在安装人员或甚至一组说明中(除了前面提到的指导原则)。

答案 3 :(得分:0)

我最后一次参与创建(oracle)数据库(对于拥有内部DBA的合理大公司),DBA想知道如下事项:

  • 我们想要称之为db,
  • 我们需要什么样的表空间,以及估计每个表空间的数量
  • 将连接多少用户。

(从内存中)他们设置了db和tablespaces,然后我们提供了他们可以运行的简单脚本的组合(或者如果任务不容易自动化则清除指令)
正如我所说,这是针对一个内部应用程序,所以你的里程可能会有所不同,但在我的情况下,他们希望明确说明所有说明,以便(a)没有可能出现误解导致错误的事情发生,并且(b)如果某些事情不起作用,他们就没有责任(“我们只是遵循指示”)