When Temp space is allocated, system will retain it. So once allocated, the TEMP tablespace will always appear being "used" and not released. So it is normal to see temp appears "full". We can get to know what is really used and what is not through checking v$sort_usage.
Question 1: I used the following query to catch who taking a big temp space.
SELECT s.username,u.SESSION_NUM, u.tablespace, u.contents, u.extents, u.blocks FROM v$session s,
v$sort_usage u WHERE s.saddr=u.session_addr;
Do you have any other good idea to catch the information?
Question 2: Do you have a long query with many join takes a big space of TEMP tablespace? I want to test catching the information who taking a big temp space.