What is it about your existing query that you don't like?  If you are concerned that DISTINCT across two columns does not return just the unique permutations why not try it?   
It certainly works as you might expect in Oracle.
SQL> select distinct deptno, job from emp
  2  order by deptno, job
  3  /
    DEPTNO JOB
---------- ---------
        10 CLERK
        10 MANAGER
        10 PRESIDENT
        20 ANALYST
        20 CLERK
        20 MANAGER
        30 CLERK
        30 MANAGER
        30 SALESMAN
9 rows selected.
SQL> select count(*) from (
  2  select distinct deptno, job from emp
  3  )
  4  /
  COUNT(*)
----------
         9
SQL>
edit
I went down a blind alley with analytics but the answer was depressingly obvious...
SQL> select count(distinct concat(deptno,job)) from emp
  2  /
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
                                9
SQL>
edit 2
Given the following data the concatenating solution provided above will miscount:
col1  col2
----  ----
A     AA
AA    A
So we to include a separator...
select col1 + '*' + col2 from t23
/
Obviously the chosen separator must be a character, or set of characters, which can never appear in either column.