项目的上线,意味着一个阶段的终结,就算前期准备再充分,也无法保证最终100%的没问题。
下面是我本次项目上线中遇到的小问题却大纠结。
问题1:上线准备执行的脚本程序,一定要提前几天验证
吃了大亏的就是,没有提前几天进行验证。导致最后快上线时才发现,脚本没啥大问题,但是验证执行环境有问题。最终导致耽搁了很长的时间去反复验证确认问题。临阵磨枪,万一有问题是拿着绣钝的枪上战场,还是不把枪磨亮不上战场呢?(哈哈,我想两者都会死的很惨。。。)
问题2:验证正确性时,一定要用官方环境,官方方式
大家平常都会有这样的想法,我之前用A工具明明是可以的,或者说这样的结果,为什么在B工具上就是那样的结果呢?不可能阿(郁闷)不科学阿(抓狂)事实是你永远无法保证,A和B两种工具上,会如你所想,反馈给你相同的结果。
所以,想当然的假设是最可怕的,技术就是技术,是有其唯一性的。
问题3:SP2-0027:输入太长(〉2499个字符)
这是个技术问题,平时用习惯了客户端的童鞋,可能根本不会注意到在sqlplus下还有这个限制,所以你所认为的没问题,也仅仅是在你自己的认知范围内而已。用怀疑的态度怀疑一切,就像哲学上的概念“真理和谬论仅仅是一步之遥”。
问题4:name上的东西,最好不要用default
这个问题,是在上线时遇到的小问题。第一次上线时,在table上加了constraint 但是没有指定名称使用的是默认系统名称,由系统自动生成的。
alter table add constraint primary key(imp_date,imp_status_exp_status);--oracle给我指定了SYS_C00989的name
貌似丝毫没有什么问题,但是下次上线,如果需要增加或删除primary key 中的字段,又如何?
我如何drop /add相同name的constraint呢?事实仅仅是靠不修改脚本就能保证执行多次执行的话,不加自定义的名字是不可行的。
alter table table_name add [constraint constraint_name] primary key(column_name);
--虽然[constraint constraint_name]是可选的,但在实际使用中,这个值我认为应当必选项,除非你可以保证以后肯定100%不会涉及到,表结构或者主键的修改。
Summary:
本次上线是很简单的应用上线,虽然暴露的只是小问题,但是,很有可能就是某个小问题,导致最终上线完全失败或部分失败。
总之,上线不是简单的你想象中的执行就ok了,涉及到前期的验证,执行,后期的验证,测试等等一系列的步骤,每个环节的小问题,往往有可能为后面步骤埋下大祸害。
上线需谨慎,且上且珍惜。
by Skype
2016.11.28