对于公司,每个内部和独立开发的软件(基于Web或客户端 - 服务器)应用程序都存在以下数据库:
生产环境在应用程序之间共享。
迁移应用程序需要:
我的问题:
答案 0 :(得分:2)
脚本在生产中出现意外错误当然是不可接受的。仅仅因为它的生产,我们希望确保一切正常。
至于预期的错误,这是一个品味问题。一些DDL脚本如下所示:
create table t23
(id number not null
, description not null varchar2(30)
, constraint t23_pk primary key (id))
/
prompt patch for ticket #42
alter table t23
add active_flag char(1) default 'N' not null
/
当此脚本作为升级生产部署时,create
失败,因为该表已存在。如果预期我认为这是可以接受的。但毫无疑问,它会破坏脚本日志文件,这使得检查升级成功更加困难。这就是为什么许多人更喜欢一个单独的补丁脚本,它只应用delta,因此包含应该成功的语句。
修改强>
这是有脚本的论据吗? 运行干净?升级时 生产系统,你真的想要吗? DBA(可能知道也可能不知道 关于系统的任何事情) 什么错误可以决定?
这当然可以是这样的论点。与在托管环境中由外包DBA应用修补程序的项目相比,编写维护脚本的人员也在生产中运行它们时,适用不同的规则。在后一种情况下,清晰度是至关重要的。
答案 1 :(得分:2)
脚本中是否存在无法处理的错误?不(例如,如果你真的必须在那里有CREATE TABLE,你可以将它放在包含在PL / SQL块中的EXECUTE IMMEDIATE中,该异常处理程序只吞下你期望获得的异常) - 所以你的脚本应该处理所有预期错误。
当dba(或者你,3个月之后,当你忘记哪些错误可以被安全地忽略)时,不必担心。