Database Compare Schema finding false differences

Hi,

I am using Toad 12.8 and the Database Compare Schema feature and its finding lots of false differences when comparing schema between an Oracle 12.1.0.2.0 and 11.2.0.3.0 database. In particular relating to:

  • Table definition - “NO INMEMORY”.
  • Comments - LOB storage specs (not really comments but table comments being parse wrong).
  • Triggers - “description column of dba_triggers” or “schema specification in description column of dba_triggers” in “Differs By” but not differences when check.
    While none of these are show stoppers, it does cause quite a bit of pain as one have to check each of the differences to make sure that they are not “real” differences.

Am I doing something wrong hear? Is there a work around for this or is this a bug in Toad?

Vince

specification in description column of dba_triggers

Are you seeing a NO INMEMORY difference in the Results tab or only in the side-by-side viewer? I don’t see it in the results tab, and if you’re seeing it in the side-by-side viewer, that’s just because this param is in the script for Oracle 12.1.0.2 tables but not Oracle 11 tables. So some other difference is causing it to appear in the results tab, and the side-by-side viewer is not as smart and just showing text differences.

Can you be more specific about the lob storage and trigger differences? The only diff I’m seeing on LOBS is securefile vs basicfile and to me this seems like a legit difference. I don’t see the trigger problem.

A script to create some of these objects would be most helpful.

Thanks.

Oh, and if you don’t care about LOB storage diffs, go to the “Storage Clause Options” tab within schema compare and uncheck “Lob Storage”.

Hi John,

Sorry, I should have been clearer, going to try and include some pics.

Now I am doing a "Connection" (live) based schema compare. I see these false differences in the "Results" tree. The only option checked on the "Storage Clause Options" is tablespace (the LOB option is unchecked).

Example: Differs by "comment" or "inmemory" (seems to be the same cause):

Example: trigger diff example, no diff's shonw in visual compare.

My Toad Options are:

“Schema specification in description column of dba_triggers” means that one trigger was created like:

“create trigger schema.trigger_name on table schema.table_name…”

and the other was created like:

“create trigger trigger_name on table table_name…”

which isn’t terribly significant, unless you move your code from one schema to another. You can make that difference be ignored by going to the “object type specific options” tab and unchecking “compare schema name in description”. You don’t see these diffs in the side-by-side viewer because the “parse for schema names” option is also checked, which adds or remove the schema names according to the “include schema name in migration ddl” option (on the “misc options” tab).

As for tables, “no inmemory” will not make schema compare flag a difference unless both schemas are 12.1.0.2 or newer. However, if comparing 12.1.0.2 or newer with some older database, and there is some other difference that causes schema compare to flag a table, then you go to the side-by-side viewer, you’ll see “no inmemory” on the 12.1.0.2 script but not the older oracle version script. What does the “results” tab look like for the AGR table?

and What about "description column of dba_triggers" difference ?

Both sides has schema.trigger ...

I´m using TOAD for ORACLE 13.1.0.78

In both schemas/databases, run the query "select description from dba_triggers where trigger_name = 'TRG_ALIVE_DEL_CONFIGURATION' (or any of your other triggers) to see what the exact difference is. It may or may not be significant. Please let me know what you find. If I need to make a change, or can make a more descriptive "differs by" comment, I will

Thanks for your answer.

In one side we have upper case and other side has lower case. But the source code is the same in both sides.

but we ran the same script in both sides:

CREATE OR REPLACE TRIGGER LH_ALIVE.TRG_ALIVE_DEL_CONFIGURATION
BEFORE DELETE
ON lh_alive.alive_en_configuration
REFERENCING NEW AS new OLD AS old
FOR EACH ROW
WHEN (old.cd_alive_configuration = 1)
BEGIN
raise_application_error (-20999, 'Cannot delete CONFIGURATION #1.');
END;
/

but we ran the same script in both sides:

I don't know why Oracle would change the case. you can use these options to ignore minor differences like case, whitespace, etc.

image

Thank you very much John.

Luis H>
=-=-=-=-=-=-=-=-=-=-=-=-=-