有一点很肯定要建立最成功的信息系统前提是DBA与应用开发人员之间要有一种共生关系在这一节里我想从开发人员的角度谈谈开发人员与DBA之间的分工(假设所有正式开发都有DBA小组的参与)
作为一名开发人员你不必知道如何安装和配置软件这应该是DBA或者系统管理员(system administratorSA)的任务安装Oracle Net配置监听器配置共享服务器建立连接池安装数据库创建数据库等这些事情我都会交给DBA/SA来做
一般来讲开发人员不必知道如何对操作系统调优我个人通常会让系统的SA负责这个任务作为数据库应用的软件开发人员应该能熟练地使用你选择的操作系统但是不要求你能对它调优
DBA最重大的职责是数据库恢复注意我说的可不是备份而是恢复而且我认为这也是DBA惟一重要的职责DBA要知道回滚(rollback)和重做(redo)怎么工作不错这也是开发人员要了解的DBA还要知道如何完成表空间时间点恢复这一点开发人员不必介入如果你能有所了解也许以后会用得上但是作为开发人员目前不必亲力而为
在数据库实例级调优并得出最优的PGA_AGGREGATE_TARGET是什么这一般是DBA的任务(数据库往往能帮助他们得出正确的答案)也有一些例外情况有时开发人员可能需要修改会话的某个设置但是如果在数据库级修改设置就要由DBA来负责一般数据库并不是只支持一位开发人员的应用而是运行着多个应用因此只有支持所有应用的DBA才能做出正确的决定
分配空间和管理文件也是DBA的工作开发人员可以对分配的空间做出估计(他们觉得需要多少空间)但是余下的都要由DBA/SA决定
实质上讲开发人员不必知道如何运行数据库他们只需要知道如何在数据库中运行开发人员和DBA要协同解决问题但各有分工假设你是一位开发人员如果你的查询用的资源太多DBA就会来找你;如果你不知道怎么让系统跑得更快可以去找DBA(如果应用已经得到充分调优此时就可以完成实例级调优)
这些任务因环境而异不过我还是认为存在着分工好的开发人员往往是很糟糕的DBA反之亦然在我看来他们的能力不同思路不同而且个性也不同很自然地人们都爱做自己最喜欢的工作而且能越做越好形成良性循环如果一个人比较喜欢某项工作他会做得更好但是这并不是说其他工作就一定做得很糟就我而言我觉得我更应算是一位开发人员但兼有DBA的许多观点我不仅喜欢开发也很喜欢服务器方面的工作(这大大提高了我的应用调优水平而且总会有很多收获)