是否有任何技术可以让您对生产模式进行并排更新?
目标是在将更新应用于生产中的架构时实现零停机时间。 Weblogic 10具有与其Java EE应用程序类似的功能,您可以通过它部署新版本的应用程序并将新连接转到新应用程序,而现有连接将继续使用旧应用程序。当所有旧连接完成/超时时,旧应用程序将停用,新应用程序将继续...零停机时间。
Oracle中有类似内容吗?
答案 0 :(得分:3)
是。有在线重新定义包。
但是我怀疑这会给你零停机时间,这并没有考虑到架构的每一个可能的变化。这使您可以进行一些表更改。我认为您需要定义零以及您想要进行的更改的范围。通常,如果更改数据库,则还必须更改客户端。如果您更改了数据库,客户端将如何自动从旧的proc签名切换到新的proc签名 - 瞬间?
数据库不像应用程序那样工作。从tableA到tableB有一个FK,或者没有...它不能用于当前连接,并且只能以与应用程序相同的方式存在于新连接中。数据库不一样。
话虽如此,有传言称Oracle正在开发软件包版本控制......因此您可以连接到特定版本的软件包,以简化此类迁移。但是再次......这适用于包,DBMS_redef适用于表...但这不是数据库的总和。
答案 1 :(得分:2)
Oracle今天发布11gr2,它有基于版本的重新定义:http://download.oracle.com/docs/cd/E11882_01/server.112/e10881/chapter1.htm#NEWFTCH1
答案 2 :(得分:1)
取决于您在“架构”中的含义或包含内容。 如果你想添加或删除一个索引,可以“在飞行中”完成,虽然它需要一个可能暂停活动一段时间的锁。在最新的Oracle版本中,它不需要在构建索引的整个时间内保持锁定,只需暂时锁定更改。如果您有短期交易,则不应该注意到。 在某些情况下也适用于表格(例如,添加可空或默认列)。
如果使用PL / SQL(特别是包),事情可能会更复杂一些。 11gR1的增强功能得到了提升,以便进行机上应用程序升级,但它已被推出,现在预计在11gR2(可能在明年上半年)。 与此同时,解决方法是一种多模式解决方案。假设您的数据位于一个模式(“黄色”)中,并且您当前的应用程序代码以“蓝色”模式运行,您将新应用程序加载到“绿色模式”中。您可以逐个将连接从蓝色切换为绿色。一旦您的连接全部使用“绿色”,您可以退出“蓝色”直到您的下一次升级(当“蓝色”成为新应用并且“绿色”退出时)。
如果你有一个真正的24/7系统,你可能总是需要进行一些升级。例如,添加一个新列作为可选项,升级应用程序以进行设置,然后将其设置为必需(可能包含一些用于预先存在的行的数据更改脚本)。