oramerge – Three-way merging of schemas

Purpose

oramerge can be used for merging the changes between two Oracle database schemas into a third one. Depending on the existance/non-existance of schema objects in the three schemas oramerge does the right thing. If a schema objects exists in all three schemas, the external tool merge3 will be used for creating a merged version of the object (except for tables where the appropriate ALTER TABLE statements will be output if possible).

Options

oramerge supports the following options:

connectstring1

Old version of database schema

connectstring2

New version of database schema

connectstring3

Schema into which changes should be merged

-v <flag>, --verbose <flag>

Produces output (on stderr) while the database is read or written. (Valid flag values are false, no, 0, true, yes or 1)

-c <mode>, --color <mode>

Should the output (when the -v option is used) be colored? If auto is specified (the default) then the output is colored if stderr is a terminal. Valid modes are yes, no or auto.

-k <flag>, --keepjunk <flag>

If false (the default), database objects that have $ or SYS_EXPORT_SCHEMA_ in their name will be skipped (otherwise these objects will be considered as merge candidates). (Valid flag values are false, no, 0, true, yes or 1)

--thick <flag>

If true, use oracledbs thick mode. (Valid flag values are false, no, 0, true, yes or 1)

--config_dir <directory>

In oracledbs thin mode, specify the directory that contains the tnsnames.ora file. This can be used if “Connect Descriptor Strings” from tnsnames.ora must be used but tnsnames.ora can’t be found in its default location.

Example

Output a script that merges the changes between user@db and user2@db2 into user3@db3:

$ oramerge user/pwd@db user2/pwd2@db2 user3/pwd3@db3 -v >db.sql