--算是一个警告吧,,,,,,粗心带来的烦恼
--昨晚在集中上线时,在修改存储过程时出问题了,一般对存储过程的修改操作时,我们都要对之前的版本进行备份以防止上线后出问题可以及时回滚,由于在上线当晚本人的ip不能直连数据库,只能通过4a跳转,这使得我对PROCEDURE的备份变得有些困难,我才用了如下方式;
--昨晚在集中上线时,在修改存储过程时出问题了,一般对存储过程的修改操作时,我们都要对之前的版本进行备份以防止上线后出问题可以及时回滚,由于在上线当晚本人的ip不能直连数据库,只能通过4a跳转,这使得我对PROCEDURE的备份变得有些困难,我才用了如下方式;
set long 3000
select dbms_metadata.get_ddl( 'PROCEDURE', 'xxx','xxx' ) from dual;
select dbms_metadata.get_ddl( 'PROCEDURE', 'xxx','xxx' ) from dual;
查出后就直接拷贝出来,问题出现了,当上线完成后,新上线的PROCEDURE果真存在问题,我这是就把刚拷贝的代码重新执行,报错!原来先前查询该PROCEDURE的定义没有取全,,,,,真是瞎搞,,,,还好该库有容灾,最后从容灾重新提取并进行了回滚。
问题的主要原因就是set long的长度不够,不能完整的去处该PROCEDURE的定义,,,,,,
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28278387/viewspace-746760/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28278387/viewspace-746760/