Obliczenie różnić

0

Witam,
poniższe zapytanie wyświetli mi obiekty które są w pierwszej bazie(połączenie dblink), ale nie ma ich w drugiej.
SELECT count(*), owner, object_type
FROM dba_objects@dblink d1 WHERE NOT EXISTS
(SELECT owner, object_type FROM dba_objects d2
WHERE d1.owner = d2.owner and d1.object_type = d2.object_type)
and d1.owner not in ('SYS', 'SYSTEM', 'PUBLIC', 'SYSAUX') group by owner, object_type;

Natomiast chciałbym otrzymać różnicę obiektów z pierwszej i drugiej bazy oraz ich count. Operator MINUS wskazuje błędne wyniki.
Czy macie na to rozwiązanie jakieś pomysły?

Dzięki i życzę szczęśliwego nowego roku!!!

0

Może tak?

select 
  count(0),
  owner,
  object_type 
from (
  select owner,object_type,object_name from dba_objects
  minus
  select owner,object_type,object_name from dba_objects@dblink
) 
group by 
  owner,
  object_type
0

Niestety zapytanie nie zwraca poprawnego wyniku przykładowo:
select count(0), owner, object_type from dba_objects@dblink where owner = 'SYS' and object_type = 'INDEX' group by owner, object_type;
-- zwróci 213

select count(0), owner, object_type from dba_objects where owner = 'SYS' and object_type = 'INDEX' group by owner, object_type;

-- zwróci również 213

a po wykonaniu zapytania wynik jest następujący:

9 SYS INDEX

A nie powinno zwrócić tego rekordu gdyż count w obu przypadkach jest równy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1