在生产环境里,很多情况下需要更新一些频繁访问的procedure,package,function等数据库对象。如果这些对象的访问频繁到一定程度的时候,在做create or replace的时候就会遇到很大的麻烦,经常会导致数据库出现大量的latch,严重的时候会导致数据库瘫痪。但是采用下面的方法就不会有这种麻烦:
假设现在有一访问非常频繁的procedure:prc_tst
1.利用prc_tst建立和prc_tst一模一样的prc_tst1和prc_tst2
2.drop procedure prc_tst;
3.create public synonym prc_tst for prc_tst1;
4.需要做更新的时候,更新prc_tst2,然后create or replace synonym prc_tst for prc_tst2;
5.视情况决定更新prc_tst1,需要回滚则不更新,不需要回滚就更新。
6.下次再做更新的时候,更新prc_tst1.
在我们的环境中,原来更新此类对象的时候是需要在数据库端做操作对应用有影响的,现在就非常简单了。
发表于 白鳝 在 2008年12月09日, 05:52 下午 CST #
发表于 白鳝 在 2008年12月09日, 05:52 下午 CST #
发表于 白鳝 在 2008年12月09日, 05:53 下午 CST #
发表于 baishan2 在 2008年12月09日, 05:53 下午 CST #
发表于 koko 在 2008年12月10日, 02:30 下午 CST #
发表于 zwfha 在 2008年12月11日, 10:20 上午 CST #