Thursday, March 29, 2012

using md_backup & md_restore


Oracle backup utility RMAN only provide the backup for oracle data file but it won’t back up the ASM meta data. Thus in loss asm disk group, rman won’t help to restore the asm disk group. 

Oracle has provided mb_backup and md_restore commands to backup and restore the asm meta data.

We will practice how it works.

So now, connecting with the asm instance and creating new disk group.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Automatic Storage Management option


SQL> CREATE DISKGROUP DATA_REPORTING NORMAL REDUNDANCY DISK
  2   '/dev/raw/raw7' name disk5 ,
  3  '/dev/raw/raw8' name disk6 force;
Diskgroup created.
SQL>

SQL> select NAME, TOTAL_MB, FREE_MB from V$ASM_DISKGROUP;

NAME                                    TOTAL_MB    FREE_MB
------------------------------                  ----------            ----------
DATA                                          4000               1068
INDX                                             0                     0
DATA_REPORTING                     2000               1898

Now connecting with the database instance, we will create tablespace on this newly created disk group and also create new table on this tablespace.

SQL> create tablespace data_reporting datafile '+DATA_REPORTING';

Tablespace created.

SQL> select NAME from v$datafile;

NAME
--------------------------------------------------------------------------------
+DATA/oraw/datafile/system.256.744936879
+DATA/oraw/datafile/sysaux.257.744936887
+DATA/oraw/datafile/undotbs1.258.744936889
+DATA/oraw/datafile/users.259.744936891
+DATA_REPORTING/oraw/datafile/data_reporting.256.744952855

SQL> create table reporting(ID NUMBER , REP_DATE DATE) TABLESPACE DATA_REPORTING;

Table created.

SQL> insert into reporting values (1, sysdate);

1 row created.

SQL> insert into reporting values (2, sysdate);

1 row created.

SQL> commit;

Commit complete.

Elapsed: 00:00:00.57
SQL> select * from reporting;

        ID REP_DATE
---------- -------------------
         1 29-03-2012 18:55:04
         2 29-03-2012 18:56:22

Elapsed: 00:00:00.36
SQL>

Now connecting with the asmcmd (it is the command line utility to manage asm), we will do backup for this newly created diskgroup.

ASMCMD>
ASMCMD>  md_backup -b /tmp/asmbkp_data_reporting -G 'DATA_REPORTING'
WARNING:option 'b' is deprecated for 'md_backup'
Disk group metadata to be backed up: DATA_REPORTING
Current alias directory path: ORAW/DATAFILE
Current alias directory path: ORAW
ASMCMD>

Also to perform complete recovery, we are taking full rman backup.

[oracle@wissem ~]$ rman

Recovery Manager: Release 11.2.0.1.0 - Production on Sat Mar 5 19:13:05 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect target sys

target database Password:
connected to target database: ORAW (DBID=3426823299)

RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;

Starting backup at 05-MAR-11
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=24 device type=DISK
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=3 RECID=1 STAMP=744953697
channel ORA_DISK_1: starting piece 1 at 29-MAR-12
channel ORA_DISK_1: finished piece 1 at 29-MAR-12
piece handle=/u01/app/oracle/admin/ORAW/fra/ORAW/backupset/2011_03_05/o1_mf_annnn_TAG20110305T033502_6q38brxq_.bkp tag=TAG20110305T033502 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:16
Finished backup at 29-MAR-12

Starting backup at 29-MAR-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=+DATA/oraw/datafile/system.256.744936879
input datafile file number=00002 name=+DATA/oraw/datafile/sysaux.257.744936887
input datafile file number=00005 name=+DATA_REPORTING/oraw/datafile/data_reporting.256.744952855
input datafile file number=00003 name=+DATA/oraw/datafile/undotbs1.258.744936889
input datafile file number=00004 name=+DATA/oraw/datafile/users.259.744936891
channel ORA_DISK_1: starting piece 1 at 29-MAR-12
channel ORA_DISK_1: finished piece 1 at 29-MAR-12
piece handle=/u01/app/oracle/admin/ORAW/fra/ORAW/backupset/2011_03_05/o1_mf_nnndf_TAG20110305T033522_6q38chho_.bkp tag=TAG20110305T033522 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:07:54
Finished backup at 29-MAR-12

Starting backup at 29-MAR-12
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=4 RECID=2 STAMP=744954215
channel ORA_DISK_1: starting piece 1 at 29-MAR-12
channel ORA_DISK_1: finished piece 1 at 29-MAR-12
piece handle=/u01/app/oracle/admin/ORAW/fra/ORAW/backupset/2011_03_05/o1_mf_annnn_TAG20110305T034337_6q38tto8_.bkp tag=TAG20110305T034337 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 29-MAR-12

Starting Control File and SPFILE Autobackup at 29-MAR-12
piece handle=/u01/app/oracle/admin/ORAW/fra/ORAW/autobackup/2011_03_05/o1_mf_s_744954221_6q38v2xk_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 29-MAR-12

RMAN>

Now, we have disk group metadata backup (md_backup) and database backup (rman). So now connecting with the asm instance, we will drop this disk group.


SQL> alter diskgroup DATA_REPORTING DISMOUNT FORCE;

Diskgroup altered.

SQL> drop diskgroup DATA_REPORTING FORCE INCLUDING CONTENTS;

Diskgroup dropped.

Dropping if the disk group, crash the instance as it contains the datafile for tablespace data_reporting.

SQL>

Database instance:

SQL> select * from reporting;
select * from reporting
              *
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only

SQL>

So now, starting the recovery phase we will restore the diskgroup metadata using md_restore command.

[oracle@wissem ~]$ asmcmd
ASMCMD> md_restore /tmp/asmbkp_data_reporting -t full -g DATA_REPORTING
WARNING:option 'g' is deprecated for 'md_restore'
please use 'G'

WARNING:option 't' is deprecated for 'md_restore'
please use 'full|nodg|newdg'

Current Diskgroup metadata being restored: DATA_REPORTING
Diskgroup DATA_REPORTING created!
System template ONLINELOG modified!
System template AUTOBACKUP modified!
System template ASMPARAMETERFILE modified!
System template OCRFILE modified!
System template ASM_STALE modified!
System template OCRBACKUP modified!
System template PARAMETERFILE modified!
System template ASMPARAMETERBAKFILE modified!
System template FLASHFILE modified!
System template XTRANSPORT modified!
System template DATAGUARDCONFIG modified!
System template TEMPFILE modified!
System template ARCHIVELOG modified!
System template CONTROLFILE modified!
System template DUMPSET modified!
System template BACKUPSET modified!
System template FLASHBACK modified!
System template DATAFILE modified!
System template CHANGETRACKING modified!
Directory +DATA_REPORTING/ORAW re-created!
Directory +DATA_REPORTING/ORAW/DATAFILE re-created!
ASMCMD>

Confirming the restoration.
SQL> select NAME, TOTAL_MB, FREE_MB from V$ASM_DISKGROUP;

NAME                             TOTAL_MB    FREE_MB
------------------------------           ----------          ----------
DATA                                 4000             1068
INDX                                      0                   0
DATA_REPORTING            2000             1898

SQL>

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

Now since disk group is restore, we can use RMAN to restore the datafile.

[oracle@wissem ~]$ rman

Recovery Manager: Release 11.2.0.1.0 - Production on Mar 29 19:29:31 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect target sys

target database Password:
connected to target database: ORAW (DBID=3426823299, not open)

RMAN> restore database;

Starting restore at 29-MAR-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=25 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to +DATA/oraw/datafile/system.256.744936879
channel ORA_DISK_1: restoring datafile 00002 to +DATA/oraw/datafile/sysaux.257.744936887
channel ORA_DISK_1: restoring datafile 00003 to +DATA/oraw/datafile/undotbs1.258.744936889
channel ORA_DISK_1: restoring datafile 00004 to +DATA/oraw/datafile/users.259.744936891
channel ORA_DISK_1: restoring datafile 00005 to +DATA/oraw/datafile/data_reporting.266.744955249
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/admin/ORAW/fra/ORAW/backupset/2011_03_05/o1_mf_nnndf_TAG20110305T033522_6q38chho_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/admin/ORAW/fra/ORAW/backupset/2011_03_05/o1_mf_nnndf_TAG20110305T033522_6q38chho_.bkp tag=TAG20110305T033522
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:07:42
Finished restore at 29-MAR-12

RMAN> recover database;

Starting recover at 29-MAR-12
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:29

Finished recover at 29-MAR-12
From above, note that RMAN restored the DATA_REORTING datafie to +DATA diskgroup.
But, we would like to restore the DATA_REORTING datafie to +DATA_REPORTING diskgroup as it was before the failure.
Also note that the restored datafile is in offline state:

SQL> SELECT FILE_NAME, TABLESPACE_NAME, ONLINE_STATUS from DBa_DATA_FILES;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME                ONLINE_
------------------------------ -------
+DATA/oraw/datafile/users.259.744936891
USERS                          ONLINE

+DATA/oraw/datafile/undotbs1.258.744936889
UNDOTBS1                       ONLINE

+DATA/oraw/datafile/sysaux.257.744936887
SYSAUX                         ONLINE

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME                ONLINE_
------------------------------ -------
+DATA/oraw/datafile/system.256.744936879
SYSTEM                         SYSTEM

+DATA/oraw/datafile/data_reporting.266.744955249
DATA_REPORTING                 OFFLINE

SQL> ALTER DATABASE OPEN;

Database altered.
Confirming for the data restoration by querying the newly created table.

SQL> select * from reporting;

        ID REP_DATE
---------- ---------
         1 29-MAR-12
         2 29-MAR-12

SQL>
Regards,
Jay Vardhan
jayvardhancs@gmail.com

Monday, March 26, 2012

I/O information for datafiles


extract how much I/O is performed on datafiles.

set lines 180
col name format A50
select   NAME,
  PHYRDS "Physical Reads",
  round((PHYRDS / PD.PHYS_READS)*100,2) "Read %",
  PHYWRTS "Physical Writes",
  round(PHYWRTS * 100 / PD.PHYS_WRTS,2) "Write %",
  fs.PHYBLKRD+FS.PHYBLKWRT "Total Block I/O's"
from (
  select   sum(PHYRDS) PHYS_READS,
    sum(PHYWRTS) PHYS_WRTS
  from    v$filestat
  ) pd,
  v$datafile df,
  v$filestat fs
where   df.FILE# = fs.FILE#
order   by fs.PHYBLKRD+fs.PHYBLKWRT desc;

Sample output:

NAME                                               Physical Reads     Read % Physical Writes    Write % Total Block I/O's
-------------------------------------------------- -------------- ---------- --------------- ---------- -----------------
/p07/oradata/padwsdpr/SGDATA_PART_DATA_03.dbf            46817222        4.2          526942        .66         242239138
/p07/oradata/padwsdpr/SGDATA_PART_DATA_01.dbf            45504990       4.09          570122        .72         227943429
/p03/oradata/padwsdpr/SGDATA_PART_DATA_02.dbf            48710514       4.37          547700        .69         226105668
/p03/oradata/padwsdpr/SGDATA_PART_DATA_08.dbf            39217397       3.52          503078        .63         208712510
/p07/oradata/padwsdpr/SGDATA_PART_DATA_09.dbf            40487221       3.64          487099        .61         204213299







Sunday, March 25, 2012

Recovery Process Flow of Physical Standby


The Actual Recovery Process Flow of Physical Standby (10gR2 & 11G)

Story is to present the step by step process how recovery is performed at standby side.

Let’s start the journey with important background process:

From Primary side :-

ORL: Online redo log file. Any changes happen, it is captured and store in redo log file that is very frequently also called ORL.

LGWR: The log writer process flushes the data from log buffer (SGA) to ORL.

LNS: The Logwritter Network Services which read the redo being flushed from the log buffer and send over the network to standby site.

ARCH: The Archiver process the archive the ORL.

From Standby Side:-

RFS: Remote file server process and its main objective is to receive the data send by LNS process and write into the Standby redo logfile.

MRP: The managed recovery process and it work for the media recovery management.

PROx: Works as recovery process.

Objective is to focus on how data is received and it is applied to the standby. I will try to cover the step by when replicated data is written in datafiles for standby database.

The actual Recovery process done in three phases:

As data is collected by the LNS process and send over the network. Where it is recoved by the RFS process and written down to standby redo logfile. So upto now, the replicated data or better say changes are present in standby redo logfile.

Log red phase: The background process MRP will keep reading the SRL asynchronously. Many times it also read from archived log files when recovery falls behind the real time apply. The blocks that require the redo apply (changes) and parsed and placed into the memory.

Redo Apply phase: The MRP process transfer redo data to the recovery slaves process using the parallel query process. the Parallel media recovery (PMR) causes the required data block to be read into the buffer cache and apply redo changes to the buffer in buffer cache.

Checkpoint phase: This is the last step performed in recovery phase. It involves the flushing the recently modified data to the disk and also update the datafile header to record checkpoint completion.

Real Time Apply: So in brief redo is received by RFS on the standby system, The RFS process writes the redo to SRL and thus changes where directly captured and applied. This is also called as Real Time Apply in terms of standby database.

Following command is needed to start RTA (Real Time Apply) that is to be executed at sql prompt.

alter database recover managed standby database using current logfile disconnect;

Below can be used to check where RTA is started that is to be executed at Primary side.

select recovery_mode from v$archive_dest_status where dest_id=2;

Thursday, March 22, 2012

owner of any table be changed with trigger


Can owner of any table be changed automatically.. if you say no, here is an example.

SQL> select * from v$version;

BANNER                                                                                                                                                
------------------------                                                                     
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production                                                                               
PL/SQL Release 11.2.0.1.0 - Production                                                                                                               
CORE  11.2.0.1.0      Production                                                                                                                           
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production                                                                                               
NLSRTL Version 11.2.0.1.0 – Production

Login through SCOTT schema and created a table but somehow table not created in SCOTT. Let see how.

SQL> conn scott/tiger
Connected.
SQL> show user
USER is "SCOTT"
SQL> create table magic(name varchar2(9));

Table created.

SQL> select table_name from user_tables where table_name='MAGIC';

no rows selected

So where does table goes, let check. And We found that, somehow it is created in other schema i.e. JAY..

SQL> conn / as sysdba
Connected.
SQL> col owner format A25
SQL> col object_type format A25
SQL> col object_name format A25
SQL> select owner,object_name,object_type from dba_objects where object_name = 'MAGIC';

OWNER                     OBJECT_NAME               OBJECT_TYPE                                                                                      
---------- -------- ------------                                                                         
JAY                       MAGIC                     TABLE                                                                            

How.. let see that..

We have created a trigger for DB_LOGON that was playing this game. Let see its DDL.

SQL> Set pages 999;
SQL> set long 90000
SQL> select DBMS_METADATA.get_ddl('TRIGGER','DB_LOGON','SYS') txt from dual;

TXT                                                                                                                                                  
---------------------                                                                      
                                                                                                                                                      
  CREATE OR REPLACE TRIGGER "SYS"."DB_LOGON"                                                                                                         
AFTER logon ON DATABASE  WHEN (USER = 'SCOTT') BEGIN                                                                                                  
execute immediate 'ALTER SESSION SET CURRENT_SCHEMA = JAY';                                                                                          
END;                                                                                                                                                  
ALTER TRIGGER "SYS"."DB_LOGON" ENABLE    

Also when we did login to SCOTT schema and check from v$session, its gives something new out.

SQL> conn scott/tiger
Connected.
SQL> show user
USER is "SCOTT"
SQL> select username,schemaname from v$session where username='SCOTT';

USERNAME                       SCHEMANAME
---------- ----------
SCOTT                          JAY               

SQL> Alter trigger db_logon disable;

Trigger altered.

SQL> conn scott/tiger
Connected.
SQL> show user
USER is "SCOTT"

SQL> select username,schemaname from v$session where username='SCOTT';

USERNAME                       SCHEMANAME                                                                                                            
------------ ----------                                                                                         
SCOTT                          SCOTT  

SQL> create table magic1(name varchar2(9));

Table created.

SQL> select table_name from user_tables where table_name='MAGIC1';

TABLE_NAME                                                                                                                                            
------------                                                                                                                        
MAGIC1                     


Tuesday, March 20, 2012

what features are enable on database

Script to check, what features are enable on database.



select samp.dbid, fu.name, samp.version, detected_usages, total_samples,
  decode(to_char(last_usage_date, 'MM/DD/YYYY, HH:MI:SS'),
         NULL, 'FALSE',
         to_char(last_sample_date, 'MM/DD/YYYY, HH:MI:SS'), 'TRUE',
         'FALSE')
  currently_used, first_usage_date, last_usage_date, aux_count,
  feature_info, last_sample_date, last_sample_period,
  sample_interval, mt.description
 from wri$_dbu_usage_sample samp, wri$_dbu_feature_usage fu,
      wri$_dbu_feature_metadata mt
 where
  samp.dbid    = fu.dbid and
  samp.version = fu.version and
  fu.name      = mt.name and
  fu.name not like '_DBFUS_TEST%' and  /* filter out test features */
  bitand(mt.usg_det_method, 4) != 4    /* filter out disabled features */
 ;




Wednesday, March 14, 2012

dbms_comparison


To start with, many of the times we need to compare to the schema may be on same DB or on Remote. As of example, when struggling in Oracle Replication, Streams or many times in Golden Gate. To compare, many including me used for application like TOAD but there are some clients which won’t allowed for TOAD. So for them ORACLE has provided “DBMS_COMPARISON” that will not just compare the two objects but also can used to Synchronizes the database objects previously compared.

Requirements & limitations :

When running DBMS_COMPARISON, the local comparison database where the call to DBMS_COMPARISON is being made must be an Oracle 11g database. The remote database can be an Oracle 10g Release one or later. Also the database character sets on both databases must be the same.

DBMS_COMPARISON package supports all Oracle Data Types except LOB,CLOB,BLOB,LONG, RAW, ROWID etc.

DBMS_COMPARISON also supports different scan modes.

CMP_SCAN_MODE_FULL: The full database object is compared.
CMP_SCAN_MODE_RANDOM: The object is randomly scanned for the comparison.
CMP_SCAN_MODE_CYCLIC: Only a portion of the database object is scanned.

So now using the DBMS_COMPARISON.

To perform comparison, we need to perform few steps:

Create a comparison
Execute comparison & see the result
Converge the data if desired

To start with, I will create dblink between source & remote database i.e. target.

SQL> select 'dbms_comparison' from dual;

'DBMS_COMPARISO                                                                
---------------                                                                
dbms_comparison                                                                

SQL> show user
USER is "SYS"
SQL>
SQL> CREATE DATABASE LINK dbms connect to jay identified by jay using 'target';

Database link created.

SQL> SELECT * FROM DUAL@dbms;

D                                                                              
-                                                                              
X

Also to add, index must be present to use this package.

SQL> conn jay/jay
Connected.
SQL> create table emp   (a number primary key,  b varchar2(22));

Table created.

SQL> insert into emp  values(1, 'Bilal');

1 row created.

SQL>  insert into emp   values(2,'Ferdous');

1 row created.

SQL> commit;

Commit complete.

Also creating table on target DB

SQL> conn jay/jay@target
Connected.
SQL> create table emp   (a number primary key,  b varchar2(22));

Table created.

Now creating comparison:

SQL> conn / as sysdba
Connected.
SQL> BEGIN
  2  DBMS_COMPARISON.CREATE_COMPARISON  ( comparison_name => 'emp_replication',  schema_name=> 'jay',object_name => 'emp' ,dblink_name =>'dbms' , remote_schema_name=>'jay', remote_object_name=>'emp');
  3  END;
  4   /

PL/SQL procedure successfully completed.

Now executing the comparison and looking for any difference:

SQL> set serveroutput on
SQL>  DECLARE
  2    consistent   BOOLEAN;
  3    scan_info    DBMS_COMPARISON.COMPARISON_TYPE;
  4   BEGIN  consistent := DBMS_COMPARISON.COMPARE( comparison_name => 'emp_replication',
  5           scan_info => scan_info, perform_row_dif => TRUE);
  6           DBMS_OUTPUT.PUT_LINE('Scan ID: '||scan_info.scan_id);
  7   IF     consistent=TRUE THEN
  8            DBMS_OUTPUT.PUT_LINE('No differences were found.');
  9   ELSE
 10            DBMS_OUTPUT.PUT_LINE('Differences were found.');
 11   END IF;
 12   END;
 13  /
Scan ID: 1                                                                     
Differences were found.                                                        

PL/SQL procedure successfully completed.

Now since we have difference in data, we can use dbms_comparison to synch the data.

SQL> DECLARE
  2     scan_info    DBMS_COMPARISON.COMPARISON_TYPE;
  3  BEGIN
  4     DBMS_COMPARISON.CONVERGE( comparison_name  => 'emp_replication',
  5           scan_id => 1 , scan_info => scan_info, converge_options => DBMS_COMPARISON.CMP_CONVERGE_LOCAL_WINS);
  6           DBMS_OUTPUT.PUT_LINE('Local Rows Merged: '||scan_info.loc_rows_merged);
  7           DBMS_OUTPUT.PUT_LINE('Remote Rows Merged: '||scan_info.rmt_rows_merged);
  8           DBMS_OUTPUT.PUT_LINE('Local Rows Deleted: '||scan_info.loc_rows_deleted);
  9           DBMS_OUTPUT.PUT_LINE('Remote Rows Deleted: '||scan_info.rmt_rows_deleted);
 10  END;
 11   /
Local Rows Merged: 0                                                           
Remote Rows Merged: 2                                                          
Local Rows Deleted: 0                                                           
Remote Rows Deleted: 0                                                         

PL/SQL procedure successfully completed.

SQL> conn jay/jay@target
Connected.
SQL> select * from emp;

         A B                                                                    
---------- ----------------------                                              
         1 Bilal                                                               
         2 Ferdous 

If you forget the SCAN_ID you can use the following SQL to find it:

SELECT DISTINCT ROOT_SCAN_ID
FROM DBA_COMPARISON_SCAN_SUMMARY
WHERE COMPARISON_NAME = 'QUEST_COMPARE';

Review the Results of the Comparison

SELECT a.owner, a.comparison_name, a.schema_name, a.object_name,
z.current_dif_count difference
FROM dba_comparison a, dba_comparison_scan_summary z
WHERE a.comparison_name=z.comparison_name
AND a.owner=z.owner
AND z.scan_id=& scan_id;

You can use this query to product a list of all comparisons:

SELECT OWNER,
       ,COMPARISON_NAME
       ,SCHEMA_NAME
       ,OBJECT_NAME
       ,OBJECT_TYPE
       ,SCAN_MODE
       ,DBLINK_NAME
  FROM DBA_COMPARISON;