Oracle DBA手记
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

DBA职业生涯之误删除篇

前面我提到严谨这一素质对于DBA的重要性,在ITPUB论坛上曾经有过一个热烈的主题:“请列出你在从事DBA生涯中,最难以忘怀的一次误操作”。

这一主题引起了大家普遍的兴趣,很多有趣的案例呈现出来,我摘录了一些和误删除有关的操作,看看都有哪些一时马虎、不够严谨会犯下的过失,大家应引以为戒,共同警醒:

1. 在Linux平台上,一次不小心操作,把oradata下所有的东西全删除了。

这样的误操作,教训是极其惨痛的,所以备份对于DBA来说仍然是最重要的。

2. 一次误删了个表,最后恢复了,丢了一天的数据。加了一晚上班,至今记得。

人越累的时候就越容易犯错误,我就是在最后快下班的几分钟犯的错误。

一定要记住墨菲定律,越着急就越容易犯错误,DBA千万不要赶着去做一件事。

3. 在一次测试过程中,把一个在本机执行的删除所有非系统用户的脚本,错误地粘到一个开发数据库的sqlplus窗口中了。

如果你不注意剪贴板,它就会害你!

4. 有一次一不小心把一个表给truncate了,上千万条记录一眨眼就没了。

ddl操作一定要谨慎啊!

5. rm -rf /opt/ora92/* 在测试库中本来想删除数据库,结果错误地把Oracle软件删除了。

rm -rf是相当恐怖的,每个DBA都应该学会不要直接使用这个命令。

6. 不小心用rm -rf /home目录下的所有文件,/home目录下放的有账务系统的app。一看到删除的路径的不对时,挽救已经来不及了。

又是一个rm -rf的狠操作。

7. 删除一些trace文件,然后就直接删除rm orcl*,结果通过vpn到生产的网络太慢,命令刚慢慢地显示出来,看都没看直接按回车,结果执行的命令却是rm orcl *,因为orcl和星号中间有个空格,所以把这个目录下面所有的内容全部删除了。

网络慢的确害惨过很多人,所以网络可能存在问题时,任何操作都要慎重,不行可以使用脚本在后台跑。

8. 有很多在OEM/Toad中误击键盘删除用户或表空间的情况。

实际上,我们看到,很多误操作都和技术能力基本无关,只是要细致、严谨,再认真一点。DBA有些素质和习惯是必须养成的。

很多时候,只要多思考一些,就可以将工作做得更加完美,就可以严谨地避免很多问题,举一个DBA可能经常面对的工作任务作为例子:

如果在数据库中执行ddl操作,比如:

        CREATE INDEX / REBUILD INDEX …ONLINE COMPUTE
        STATISTICS / GRANT / REVOKE / COMPILE / ANALYZE
        / DBMS_STATS….

进行严密严谨的思考,这些操作可能带来什么后果?

通常我们都知道,ddl会使解析过的SQL失效、会使存储过程等对象失效发生重编译、也有可能引起SQL执行计划的改变……

这些可能在一个繁忙的业务数据库中带来灾难,如果大量的SQL同时失效,同时重新解析,就可能带来大量的Shared Pool与Library Cache的竞争,SQL解析与竞争又会导致CPU的高消耗,这些在繁忙系统中可能会导致负荷突然升高,严重的甚至会导致系统阶段性地挂起。

已经有很多DBA在这些问题上付出了惨痛代价,而我只提醒大家,做事时要能够明确工作的性质、分析潜在的风险、回避可能引发的问题。