DBA日常工作职责--我对DBA的7点建议

DBA的工作职责是什么?每天DBA应该做哪些工作?稳定环境中的DBA该如何成长与优化?这是很多人都曾经提出过的问题,下面是我的观点和建议

,供参考。

1. 实时监控数据库告警日志

作为一个DBA,或者哪怕仅仅是和Oracle数据库打交道的技术人员,你都必须知道告警日志是什么,在何处。

而对于DBA来说,实时的监控数据库的告警日志是必须进行的工作,监控并且应该根据不同的严重级别,发送不同级别的告警信息(通过邮件、短

信),这可以帮助我们及时了解数据库的变化与异常,及时响应并介入处理。

2. 实时监控数据库的重要统计信息

实施监控对于数据库运行至关重要、要高度关注那些能够表征数据库重要变化的统计信息,并且据此发送告警信息。那么应当监控哪些统计信息

呢?大家应当区别条件深入思考,对于单机、RAC环境等各不相同。

3. 部署自动的Statspack/AWR报告生成机制

每天检查前日的AWR报告,熟悉数据库的运行状况,做到对于数据库了如指掌。

4. 每天至少优化和熟悉一个Top SQL

根据AWR或Statspack报告,每天至少了解或熟悉一个Top SQL,能优化的要提出优化和调整建议。一个DBA应当对稳定系统中的SQL非常熟悉和了解

,这样才可能在系统出现性能问题时见微知著,快速地作出判断和响应。

5. 部署完善的监控和数据采样系统

DBA应该对数据库部署完善的监控系统,并对重要信息进行采样,能够实时或定期生成数据库重要指标的曲线图,展现数据库的运行趋势。

6. 全面深入地了解应用架构

不了解应用的DBA是没有前途的DBA,对应用了解不深入的DBA算不上Expert,所以一定要深入了解应用。

在数据库本身变得更加自动化和简化之后,未来的DBA应该不断走向前端,加深对于应用的了解,从应用角度对数据库及全局进行把握和优化。

7. 撰写系统架构、现状、调整备忘录

根据对数据库的研究和了解,不断记录数据库的状况,撰写数据库架构、现状及调整备忘录,不放过任何可能的优化与改进的机会。
 



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在这些问题上付出了惨痛代价,而我只提醒大家,做事时要能够明确工作的性质、分析潜在的风险、回避可能引发的问题。



DBA警世录--有些习惯DBA需要养成

既然DBA这个职业如此危险,那么哪些习惯是DBA必须养成的呢?

我总结过几条简单的习惯命令,通过这些习惯性命令,可以减少我们出错的可能。写下这段内容时,刚刚完成一个客户数据库的恢复,客户造成

故障的原因很简单,因为维护升级时错误地连接到生产主机,结果导致生产库故障,数据文件被删除并部分覆盖。

1. 经常使用hostname命令

在Linux/Unix上,我们使用ssh或telnet等通过多次跳转,很容易变更了连接主机,如果不经过确认就可能在不正确的主机上执行了错误的操作。

通过hostname命令可以确认我们连接到的主机,避免发生不应该的误操作。在执行操作之前一定要通过hostname命令确认连接主机,这是DBA或系

统管理员应该养成的习惯:

[oracle@jumper oracle]$ hostname  
jumper.hurray.com.cn 
2. 使用pwd确认路径

经常有朋友在错误的路径下错误地执行了"rm -rf *"等命令,这类错误的发生率居然也是很高的。

所以作为一个DBA,应经常性地执行如下的pwd命令来确认自己的工作路径:

[oracle@jumper oracle]$ pwd  
/opt/oracle 
3. 确认instance_name等数据库重要信息

在执行truncate/drop等操作之前,应该确认连接到了哪个数据库,从V$DATABASE或V$INSTANCE等视图中可以获得这些信息(可能需要授权):

SQL> select instance_name,host_name from v$instance;   
INSTANCE_NAME HOST_NAME  
---------------- ----------------------------------  
eygle jumper.eygle.com 
4. 通过id命令确认用户信息

要经常通过id命令确认用户信息,以免切换用户而导致不自觉的异常操作:

[gqgai@jumper gqgai]$ id  
uid=2003(gqgai) gid=101(dba) groups=101(dba) 
我见到过有的案例,用户切换为root,误操作删除过大量系统文件,导致了严重的故障。

5. 对ddl语句心存敬畏

DBA应该知道truncate / drop 等ddl操作可能带来的影响,所以应该对这些ddl操作心存敬畏,甚至应该避免执行或避免草率执行这样的操作,最

好养成在ddl清除数据之前备份的习惯。

通过一些良好习惯的养成,可以使得我们少犯错误。

学会总结,学会从别人的教训中积累经验,这对DBA来说必不可少!

原文链接:http://blog.chinaunix.net/uid-8504518-id-3353310.html
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值