DBA同学在工作中不可避免和开发同学打交道,和开发的同学在交流中还是有不少的小插曲,有些想想也蛮有意思,但是有些是痛点。
我举几个例子来说明,可能比较片面,但是只是为了说明问题,达到交流的目的即可。
###oracle知识和sql水平不足
    ddl中的commit
我相信很多DBA都会看到这样的sql脚本。
    create table test(id number,name varchar2(30));
    commit;
    其实这个就是对于ddl的理解有偏差,ddl压根就不需要这样的commit

   弄巧成拙的exists
    之前碰到一个开发同事写的sql大体是下面的样子
    select *from test where id in (xxxx) and exists(select *from big_table )
    可以看出他还是认为exists要好一些,但是实际上用的时候没用好。

    让人匪夷所思的数据库
    经常开发同事会给我提出要求,我们需要创建几个数据库,我一听想这个请求还是蛮大的,需要考虑存储,网络,服务器等等,然后弄明白之后,其实他说的就是创建几个数据库用户。如果是MySQL这么说还算对,我听到的都是Oracle的,难道都是故意刺激我。我每次提醒他们,那是数据库用户,他们会不以为然的说,恩,就是你说的那么个东西,好吧。

    不合理的表关联
    这种案例也听过不少碰到过不少,我见到比较多的还是十多个表做关联,不过性能还算能过得去,最近听到一个同事碰到一个sql里面的表关联有40多个,而且还是用MySQL,我听了这种复杂度,简直要绝望。

高水位线的问题
    之前碰到一个案例,有一天突然数据库归档量急剧增多。最后一番调查之后发现,开发同学使用了delete from test这种操作,这个test表数据量非常大。
下面是我和开发同事的对话
开发同事 [19:27]:
delete全表都要下工单是吧
我们最近在整理几个数据库的数据
杨建荣 [19:28]:
不能做这种操作,如果需要清理数据,开工单给DBA,让DBA来做。
开发同事 [19:28]:
好的
杨建荣 [19:28]:
你这样清理,表里高水位线,会越来越高,影响比较大。
开发同事[19:29]:
恩   
杨建荣 [19:32]:
刚刚一个小时,日志切了900多次,正常应该是2~5次
开发同事[19:32]:
并不懂  +o(
杨建荣 [19:33]:
就是影响比较大的意思,就跟开发的日志量突然多了500倍的感觉一样;)
最后我又给他解释了一会,他似乎明白了,但是最后的收效就是delete全表会有很大的影响。

####对索引的过度喜好
发现有的开发同事对于索引还是很依赖,恨不得每个字段都建一个索引。
比如下面形式的语句
            create table(id1,id2,id3);
            create index  on (id1);
            create index on (id2);
            create index on (id3);
如果查询条件满足的情况下,其实可以做个复合索引的。索引太多,对于dml影响不小,而且很多时候执行计划效率也高不了。
    大表加个字段
    如果给大表加个字段,对于DBA来说就是一个很头疼的事情,尤其是大表,分区表,数据量非常大的情况下,那就非常耗费时间和精力,应用那么又要保证停机时间,所以还是一件挺纠结的事情。我们在exadata上也看到过,大表加个default值的字段,实在是再没法快了。
    可能从开发角度来说就是简单的一个sql语句,不能那么想啊。
    开发同学的潜台词   
    开发同学可能需要表达的是事情A,可能我们需要做事情A,B,C,D, 这个时候需要了解开发同学的潜台词
比如下面这个对话,开发同事让我来赋予表访问的select权限,很简单的操作,马上做好了。
开发同事15:30:
这个用户也没有那些表的那些权限啊
杨建荣15:31
权限有的
开发同事15:31
刚才确实查不到表
现在好了
。。
杨建荣15:31
听你一解释,我明白了,你是说还没有同义词啊。
刚建了同义词
开发同事15:32
哦哦
现在好了

最后一琢磨,开发同事的要求是能够访问到表,现网环境中存在owner用户,连接用户,owner用户存放真正的数据,连接用户是通过同义词来访问,对开发来说就需要直接访问即可。
所以他们所说的开通权限,DBA需要做的就是开通访问权限,然后创建同义词。然后开通响应的防火墙和端口。。。。
###“未知问题”
    调试一个存储过程
    最近有个开发同事来找我,让我帮她调试一个存储过程,我问她是我负责的环境吗,她说不知道,那给我环境我在本地试一下,她说具体环境也记不得了,目前在已经配置好的环境里面运行存储过程有问题,好吧,我一看存储过程,好几百行,先耐着性子问了问最近有什么变化。
最后还是试着帮他调试了一下,发现原来报错是NO DATA FOUND这种错误。
最后我给她写了一个简单的模拟pl/sql来说明问题,她才终于明白问题,要不还在和我纠结到底是写varchar还是varchar2

set serveroutput on
 declare
 a varchar2(10);
 begin
 select '' into a from dual where rownum<1;
 dbms_output.put_line(a);
 end;
 /

这个pl/sql块中select *from dual where rownum<1肯定是没有结果的,所以错误的原因其实就在于存储过程中的这种类似查询没有数据导致的。

    乱码导致的sql问题
有下面这么一段聊天内容,是关于部署一个存储过程的。是一个重要的数据环境。
杨建荣 [16:20]:
这个存储过程你测试了吗?
开发同事[16:21]:
我内网测试了
可以修改成功么?
杨建荣 [16:21]:
有报警
警告
开发同事 [16:24]:
修改不了?
我内网没有报警呢
开发同事 [16:29]:
没问题啊
内网
是不是弄错了
我刚还测试了呢
一样的
开发同事 [16:41]:
删完了编译不成功
应该没问题的
杨建荣 [17:01]:
好的。最后用iconv搞定了。有个别注释的字符集兼容问题
这个问题说来惭愧,也是这么字符集没有考虑好,结果运行的时候抛出了警告,结果找开发,开发说测试过了,但是部署就是有问题,开发说我就改了一行两行的内容,就这么想来想去,最后才发现是字符集的兼容,其实开发和DBA有很多时候都有这种不明确问题的纠结。

后续继续补充

DBA和开发同事的一些代沟(一)相关推荐

  1. DBA参与开发项目的意义

    1.           为什么 DBA 要了解业务需求 ? DBA 了解业务需求后会给项目代来哪些建议 ? DBA 了解业务需求后 , 就明白了业务流程 , 熟悉了业务流程就清楚了数据的流向 , 然 ...

  2. 大讲堂专访丨连接Oracle DBA与开发的桥梁:Oracle的redo与undo

    云和恩墨大讲堂每周都会邀请业内外大咖进行一小时的线上主题分享,本期我们邀请到了云和恩墨技术专家李元鹏,带来题为<浅谈Oracle的redo与undo>的分享,敬请期待. 在开课前,大讲堂对 ...

  3. 遇到跑批时快时慢、或一直变慢,作为运维DBA或开发的你,如何下手?

    作者:黄远邦(笔名小y),长期活跃于国内多家银行总行生产数据中心,擅长解决Oracle方面各类疑难问题.在北京中亦安图科技股份有限公司任数据库团队技术总监. 如果您的日终跑批/清算/报表等程序时快时慢 ...

  4. 通俗易懂的oracle11g讲解,王二暖DBA学习开发Oracle11G数据库视频教程带课件

    王二暖DBA学习开发Oracle11G数据库视频教程带课件 这套视频讲的非常深刻,但是作者深入浅出让人通俗易懂,有广度有深度,希望能帮助您在java开发和DBA道路上披荆斩棘,让大家少走弯路. 第1部 ...

  5. oracle快照方案,【DBA及开发必备】全解ORA-1555快照太旧错误原理及解决方案

    不论你的工作是管理Oracle数据库,还是开发.维护Oracle上的应用程序,通常来讲你都遇到过ORA-01555:snapshot too old这样的错误.本文为你详解错误产生的原因以及最佳解决方 ...

  6. DBA_Oracle Database 11g 面向 DBA 和开发人员的重要特性

     2015-01-23 Created By BaoXinjian 一.摘要 在这个由多个部分组成的系列中,通过简单.可操作的方法文档和示例代码,了解这些新特性(例如,数据库重放.闪回数据存档.基于版 ...

  7. 开发同事辞职,接手到垃圾代码怎么办?

    小王新加入了一家公司,这家公司有点年头,所以连屎山都是发酵过的,味道很冲. 和大多数时运不济的程序员一样,到了这种公司,做的大多数工作,就是修补这些祖传代码,为其添砖加瓦.每当被折腾的筋疲力尽,就忍不 ...

  8. 一个有趣的网站,开发同事要看的577个网站,小牛导航(super-nb)一站给聚合了

    今天给大家介绍一个集合了 500+ 网站的导航工具 --小牛导航,爱在来一次,super-nb.com,从字面意思你可能知道这个站长是个放飞自我的程序猿小哥. 小牛导航将所有的网站分成了6大类,主要包 ...

  9. [转载]DBA的特质第二部分:性格

    本文转自http://www.searchdatabase.com.cn/showcontent_84382.htm 支持原创.尊重原创,分享知识! 在本系列文章中,笔者将谈一谈数据库管理员(DBA) ...

  10. 一本适用于初学者、开发人员、数据库架构设计师读的MySQL书

    首先看一看为什么如标题所说适用于这些人群? 我推荐的这本书分为"基础篇""开发篇""优化篇""管理维护篇"和" ...

最新文章

  1. 企业开发与社交开发相辅相成
  2. js学习笔记(执行上下文、闭包、this部分)
  3. 利用Matlab优化工具箱求解旅行商最短路径问题
  4. 1. ELK 之elasticsearch 简介、获取、安装
  5. MEF 导入(Import)和导出(Export)
  6. Android 系统(11)---android 系统权限大全
  7. php arrayaccess 二维,PHP数组式访问接口ArrayAccess用法分析
  8. Django之数据表增删改查
  9. 设置Excel单元格下拉列表的方法
  10. 网页监控插件distill web monitor使用之监控亚马逊到货及价格
  11. 约束rmq_约束RMQ
  12. Encrypt java_ESAPI对称加密使用JavaEncryptor
  13. 如何修改计算机mac地址吗,如何修改电脑的Mac地址
  14. c++语言程序中,main()函数必须放在程序开始的部分,C++多选题(附答案)
  15. stm32报错:identifier is undefined总结
  16. 可视化方向的几个期刊会议,供参考
  17. 仿淘宝的详情页图片切换
  18. 报错:error变warring的设置
  19. 做一个墨水屏电子钟,炫酷!
  20. 如何将html文件发送邮件,怎么给邮件发送HTML

热门文章

  1. Javascript基础知识笔记一
  2. sqlserver导出表结构到excel
  3. PHP利用GD库将微信小程序二维码和用户头像拼接且用户在微信服务号回复指定内容将拼接的二维码返回
  4. Windows10 phpStudyV8.1的基本使用
  5. gogs 把用户加入团队
  6. ELK logstash gork匹配在线测试
  7. linux vim与less区别,linux中cat、more、less命令区别详解##less 最合适最好用,和vim一样好用...
  8. vue跨域使用websocket_在vue中使用SockJS实现webSocket通信的过程
  9. curses.h: No such file or directory
  10. make指定输出目录