Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

Question for you DBAs and such: How do you go about learning the skills to become a DBA without having the 'on hands' or on-the-job training?

My experience in DB work has been messing with MySQL via MyPHPAdmin or something similar. Not doing a ton of in-depth work.

Classes? SQL books?

share|improve this question

migrated from stackoverflow.com Jan 3 '12 at 9:53

This question came from our site for professional and enthusiast programmers.

add comment

7 Answers 7

up vote 27 down vote accepted

Having been a DBA in a past life (and now in charge of hiring them), I have some thoughts:

How do you know you want to be a DBA without any experience admin-ing a database management system? That's like saying "How do I be an auto mechanic but the closest I've come to working on them is driving to and from work each day"... I'd take a long look at why you like database systems and see if it's on the production (SQL) or the support (DBA) end...

You should not be able to get a job as a production DBA without production, on-the-job experience as a DBA, so don't start applying for any DBA positions.

You may be able to be a junior DBA on a team if and only if you show some experience administrating DBMS's combined with lots of knowledge and/or certifications.

Your best bet is to start at a company as a SQL developer -- chances are there is no dedicated DBA and as you work more with it you can grow into a dedicated DBA.

Or, run a production multi-user application that uses a DBMS as the backend. Run your own website that uses MySQL and keep the DBMS running 24/7 and you'll get enough war stories to prove that you know what you're talking about. Hang out on user forms (such as DBForums) and provide support to other users for production DBMS issues.

Focus on backup/recovery, performance tuning, etc. and that'll be enough to at least get you in the door for a junior DBA position.

Good luck!

share|improve this answer
    
Thanks for the info and insight! –  Valien Jan 19 '09 at 19:58
    
This interests me, because I have done work on databases, but from the aspect of a web programmer. But I want to learn and do more. –  crosenblum Jun 4 '10 at 16:15
add comment

Brent Ozar, One of the StackOverflow team (and Quest employee) has a blog with a "How to become a DBA section". Its well worth a look if you are interested.

share|improve this answer
1  
+1 for the link - And BOZAR is also a MCM for a while now... –  Martin S. Stoller Jan 3 '12 at 18:15
add comment

If you don't get 'on hands' experience, then you aren't worthy of being hired for such a job. Nothing is stopping you from download MS SQL Express, MySQL and/or Oracle's free version and using them. These are all free and you should get experience with multiple kinds of database servers.

MyPHPAdmin is fine for basic usage but it isn't a great tool, you need to use more serious tools (MySQL Administrator) and learn how to optimize existing tables, indexes, and rewrite existing queries (especially poorly written joins) before you can consider this a possible career.

share|improve this answer
    
Intriguing... I've never heard of 'on hands' experience ;) –  Joe Philllips Jan 19 '09 at 19:36
    
I'm just repeating what the OP typed :P –  TravisO Jan 19 '09 at 22:46
add comment

A lot of DBA's started out as developers who happened to be a little better at SQL than their peers in a given company. As this is recognized they start drawing more and more of the DB assignments. These extra assignments, along with perhaps some DB specific training, help grow their skills in this area even more, until they've worked themselves into the DBA role.

This process is great for learning things like query tuning and table design. However, it's not so good for other DBA tasks, like setting replication or back-up schemes, security, role management, server maintenance, server connectivity, reporting systems, olap/analysis, batch job processing, etc.

Some of those other responsibilities can be shared with IT staff, but the other items from that list are non-trivial and cumulatively more than you're likely to learn at expert level from the kind of one-week training classes most companies are willing to pay for. If you find yourself in this position, be careful you don't get more than you bargained for. It's a good idea to start looking for study resources you can use to learn about these things on your own, and perhaps ask your company to provide with you a decent testing/training environment, which can be as simple as one additional good desktop where you can install the developer edition of Sql Server in a VM or two.

share|improve this answer
add comment

If you're going the self-study route, I would recommend getting a solid grounding in the concepts coupled with as much practice as you can stand. Both are necessary. MySQL and/or PostgreSQL will serve you well, but you will learn most by working directly in the console rather than using an admin tool or a GUI.

As far as books on relational database theory go, I would recommend anything by C.J. Date, particularly the following:

As others have mentioned, there are also a host of real-world issues that you will probably not run up against until you're dealing with a database in production with real data and real users.

share|improve this answer
add comment

If you want to move into special job X, which is sort of related to software development, consider looking for a development job at a small company. Small companies tend not to have many specialists, so you can wind up doing a lot of different sorts of work. (Some people - like me - like that, some hate it.) Once you have a bit of experience doing X in the course of your job, you can try to expand on it.

The first experience is always the hardest to get, and as others have pointed out will give you some idea whether that's what you want to do or not. After you get your toe in the door, you can build on that.

share|improve this answer
add comment

Learning theory is not enough, to get good at something as complex as database managment you must have on-hands experience. You need to experience the pain of challenging database problems and successfully solve them with effort and dedication.

phpMyAdmin is a limited interface for performing some basic maintainence. You need to be in full control of all of the command line options and utilities to consider applying as a DBA. Database modeling, query tuning, high availability, scalability - there is so much to know to be able to manage a production database properly.

I suggest you get a copy of High Performance MySQL (2nd ed.) and start scratching the edge of what's possible. You can read some wisdom from world class DBAs on several blogs. And most importantly, get involved in challenging projects and start gaining experience.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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