I have been looking during hours for a way to check in a database into source control. My first idea was a program for calculating database diffs and ask all the developers to imlement their changes as new diff scripts. Now, I find that if I can dump a database into a file I cound check it in and use it as just antother type of file.
The main conditions are:
- Works for Oracle 9R2
- Human readable so we can use diff to see the diferences. (.dmp files doesn't seem readable)
- All tables in a batch. We have more than 200 tables.
- It stores BOTH STRUCTURE AND DATA
- It supports CLOB and RAW Types.
- It stores Procedures, Packages and its bodies, functions, tables, views, indexes, contraints, Secuences and synonims.
- It can be turned into an executable script to rebuild the database into a clean machine.
- Not limitated to really small databases (Supports least 200.000 rows)
It is not easy. I have downloaded a lot of demos that does fail in one way or another.
EDIT: I wouldn't mind alternatives aproaches provided that they allows us to check a working system against our release DATABASE STRUCTURE AND OBJECTS + DATA in a bath mode.
By the way. Our project has been developed for years. Some aproaches can be easily implemented when you make a fresh start but seem hard at this point.
EDIT: To understand better the problem let's say that some users can sometimes do changes to the config data in the production eviroment. Or developers might create a new field or alter a view without notice in the realease branch. I need to be aware of this changes or it will be complicated to merge the changes into production.