oradiff – Diffing two schemas


oradiff can be used to find the difference between two Oracle database schemas.


oradiff supports the following options:


Oracle connectstring for the first database schema.


Oracle connectstring for the second database schema.

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

Produces output (on stderr) while the database is read. (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.

-m <mode>, --mode <mode>

Specifies how the differences should be shown. brief only prints whether objects are different (or which ones exist in only one of the databases); udiff outputs the differences in “unified diff” format and full outputs the object from the second schema if they differ (i.e. it outputs the script that must be executed to copy the differences from schema 2 to schema 1).

--format <format>

If --mode is full, this determines the output format: Plain SQL (format sql), or PySQL (format pysql) which can be piped into ll.pysql.

-n <context>, --context <context>

The number of context lines in unified diff mode (i.e. the number of unchanged lines above and below each block of changes; the default is 2)

-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 included in the output). (Valid flag values are false, no, 0, true, yes or 1)

-b <mode>, --blank <mode>

The -b option specifies how whitespace in the database objects should be compared. With literal all whitespace is significant, with trail trailing whitespace will be ignore, with lead leading whitespace will be ignored, with both trailing and leading whitespace will be ignored and with collapse trailing and leading whitespace will be ignored and stretches of whitespace will be treated as a single space.


Compare the schemas user@db and user2@db2, collapsing whitespace and using unified diff mode with 5 context lines:

$ oradiff user/pwd@db user2/pwd2@db2 -bcollapse -mudiff -n5 -v >db.diff