You seem to want things that are only in one table, but not both. It requires a bit more comparison work, but you can just use not exists
:
select 1 as src, t1.*
from tab_1 t1
where not exists (select 1 from tab_2 t2 where t2.col1 = t1.col1 and . . . )
union all
select 2 as src, t2.*
from tab_2 t2
where not exists (select 1 from tab_1 t1 where t1.col1 = t2.col1 and . . .);
In this case, the *
really does mean all the columns, including key columns. This version assumes the two tables have the same columns in the same order; in practice, you would normally want an explicit column list.
The where
clause looks for the values that you want to test for duplication, so these would not include key columns.