Start with removing the left joins.
You're not using any fields from the joined tables (b) and as the joins are being of the left kind, means that no rows are sorted away from the first table (a) in the joins.
And, I'm getting the impression that the database isn't normalized, or are the tables actually views?
<edit>I've made some assumptions, try this:
WITH tab AS (
SELECT a.id ID
,a.name NAME
,'222' TYPE
,1 AS ORD
,'Navigation' CATEGORY
,NULL DOCTYPE
FROM sur_222 a
WHERE a.id IN (:ID)
UNION ALL
SELECT a.id ID
,a.name NAME
,'333' TYPE
,1 AS ORD
,'Navigation' CATEGORY
,NULL DOCTYPE
FROM sur_333 a
WHERE a.id IN (:ID)
)
SELECT ID
,NAME
,TYPE
,ORD
,CATEGORY
,Decode (Count(*),1,0,Count(*)) total
,DOCTYPE
FROM tab a, files_v v
WHERE sur_id = a.id
AND sur_type = TYPE
AND data_type = 'Navigation'
GROUP BY ID
,NAME
,TYPE
,ORD
,CATEGORY
,DOCTYPE
</edit>