sddm_logoToday I want to talk about how to version control your Data Modeler designs with Subversion.

Oracle SQL Developer Data Modeler is free.

Subversion is free.

So for no money, you can design your database objects, and version control them for one or more people.

I’ve put together some slides for your enjoyment:

Psst, slide #16 has the ‘good’ stuff

But Wait Jeff, Why Don’t You Have a Database Repository?

Because then you would have have to have a database, AND install server side objects, just to design your database? We don’t do that. We treat your design just like you treat your application source code – something you can manage in your Subversion system.

Still want a database repository? Read this


I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.


  1. I’m trying to version modeler files, but I see a huge problem.

    It saves the XML source of packages as a single line with XML entity characters, instead of a simple CDATA.

    So whole source code is in a single line, with makes impossible to easily review changes.

    It there a way to save source with XML CDATA construction?

  2. Hi Jeff,
    I am using SQL Deverloper as I need ODBC connection to various databases and dont have oracle database to work on modeling on. For subversion repository it is asking for DM with read write access to repository.
    I have a Subversion repository and trying to connect using my windows login (WHich works otherwise) but is failing when using with SQL Developer. Can you please point me in right direction.

  3. Hello Jeff,

    Love your blog.

    Working with SQL Developer

    I wanted to ask a couple of questions in which this would help on automating changes to be deployed.
    For example, how to do you keep track of the changes to be submitted to the servers which have lets say different data schema?

    Table 1 has 5 fields version 1.

    When we push to git for the next version ie 2, Table 1 has 6 fields.
    How do we track this change in order to be pushed to 100 other servers ?
    Is there a file ie. update_v1_to_v2.sql that keep tracks changes of in between them ?
    It would be great if this was a feature that the SQL Developer could have as a plugin/feature.

    Thank you for your time.

    • So you posted your question on a blog post that’s talking about the data modeler. The data modeler allows you to version your data model as you make changes. Have you given this a look?

    • I understand the modeler versions the data model through GIT by saving them into individual files, what I was asking whether there is a way to only hold the alterations of the tables. ie.

      ALTER TABLE `fleet`.`drivers`
      ADD COLUMN `driver_id` VARCHAR(45) NULL AFTER `first_name`;

      so, when the server detects the change through Jenkins to get the file and run it.

    • We don’t use GIT for the modeler, we use Subversion.

      We’re working on a solution to do pretty much what you’re asking for. For today you’d have to manually add those change scripts to your automation system.

    • Jacek Gebal

      Hi Jeff,
      It’s been quite a while since this question on using GIT with Data Modeler was asked.
      I now look at SQLDeveloper 17.4.1.
      There is an option to save data model to version control (git/svn) but in Help I still see only options for comparing data-model versions using SVN
      Any guide, help on how to do it when you’re using GIT as your version control system?

    • No screenshots, but check out the Modeler help topic, ‘Basic Workflow: Using Subversion with a Design.’

  4. So how do you TAG a version of your model for a release? Is there a best practices process for managing release of your design?

    • Technically, you can’t. But if you get bored, you could try dropping the jar in there and see what happens.

Write A Comment