如何避免Oracle中对象无效的问题

日期: 2009-08-13 作者:Brian Peasland翻译:孙瑞 来源:TechTarget中国 英文

问:我所在的公司要求24/7的数据库访问支持,但当预定的应用程序代码更改之后,像包、包体和视图等对象都变得无效了。所以我们不得不在下班之后对这类的应用进行修改,这时也是在线社区最小的时候。   问题是,在上班时间内,我们如何执行应用程序的代码修改,还要避免对象无效而造成的运行停止。     答:大多数情况下,你无法在上班时间完成此项工作。

可以这样想,你修改存储过程PROC1,它是被触发器TRIG1所调用的。TRIG1如何才能知道你对PROC1的修改在语法上是正确的?TRIG1无法确定所以对象状态变成INVALID了。下一次用户调用TRIG1时,Oracl……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问:我所在的公司要求24/7的数据库访问支持,但当预定的应用程序代码更改之后,像包、包体和视图等对象都变得无效了。所以我们不得不在下班之后对这类的应用进行修改,这时也是在线社区最小的时候。

  问题是,在上班时间内,我们如何执行应用程序的代码修改,还要避免对象无效而造成的运行停止。

    答:大多数情况下,你无法在上班时间完成此项工作。可以这样想,你修改存储过程PROC1,它是被触发器TRIG1所调用的。TRIG1如何才能知道你对PROC1的修改在语法上是正确的?TRIG1无法确定所以对象状态变成INVALID了。下一次用户调用TRIG1时,Oracle将重新编译它以确保PROC1没有破坏TRIG1。如果一切正常,Oracle将执行TRIG1。如果修改PROC1破坏了TRIG1,那么用户将接到报错。但在再编译无效对象之前,Oracle将无法确定此状态。

  根据拟将作出的修改,DBMS_REDEFINITION包可以帮助你在最小的宕机时间内完成修改工作。但是你仍然会碰到这样的问题,就是它将对终端用户和在线访问者造成影响。

作者

Brian Peasland
Brian Peasland

Techtarget旗下Searchoracle网站的资深专家,有16年IT行业经验、计算机科学硕士、专攻数据库方向,曾担任系统管理员等职。此外,他还获Oracle 7.3、8和8i的OCP数据库管理员证书,目前为SGT Inc.公司首席DBA。

翻译

孙瑞
孙瑞

相关推荐