结构化解决问题的步骤:
1、识别问题:明确具体是什么问题。
2、定义问题:将问题分解成可管理的小问题。
3、调查:收集数据和信息。
4、分析:找出问题的根本原因。
5、解决:从众多解决方案中选择最合适的一个。
6、检查解决方案:确认是否已经解决了问题。
今天,业务系统导入数据时,报了一个错误(如图)。折腾了一翻,问题解决比较曲折,特此记录下。
一、识别问题:明确具体是什么问题
1、明确具体是什么问题?
本业务系统使用已七八年,数据导入模式比较原始,每次新周期数据导入时,需要通过专门的工具连接数据库导入数据。今天正常按操作程序导入时,提示如下错误:
2、什么情况下出现的?
在新周期数据导入时出现,距离上次操作数据库,间隔为28天。
二、定义问题:将问题分解成可管理的小问题
通过将问题分解成可管理的小问题,进一步定位最本质的问题。
针对本问题,具体步骤如下:
1、导入操作不当出现的问题?
经多人验证,出现同样的错误,问题排除。
2、公司数据库有新的变更?
咨询公司DBA后,排除这种肯能。
3、供应商有执行新的变更?
本业务系统供应商操作系统时,都要通过我的验证,最近并没有执行相关操作。同时,跟供应商有权限的工程师确认,也排除本可能。
4、数据库本身设置的问题?
有这种可能,需要进一步分析、排除。
三、调查:收集数据和信息
1、搞清楚业务系统导入工具逻辑。
通过咨询供应商,了解到详细的导入逻辑,进一步分析每一个可能出错的环节。
2、从错误提示入手
本例问题很类似,问题指向Oracle密码复杂性校验错误。
3、连接数据库
连接数据库发现,其他账号均能正常登陆,只有出问题的帐号不能登陆。
四、分析:找出问题的根本原因
通过汇总分析及供应商协助:清晰定位问题,初步制定以下解决方案。
解决方案:备份数据库,重新创建用户。
创建不成功,提示问题依旧:
ORA-28003: password verification for the specified password failed
ORA-20001: Password same as or similar to user
根据错误提示,定位问题:因为Oracle密码复杂性校验导致:
Check the output of the below query.
Check the value for resource_name "PASSWORD_VERIFY_FUNCTION" , if it is not null(LIMIT column) then change it to null.
五、解决:从众多解决方案中选择最合适的一个
1、取消Oracle密码复杂度检查:
SQL> alter profile default limit password_verify_function null;
2、重新创建用户六、检查解决方案:确认是否已经解决了问题
经验证,业务数据已能正常导入。
至此,问题解决~!
还有个问题:本工具已正常使用多年,在没人动系统配置和数据库环境的情况下,为何会突然出现这个问题,还在进一步分析。