0

Just a bit of background on where my question is coming from: my company has multiple databases across the globe that uses the same schema and once of my department's responsibility is to monitor and make sure all these DBs are in sync from a schema SQL change perspective.

Now, my question is if anyone knows of any Software/tool that has a a Frontend UI which is able to do the following (the lower number the more important to have):

  1. Able to track what SQL code change was applied on which database and when. Basically, if we write a SQL query that changed the structure of a table and we need it applied to 80% or 100% percent of the DBs, either via manual input or some automatic check the tool will tell me that yes, this was indeed applied.
  2. Code distribution tool: we give it the query or a file that contains the code and it's able to push to the Databases it needs to (and create the audit log for that)
  3. Code/object repository: keeps track of what was custom developed and pushed to the databases

I know SSIS might be able to do some of these things, but we need a tool that also has a simple frontend interface that can be accessed by non-IT personnel. (*clarification: we are not planning on giving non-DBA people access to change things, just to the audit aspect of said tool)

I've tried searching the internet, but i have a feeling i'm not using the right vocabulary to get the results i'm looking for.

Hence i wanted to see if the community was aware of any such tool or something similar?

EkeshOkor
  • 109
  • 2
  • 10
  • My first thought is that I would fire anyone who wanted non-database specialists (except professional build team personnel) to be allowed to push database changes to a database. If you aren't a DBA you should not have the rights to do such things. – HLGEM Feb 08 '17 at 19:43
  • True and we don't plan on giving that option. it's more so that they can access from an audit perspective. Also, even for us who are the DBAs, considering we have a slew of other responsibilities we don't want to be bogged down by developing some backend-only tool that does this via DB Links or something of the sort. Hence we prefer to find something that has a user interface in order to make things more transparent and visible. – EkeshOkor Feb 08 '17 at 20:28

1 Answers1

1

Try searching for one of these two types of systems:

  1. Release/Build/Deployment Automation Complex programs like Serena that have modules for pushing, tracking, and auditing any kind of software, anywhere. These will include all the GUI bells and whistles. But you'll have to deal with extra databases, configuration, agents, workflows, consultants(?), etc. These programs are geared more towards developers.
  2. Remote Execution/Configuration Management Simpler programs like Salt, Fabric, and Ansible that let you run operating system commands anywhere. They don't offer as many features, and you have to do more of the work yourself, but in some ways that's liberating. If you know exactly what commands you want to run you don't need some other program holding your hand. These programs are geared more towards administrators.

From a database administrator's point of view, the main problem with those types of programs is that none of them are relational. Yes they can connect to a database and run a script, but none of them really speak SQL. Their native languages are Java, XML, SSH, etc. There's nothing wrong with those technologies, but if you only care about databases you don't want to deal with all that complexity.

If you're not happy with either of those types of programs I recommend you look at my open source program Method5. It is a remote execution program built as an extension to Oracle SQL. It works entirely inside an Oracle database, so you can install it yourself and won't need any additional websites, agents, configuration files, GUIs, etc.

Based on your comment about getting bogged down by links, and my answer to your question about half a year ago, I think this is the kind of program you were gradually heading towards creating. It took my team a couple thousand hours of developing and testing to get it right so you were probably wise to give up on making your own.

To specifically answer your requirements:

  1. Tracking Changes are stored in an audit trail. But more importantly it has the ability and a pre-built script to compare an unlimited number of schemas, all in one view. At the end of the day what you really want to know is "are my schemas the same", not necessarily "did the same thing get run everywhere?".
  2. Code Distribution If you just have SQL or PL/SQL, deploying it through Method5 is as easy as it can possibly get. Just specify what you want to run, and where you want to run it, like this: select * from table(m5('create index ...', 'dev, qa, prodDB1, prodDB2')); The program does not (yet) run SQL*Plus scripts. But when you have the ability to run SQL and PL/SQL so easily there's little need for SQL*Plus.

  3. Code Repository All executions are stored in a simple table, M5_AUDIT. It contains the code, who ran it, where they ran it, and how they ran it. It wasn't designed to be a repository like SVN but it's good enough for simple auditing and tracking code.

Method5 does not contain a GUI but in some ways I consider that to be a feature. Since everything is done relationally, everything is in a simple table. You can use any of your existing GUIs - Toad, PL/SQL Developer, Excel, Apex, etc. It's a robust back-end solution that will hopefully make a good foundation for easily building a simple front end.

Community
  • 1
  • 1
Jon Heller
  • 34,999
  • 6
  • 74
  • 132
  • That sounds exactly like something we are looking for. Much appreciated! For Method5: does it also work with Microsoft SQL Server? (we're actually employing the same schema on both Oracle and MSQL :| ) – EkeshOkor Feb 25 '17 at 19:53
  • @EkeshOkor No, it's Oracle only. If you need something database agnostic you may want to look into Flyway or Liquibase. – Jon Heller Feb 25 '17 at 20:43
  • @John Heller: appreciate it! – EkeshOkor Feb 26 '17 at 02:32