已索引
找到问题解决办法的途径是多种多样的,但都有遵循类似的逻辑方法。
1. State the Problem
对问题进行描述。应该准确具体地描述问题,而不是笼统而含糊。例如,“我的数据库很慢”就是一个糟糕的描述。那么,是今天忽然变慢还是一直都很慢(直至今天已经实在不能忍受了)?是局部慢还是整个系统都慢?另一个典型的糟糕描述就是“我的数据库崩了”,“崩”这个词在不同的人看来有不同的含义,是数据库负载太高运行太慢?还是数据库不能连接?或者数据库突然关闭不能启动?或者数据文件丢失?
2. Clarify Problem Statement
对问题描述做进一步澄清。
- 对问题描述作简要地澄清,比如问题的产生与影响。
- 对问题描述作具体地澄清,比如问题涉及到的具体组件。
- 对问题描述作逻辑地澄清,比如产生问题的事件之间的先后顺序。
3. Classify Problem Type
确定问题类型。比如,我们现在已经确定是数据库响应缓慢,那么,数据库响应缓慢可能由多种原因造成,可能是IO的问题,也可能是锁的问题。这儿,我们要去确定问题的类型。
4. Gather Evidence to Verify Problem
收集证据来核实问题。比如上面我们认为是锁的问题,那么就要通过 v$lock, v$session视图或者其它手段来核实是锁的问题。如果不能有效的核实问题,可能当前的问题描述是存在偏差的,则需要回到第1步重新对问题进行描述。
5. Gather Detailed Evidence
上前面的基础之上,基于可能的原因,去收集更加详细的证据来核实问题。
6. Prove/Disprove Cause
通过收集到的各种数据,来证明产生问题的原因是否成立。
7. Identify Solutions
列出可能的解决方案,给出解决方案时要同时考虑用户的目标与需求,比如客户的当机时间,客户的维护窗口等。
8. Implement "best" Solution
在综合考虑技术实施难度,客户目标与需求的前提下,选择实施最佳的解决方案。
9. Test Solution
测试解决方案。如果问题并未得到解决或者产生了新的问题,则回到第1步进行新的问题描述。