A merge join is performed when there is no viable index to use in a nested loop. In this case, Oracle retrieves all rows from each of the two tables, and sorts them prior to performing the join.