Outer-joins always use nested loops. A hash join needs a row to exist in both tables for the merge to succeed. You want to include data from A that doesn't exist in B, so Oracle knows that a hash join won't work, but a nested loop will be able to keep the driving row (A) even if nothing is found in B.