It could probably be optimized, but this query will do the trick, if you have Oracle version 10g or later:
WITH prv_nxt AS (
SELECT serial
,Lag(status,1,0) OVER (ORDER BY serial) previous
,status
,Lead(status,1,0) OVER (ORDER BY serial) nxt
FROM temp
)
,CHANGE AS (
SELECT serial
,1 CHANGE
FROM prv_nxt
WHERE previous = 0
AND status = 1
UNION
SELECT serial
,0 CHANGE
FROM prv_nxt
WHERE status = 1
AND nxt = 0
)
, start_stop AS (
SELECT serial startserial
,Lead(serial,1,NULL) OVER (ORDER BY serial) stopserial
,change
FROM CHANGE
)
SELECT startserial || ' to ' || stopserial range
FROM start_stop
WHERE CHANGE = 1