CREATE ROLE DATABASE_ENGINEER;

Doug Burns has written an article here that talks about what he is calling a Development DBA.  Further commentary here by Tom Kyte.  I’ve talked about this role in the past (including a paper on the subject at the 2006 Hotsos conference). 

Doug makes some excellent points in his article, describing the triangular relationship between application developers, production DBAs and the development DBAs.  In my paper, I suggest that one of the main challenges with defining the necessary role is the ambiguity of the title.  Tom often calls the role a development DBA or DBA developer.  Personally I like the term Database Engineer, as I think that developers responsible for the databases during development should exercise engineering-based skills.

Doug observes that many of the more experienced DBAs tend to be Production DBAs — and that’s a shame.  I like to say that the skill sets of Database Engineers and DBAs overlap — but that Production DBAs focus on High Availability, Backup / Recovery and Space / System Management, while Database Engineers focus on Schema Design / Development and Database Coding.  Experts are required in both areas.

About the only thing I disagree with in Doug’s article is the discussion about database ownership and responsibility.  In my opinion, a database engineer should retain ownership and responsibility for the availability and performance of the development database.  That doesn’t mean you prevent developers from accessing it, but it does mean that you have the responsibility to make sure that developers don’t shoot themselves in the foot or prevent other developers from getting their work done.  Doug is right about being helpful — try to understand what the developer is trying to do and work together to figure out a solution — don’t be a “scowling brick wall” :-)   Take pride in the ownership and be part of the solution.

3 Responses to “CREATE ROLE DATABASE_ENGINEER;”

  1. Dominic Brooks Says:

    An excellent take on the situation

  2. Doug Burns Says:

    In my opinion, a database engineer should retain ownership and responsibility for the availability and performance of the development database. That doesnít mean you prevent developers from accessing it, but it does mean that you have the responsibility to make sure that developers donít shoot themselves in the foot or prevent other developers from getting their work done.

    Actually, I think we probably more or less agree on this. If I was a dev DBA or database engineer I don’t think I would want developers to be able to connect as SYSDBA for example because the db is a shared resource for several developers that needs care. Maybe I meant it more as a philosophical point that too many DBAs seem to take the position that the database is ‘theirs’ when really, it’s only there for the people who use it.

    So, protection, sure, but not obstruction!

  3. Dominic Delmolino Says:

    Absolutely. Actually, I pretty much draw the line at DDL / DML. In my opinion, developers can pretty much do any DML they want — heck nowadays I can reverse almost any damage anyway by flashing back. But DDL? No way! :-)

Leave a Reply

Posting code can be a pain. To make sure your code doesn't get eaten, you may want to pre-format it first by using HTML Encoder