У меня нет Oracle для тестирования.Это работает в SQL Server, и я считаю, что оно должно работать и в Oracle.
with R(id, parent_id, lvl) as
(
select id,
parent_id,
1
from YourTable
where parent_id is null
union all
select T.id,
T.parent_id,
R.lvl + 1
from YourTable as T
inner join R
on T.parent_id = R.id
)
select R.id,
R.parent_id
from R
order by lvl
В Oracle могут быть другие способы сделать то же самое.