Clean Temporary Segments

I can see several temporary segments eating about 485 MB in one of the schemas in my database:

---------------------------------------- ------------------------------ ------------------ ----------
4.194730				 USERS				TEMPORARY		.0625
4.194722				 USERS				TEMPORARY		.0625
4.194634				 USERS				TEMPORARY		.0625
4.194626				 USERS				TEMPORARY		.0625
4.194554				 USERS				TEMPORARY		.0625
4.194474				 USERS				TEMPORARY		.0625
4.194450				 USERS				TEMPORARY		.0625
4.194442				 USERS				TEMPORARY		.0625
6.370					 USERS				TEMPORARY		  104
6.354					 USERS				TEMPORARY		   13
4.30594 				 USERS				TEMPORARY		  104
4.122354				 USERS				TEMPORARY		   13
4.58578 				 USERS				TEMPORARY		    2
4.10322 				 USERS				TEMPORARY		   43
4.78234 				 USERS				TEMPORARY		   13
6.34810 				 USERS				TEMPORARY		   28
6.71458 				 USERS				TEMPORARY		  112
4.181154				 USERS				TEMPORARY		   53

18 rows selected.

Open in new window

I bounced the database but they are still there. Can you please help me clean them?
Who is Participating?
gheistConnect With a Mentor Commented:
They are kept around for reuse. If you dump and reload data sure they disappear for short time DB spins up.
Tomas Helgi JohannssonCommented:

Cleaning up temporary segments is done automatically by SMON for DMT.
However, you can do that manually, by
alter tablespace USERS coalesce;

    Tomas Helgi
sysautomationAuthor Commented:
I have already tried coalesce but no change.
The new generation of project management tools

With’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

Sanjeev LabhDatabase ConsultantCommented:
I think the link below covers the issue quite nicely, with various other options to remove the temporary segments.
sysautomationAuthor Commented:
Sorry I could not see it timely. But none of the solutions given worked for me.

SQL> select ts# from sys.ts$ where name = 'USERS';


SQL> alter session set events 'immediate trace name DROP_SEGMENTS level 5';

Session altered.

But still I have temporary segments as before:

SQL>  select tablespace_name, sum(bytes/1024/1024) from dba_segments
  2* where segment_type = 'TEMPORARY' group by tablespace_name

SQL> /

TABLESPACE_NAME              SUM(BYTES/1024/1024)
------------------------------ --------------------
USERS                                 488.5625

Second method is throwing some error:


ERROR at line 1:
ORA-08103: object no longer exists
ORA-06512: at "SYS.DBMS_SPACE_ADMIN", line 83
ORA-06512: at line 1
Sanjeev LabhDatabase ConsultantCommented:
You have not posted as to what type of operation was in progress. Did you try to find and see whether it was a DDL. Because for that you will not be able to drop till the time the operation finishes.
sysautomationAuthor Commented:
I am not aware of any operation going on. It has been about a month old problem and hence even if a DDL was run it should have finished by now. Also the DB was bounced a few times therefore any operation would have been killed before completion.
slightwv (䄆 Netminder) Commented:
They probably should not have survived a database bounce.

There are many posts out there that talk about the tablespace being read only but I cannot imagine USERS being set to read only.  If it is, set it to read write and try the coalsece again.

If that isn't the case try removing ALL temp segments:
alter session set events 'immediate trace name DROP_SEGMENTS level 2147483647';

If they remain, I would probably open up an SR with Oracle Support.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.