Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Yes, I know they administrate databases.

I asked this question because I'd like to get a further insight into the kind of day-to-day duties a DBA might perform, and the real-world business problems they solve.

For example:

  • I optimized a 'products' query so that it ran 25% faster, which made the overall application faster.

Is this a typical duty? Or is there more to being a DBA than simply making things faster?

In what situations does DBA work involve planning and creativity?

share|improve this question

closed as too broad by Ixrec, MichaelT, durron597, GlenH7, gnat May 27 '15 at 21:22

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

Consider asking the question on – apoorv020 Feb 25 '11 at 11:48
For a light-hearted (but at the same time, realistic) view into the life of a DBA, have a read through – James Love Feb 25 '11 at 12:44
Refuse to answer my emails ಠ_ಠ – Andrew Arnold Feb 25 '11 at 13:08
DBAs also have a special sixth sense, which enables them to know moments in advance that you will need them for something. And whenever they get that dba-sense-is-tingling feeling, they vanish. Every single one of them is born with this ability. It's truly freaky. – CaffGeek Feb 25 '11 at 16:26
My DBA's pass a fair amount of the day on Youtube. :) – Machado Jun 3 '13 at 22:21
up vote 20 down vote accepted

Well, they administer databases. Hah! Just kidding. It's more glamorous than all that.

  • They take care of all the muck that would bring the common developer to tears.
  • They perform all necessary backups and restores.
  • They schedule tasks to rebuild indexes and materialized views.
  • They move data around when people need it. Need the data from production in your QA environment? A DBA can do that for you.
  • They apply security roles and monitor database object access.
  • They work with database vendors to be sure your company is up-to-date with the latest and greatest tools. If you need to legally archive sensitive data, they might help you set up a triggering solution.
  • They'll tune and optimize, like you mention.
  • They troubleshoot performance in different runtimes.
  • They build fail-over and disaster recovery plans.
  • Some of them are good dancers.
  • Most pay less in taxes than the average person making their salary.
  • They research new data management tools ala NoSQL.
  • Some are hobbyist pilots.
  • They setup and monitor database maintenance jobs.
  • They know when to partition data and when not to.
share|improve this answer
+1 - while I agree with what you say, I think it's worth mentioning that the role of a "DBA" can be wildly different depending on the company/organisation. – TZHX Feb 25 '11 at 10:01
My dad is a DBA and while I don't know what he does specifically, I can see there is a lot of work involved. Somedays if someone screws up spectacularly, he has to spend all night working from home to fix it. – jonescb Feb 25 '11 at 14:29
@jonescb: A lot of DBA stuff has to be done when there isn't much of a load on the system. I've been told that the initials stand for "Doing Business Afterhours". – David Thornley Feb 25 '11 at 15:15
In some cases its your job to figure out how to conjoin multiple horrifyingly structured sets of data into a usable structure. Good DBAs have a view of all entire enterprise data so there opinion is usually a good one to have whenever your designing a product that might one day feed data into something else. In some circumstances if the DBA (Data Architect really) doesn't like your structure they may prevent you from releasing it. Its best to get them on your side as soon as possible. – DarkStar33 Feb 25 '11 at 17:00

I think it heavily depends on the company and the project. See explanation at the end.

In our company, DBAs are reponsible for:

  • installation and upgrades of the DB engine
  • creation of schemas (db users)
  • adjusting default privileges
  • adjusting DB engine parameters like cache size
  • monitoring and maintaining tablespace and physical storage
  • monitoring hardware usage
  • scheduled maintenance operations, for example gather schema stats

But they are NOT responsible at all for:

  • performance of particular queries
  • creation and maintenance of database structures and procedures
  • adjusting grants

I know some companies where even these latter tasks belong to DBAs as well.

I think if there are several SQL developers working on a DWH or a big OLTP system, DBAs will only do the maintenance tasks to provide a reliable framework.

On the other hand, if there is no big SQL development going on, mainly just native or web coding and there are no SQL experts, the DBA will take all points including performance tuning and every little datamodel modification.

share|improve this answer

in my experience DBAs mostly stall developers wanting to get ahead in their projects and actually get some work done interfacing with the systems the DBA is supposed to administer. Seems their idea of "administration" is blocking any request to do anything at all.

share|improve this answer
Not a dba, but that is correct. Their job is different than yours, their job is to make sure the database is performing well, and that security is strong, and watched over. Their job is not to make sure your changes go thru but to make sure the databases, they watch over remain at a high level of performance, availability and security. Understand and respect that, and make sure your work doesn't detract from that. – crosenblum Feb 25 '11 at 14:47
they should however realise that the database isn't there for them, it's there for those who need to use it and the data it contains. And they're not acting accordingly, instead actively hindering those who need such access. – jwenting Feb 25 '11 at 14:59
you mean you want them to enable your incompetence? They are protecting the company not you. And your attitude is why you don't get along with them. – HLGEM Feb 25 '11 at 15:23
"The database performs best when it is empty!" – Kit Menke Feb 25 '11 at 16:20

DBAs are more like system managers than developers. They monitor database traffic, analyze query performance, watch disk space and allocate more if required. DBAs on large systems will often migrate data tables to different servers or disk arrays to improve performance. They also work with developers, either giving guidance when new queries or tables are being designed, or giving them feedback that some part of the system is not performing and suggesting query or table structure changes (usually either denormalizing the structure or partitioning the data). As others have mentioned, they also handle backups, restores, shipping or truncating log files, adding or resizing Oracle rollback segments, creating new databases, archiving old ones, and generally making sure Things Just Work.

share|improve this answer

If you are interested in administering the database and performance tuning and keeping the hardware going, dba is the job for you but if you want to design databases and write SQl code and create data warehouses and reports, etc, then you want to be a database architect or data analyst or database engineer. Now some places the dba does both roles (usually the smaller places that can afford only 1 specialist) and those ar e a good place to start and see which aspect(s) of database you prefer to work in.

share|improve this answer
The title "database engineer" is often a synonym for "database administrator." The database engineers at my organization write almost no code and do very little design. Database design and coding is performed by senior-level software engineering staff. I create almost all of the sever-side PL/SQL code in my organization. However, creating server-side database code is only a proper subset of my responsibilities. I also design and write server and client-side code in C, C++, Java, Object Pascal, and IA-32/IA-64 Assembly language. – bit-twiddler Feb 25 '11 at 15:16
@ bit-twiddler, the database engineers where I work do design and coding. Titles vary everywhere, I was more trying to make the point that there are other databases specialists than dbas if the poster was interested in working with data. – HLGEM Feb 25 '11 at 15:21

Depends you have DBAs who just manage databases or Data Architects who do much much more.

In case of the latter its your job to figure out how to conjoin multiple horrifyingly structured sets of data into a usable structure. :)

Good architects will have a good understanding of the entire enterprise data structure so there opinion is usually a good one to solicit early.

Example: You may want to build something expensive to capture something but the DBA would know if that data already existed elsewhere allowing you to cut down your work immensely. In some circumstances the architect has final say of how databases are structure and may prevent you from releasing it if it too far from best practices.

In my career there have been a few times where the previous consulting company was kicked out because they produced a data-model that showed they had no idea what they were doing or a very poor understanding of the business.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.