Becoming a DBA, what do I need to know?

Im sure this has been asked, but times change and so do SQL preferences etc... I figure this place would be the best place to ask this im sure many DBA's come here.

But what do I need to know starting off. Im graduating this December with my B.S. in Computer Science, I took two Database classes as well as built my own Database driven music store for one of them (it was basic, but worked well and looked quite nice).

Anyways Im not sure what Database most companies use. I know there is Mysql (but thats usually web stuff which im not interested in), Oracle , and then MS-SQL server, along with a few others.

The path for certifications seems to make MS-SQL server a tad easier (2008) and less expensive, Oracle seems quite....."wanted" as far as jobs go, but I also see my fair share of MSSQL too. Also....are the differences even THAT big? as far as actual coding goes. And how about the job market for a DBA? good? bad? seen better days? What should I be doing next to make sure I can land a decent job, whats the right path? Any answers are helpful answers!

thanks


Solution 1:

What do you need to know about databases to be a DBA? Everything (or at least most things, and where to look for answers to everything else).

Seriously though, there is always a market for good DBAs. If you want to become a good DBA the best advice I can give you is:

  1. If your "databases class" didn't get into the theory behind the relational model & relational algebra you may want to pick up a good book on the subject. Understanding the theory underlying the systems you aim to manage will be useful later in subtle and interesting ways.

  2. Design and implement some kind of database-backed system.
    You already did this, but you said the store was "simple" -- Expand on it.
    Load huge amounts of data into your system and see where the performance breaks down - then fix the problem.
    (In my experience as a DBA that will probably be your most common task: "X is slow. Make X not be slow.")

  3. Find a company that is looking for junior DBAs or junior administrators. Apply there.
    It doesn't matter what DBMS they're using (though if it's one you know or one you want to work with in the future that's great).

  4. Absorb as much knowledge from their DBA staff as you can.
    Ask questions. Sit in on design meetings. Bring the folks troubleshooting performance problems coffee and listen to their conversation.

  5. Take training/certification classes (especially if you can get work to pay for them!).
    While these aren't particularly useful without some real-world experience to back them up they often expose nooks and crannies of database systems that you may not see often in the real world. Many are also task-oriented, covering the common stuff like setting up database backups.

At some point in those 5 steps people will start asking you questions, or throwing problems at you and asking you to solve them. At that point you are a DBA (or at least a resource the DBAs trust enough to give work to with the expectation that you won't break anything :-)

Solution 2:

The major databases all have free versions available so you can explore and learn the differences yourself. The basic structure of inserts/updates/deletes is the same, but the specifics are different and the more advanced stuff you want to do, the more different they are, it seems.

Things you wont really want to learn, but will really make you good if you do learn them:

  • How to schedule backups and make sure they are working
  • How to restore from backups quickly and without overwriting everything
  • Working habits which help you avoid deleting data accidentally
  • Find slow queries / profiling
  • How to handle security in terms of logins, users, groups, connections from allowed IPs
  • Replication to other servers / clustering / failover (and then failing back)
  • As much as you can about client side connection strings and database libraries for different environments.

Downloads:

  • SQL 2008 R2 Express: http://www.microsoft.com/express/database/
    • (Also get SQL Management Studio Express for management)
  • PostgreSQL: http://www.postgresql.org/download/
  • MySQL: http://dev.mysql.com/downloads/
    • (Also get MySQL Workbench for management)
  • Oracle 10g Express: http://www.oracle.com/technetwork/database/express-edition/overview/index.html
  • IBM DB2 Express-C: http://www-01.ibm.com/software/data/db2/express/
  • SQLite: http://www.sqlite.org/download.html

Solution 3:

As you have rightly said there is basically 2 main ones your likely to come across with MS SQL Server being the more common in my experience as its relatively simple to administer in most cses.

Oracle is more of a learning curve as its does give you more scope to configure your system but does require a greater understanding to make it work efficiently.

In terms of Jobs, i would suggest looking for opportunities as a junior DBA in a small team of DBA's it will give you the chance to learn the ropes without being limited to a specific task(s).

There are differences between TSQL and PL/SQL so i would suggest you start with TSQL, only because your likely to come across it more often in small to medium sized company's

Finally remember, it doesn't what database you use, you need to get paranoid about data as its not about if you loose data only when and how much. So make sure you know the following inside out.

Backups; how and when. Transaction logging; the options, and how much data could potentially be lost. Check the Backups/transaction logs can rally be restored Check the health of you database. usage and resources required and know how to correct them.

Once you have these tasks down you can move onto other admin tasks and development work.

Finally try to avoid a mixed environment until you got some experience under your belt. The database do have some subtle differneces and trying to work those out while learning to be a DBA is one step to far in my experience.