If you intend to delete X rows from the table, then no amount of "query optimization" will help. Dbabren's suggestion is good, but if you don't want to go with that then other alternatives you have are:
1) Increase available rollback so that the delete doesn't fail
2) Break the job into smaller pieces, for example:
PHP Code:
begin
for r in (select homeid from <home table> where homeid NOT IN (#idlist#)
loop
delete from tracking.AT_Search where homeid = r.homeid;
commit;
end loop;
end;