Shrinking Temp Tablespace

While looking available options to shrink temp tablespace, i found the following options, i found 1st one easiest. I want to know difference b/t them.
ALTER TABLESPACE TEMP SHRINK SPACE;
ALTER DATABASE TEMPFILE ‘/orcl/tempfile/temp.dbf′ RESIZE 200M;
ALTER TABLESPACE TEMP SHRINK TEMPFILE ‘/orcl/tempfile/temp.dbf′ KEEP 100M;

malhi wrote:
While looking available options to shrink temp tablespace, i found the following options, i found 1st one easiest. I want to know difference b/t them.
ALTER TABLESPACE TEMP SHRINK SPACE;
ALTER DATABASE TEMPFILE ‘/orcl/tempfile/temp.dbf′ RESIZE 200M;
ALTER TABLESPACE TEMP SHRINK TEMPFILE ‘/orcl/tempfile/temp.dbf′ KEEP 100M;
Read documentation from Oracle. http://docs.oracle.com/cd/B28359_01/server.111/b28310/tspaces007.htm#CFHJFBBJ

Similar Messages

  • Shrink TEMP tablespace

    Hi,
    I am confused how come a tempfile grow so big? and when do I need to shrink the TEMPFILE.
    Our Templfile is now 20G, when in fact the largest tablespace (data) is only 1g, so the tables inside it must be smaller in size.
    Thanks

    hi,
    the temp tablespace is used for sorting operation, and it does not contain your user data.
    the size of your temp tablespace is really depending on your appkication behaviour.
    avoid to much sorting to ensure your temp tablespace did not consume lot of space.
    you can drop the current temporary tablespace and create a new one.
    or you can add another temp file, or extend the existing one.
    tq

  • To shrink the size of TEMP tablespace

    Dear all,
    There is a databse with RAC, now in OEM the size of TEMP tablespace has been reached at 99.9%. now we want to shrink the size of TEMP tablespace.
    how to we do that???????
    plz help me...........

    Temporary tablespaces usually show they are full, however this space is not actually in use. It is rather allocated. Oracle has evaluated the best way to obtain the most of performance, and he said it is better to allocate once than allocate-deallocate-reallocate extents, so temporary space is not 'released'.
    If you want to feel psychologically more confortable with lower allocated space, you can drop your tablespace (create an interim default temporary tablespace first) and recreate it.
    You can also rebuild temporary datafiles:
    alter tablespace temp add tempfile 'C:\ORACLE\ORACLEXE\ORADATA\XE\TEMP01.dbf' size 32m;
    SQL> select name from v$tempfile;
    NAME
    C:\ORACLE\ORACLEXE\ORADATA\XE\TEMP.DBF
    C:\ORACLE\ORACLEXE\ORADATA\XE\TEMP01.DBF
    SQL> alter database tempfile 'C:\ORACLE\ORACLEXE\ORADATA\XE\TEMP01.DBF' drop including datafiles;
    Database altered.

  • PDB without local TEMP Tablespace

    Due to the Oracle Database 12c Concepts Guide it should be possible to create a PDB without a local TEMP Tablespace and the create PDB syntax includes the option (MAX_SHARD_TEMP_SIZE).
    But I cannot find any hint how to create a PDB without a TEMP Tablespace or how to change the default temp tablespace to point to the CDB:
    Any help will be appreciated.

    There is no standard way to create a PDB without a TEMP tablespace
    Yes - there is. But you CLEARLY don't want to do things the standard way. You want to use some particular non-standard way.
    It is not 'standard' to create a database without a temporary tablespace. That is almost ALWAYS a mistake. That generally happens when you use the CREATE DATABASE command and don't specify it properly.
    When you create a database you do NOT have to create a temporary tablespace. That has been the RULE from the very beginning and it is still true for 12c. For proof see the DBA Guide:
    http://docs.oracle.com/cd/E16655_01/server.121/e17636/create.htm#i1009290
    Creating a Default Temporary Tablespace
    The DEFAULT TEMPORARY TABLESPACE clause of the CREATE DATABASE statement creates a default temporary tablespace for the database. Oracle Database assigns this tablespace as the temporary tablespace for users who are not explicitly assigned a temporary tablespace.
    You can explicitly assign a temporary tablespace or tablespace group to a user in the CREATE USER statement. However, if you do not do so, and if no default temporary tablespace has been specified for the database, then by default these users are assigned the SYSTEM tablespace as their temporary tablespace. It is not good practice to store temporary data in the SYSTEM tablespace, and it is cumbersome to assign every user a temporary tablespace individually. Therefore, Oracle recommends that you use the DEFAULT TEMPORARY TABLESPACE clause of CREATE DATABASE.
    You don't have to believe me or the docs.
    Try it yourself. That is the best way to learn. Post your results here for all to see.
    That is what that 12c doc says and what ALL of the docs for the versions before say. See for yourself. Here is the doc link for Oracle 7.3 so you can see the CREATE DATABASE systax yourself
    http://docs.oracle.com/cd/A57673_01/DOC/server/doc/SQL73/ch4a.htm#createdatabase
    Without a temp tablespace Oracle is forced to use the SYSTEM tablespace for the temporary.
    These are the STANDARD ways:
    1. Create PDB with a temporary tablespace.
    2. Use the DBCA with a custom template
    3. Create your own PDB seed database without a temp tablespace and then clone your seed to create other PDBs without a temp tablespace
    4. Use CREATE DATABASE to create a DB without a temp tablespace and then plug it in to your CDB root container.
    Those are ALL standard methods. The last three result in PDBs withoug a temp tablespace.
    #1 is what you should be using.
    1. Create PDB with a temporary tablespace.
    2. Shrink/resize the temp tablespace down to a minimum if you want
    3. Assign the users to the CDB temp tablespace if you don't want them using the PDB temp
    I would appreciate if you only answer to questions if you have tested it or have a precise answer to it!
    I have done BOTH of those things. Your failure to recognize that is NOT my problem.
    I have created a PDB without a temp tablespace using DBCA and a custom template.
    I have also created a PDB without a temp tablespace by using the historical standard method of CREATE DATABASE  without a temp tablespace and then plugging it into the CDB and a PDB.
    It is YOUR responsibility to RTFM and YOUR responsibility to actually put your fingers on the keyboard and try things.
    The forum is NOT a coding service so you have no right to expect someone to write code for you and no right to get upset if they don't.
    dbca doesn't use any other commands than the one's I've already tried!
    Your reality is different than Oracle's. Support your reality with some facts.
    I just created a PDB (create pluggable database) and no wonder that one comes with a temp tablespace.
    I don't see where you posted ANYTHING that shows:
    1. exactly WHAT you did
    2. exactly HOW you did it
    3. exactly what results you got.
    If you want help with the code or a process you are using you have to POST that code or process.
    We can NOT see your computer screen to see what screens you see or what entries you make.
    Complain about the messenger all you want.
    But you will NOT be successful with 12c if you refuse to RTFM and refuse to try things yourself. Making unsubstantiated statements or trying to attack me may make you feel better but you won't learn anything from it.

  • Maximum Temp tablespace size you've seen

    DB version: 10.2.0.4
    Our DB caters a retail application . Total DB Size of 3TB. Its is a bit of mix of both OLTP and Batch processing environment.
    Our temp tablespace has 1 file and we had set the tempfile as AUTOEXTEND. Somehow its size has reached 25GB now !
    We don't actually need this. Do we?
    For a fairly busy DB of around 3TB size, what is the maximum temp tablespace size you've ever seen?
    What is the maximum temp tablespace size you've ever seen for Big DB like Telecom, Banking?

    The point about temp space is that your requirements are dynamic - the actively used area shrinks and grows.
    Comparing apples with oranges, tempfile sizes on system where I am currently here amount to 50 GB but to be honest that's mainly due to a not insignificant number of pretty poor queries, run concurrently, with multipass operations, etc.
    Kellyn Pedersen had an example of a process using 720GB here:
    http://dbakevlar.com/?p=43
    Whilst 25GB may not be earth shattering, a "large" temp area may perhaps be an indicator that you want to review some of your application code.
    (What is "large"? "unusual" compared to what is "normal" for your system may be a better metric)
    If you're using automatic pga memory management, then there's a limit to what each session can get, it may be that automatic work areas are not suitable for some of your code and some manual sizing is required to prevent operations spilling unnecessarily.
    Also, inaccurate CBO estimates on your queries can lead to inaccurately sized work areas that then spill into temp.
    There was a reminder of this in one of Randolf Geist's articles on hash aggregation:
    http://oracle-randolf.blogspot.com/2011/01/hash-aggregation.html

  • Temp tablespace - why so big?

    Temp tablespace (size 6gb) is twice the size of my data and index tablespace combined. I am running into space issues and am wondering is it possible to resize this tablespace and/or take some other action to prevent the temp tablespace getting so relatively large?
    Thanks in advance.

    The Temporary Tablespace holds only 1 Temporary Segment shared all by all user sessions. Each session takes one or more extents. When a session finishes its operation, it "releases" the extent it used for use by another session but the size of the Segment does NOT shrink.
    Therefore, the Segment would grow to the peak concurrent temporary extent usage -- eg at some point in time, if you had 4 very large queries running concurently taking up 8GB then the segment would have grown to 8GB. However, even if you never have such concurrent usage (for example the normal load is for 20 users concurrently taking up 500MB only !), the segment remains at 8GB.
    In some environments, the Temporary tablespace could grow during periodic (say Monthly Reporting) batch jobs after which it is dropped and recreated again.
    This segment is used not just for "SORT" operations. It is also used for HASH JOIN overflows to disk and also for SORT MERGE operations.
    You can monitor the size of the segment in V$SORT_SEGMENT. You can monitor users currently using it in V$SORT_USAGE or V$TEMPSEG_USAGE.
    Hemant K Chitale
    http://hemantoracledba.blogpsot.com

  • Managing TEMP tablespace

    Hi Folks,
    My temp tablespace is 100% full...what should i do? Pls keep in mind that the Auto Exted is ON & this is a 24x7 DB.
    Please advice.

    Sometime it really difficult to decide between temp tablespace or tempfile..
    We also running 24*7 and customer make their own code to duplicate scheme using their Java code .
    What happen is , some scheme is really big and sometime we allocate 12gig for database size of 20. because of 1 scheme which is big enough. 10 gig.
    We did encounter lack of space after we increase their tempfile and we shrink their tempfile again to gain more space...
    I don't think this is a good way..but till now i haven't find out a best way to handle it.

  • Creating a Global Temporary Table on non-default TEMP tablespace.

    Hello ,
    I am using Oracle 11g.
    I have a procedure which create global temporary tables for its functionality. As the data which is going in the global temporary table , mean the data which is going in the default TEMP tablesapce is too huge ..... billions of rows..
    So what i want to do is , I want to create the global temporary table in another TEMP2 tablespace ( which is not the default one) so the load of billions of rows of data will be shifted to TEMP2. The default TEMP tablespace will not be affected and it can be used for other transactions.
    Is this possible. Can i shift the global temporary table from TEMP( Default temp tablespace) to TEMP2 ( the non-default temp tablespace) ????
    Please guide me with proper solutions and examples ....
    Thanks in advance ..

    DBA4 wrote:
    Hello ,
    I am using Oracle 11g.
    I have a procedure which create global temporary tables for its functionality. As the data which is going in the global temporary table , mean the data which is going in the default TEMP tablesapce is too huge ..... billions of rows..
    So what i want to do is , I want to create the global temporary table in another TEMP2 tablespace ( which is not the default one) so the load of billions of rows of data will be shifted to TEMP2. The default TEMP tablespace will not be affected and it can be used for other transactions.
    Is this possible. Can i shift the global temporary table from TEMP( Default temp tablespace) to TEMP2 ( the non-default temp tablespace) ????
    Global temporary tables are instantiated in the temporary tablespace of the schema that inserts the data - not into "the default" temporary tablespace.
    Assume Schema1 creates a GTT and grants all on that table to schema2
    Assume schema1 also creates a procedure (authid owner, the default) to insert data into the GTT and grants execute on the procedure to schema2
    If schema2 executes: insert into schema1.gtt, the data will appear in the temporary tablespace of schema2
    If schema2 executes: execute schema1.procedure, the data will appear in the temporary tablespace of schema1
    So if you want to protect the "normal" temporary tablespace, you could just create a special temporary tablespace for the owner of the procedure.
    Regards
    Jonathan Lewis

  • TEMP tablespace getting full while inserting a CLOB in Trigger

    We have a Oracle 10g (10.2.0.4.0) DB on a Solaris 9 box which also runs our J2EE web-service application on Weblogic 8sp6 server.
    We get around 220K web-service requests from upstream callers daily to insert data in the main table, say TABLE1, which has daily partitions on a date column. This table has around 21 columns out of which 1 is a CLOB column.
    Now this table has an AFTER INSERT trigger which calls a package procedure to insert the same record into another table, say TABLE2.
    From Java application insert statement in executed in below format using a weblogic jdbc connection pool :
    INSERT INTO TABLE1(COLUMN1, COLUMN2, ........., CLOB_COLUMN,........, COLUMN21) VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20);
    Clob object is prepared in application using ojdbc14.jar.
    We are observing a strange issue here. The TEMP tablespace utilization keeps on growing as more and more inserts are executed by application and after ~125K inserts the TEMP tablespace gets full and we start getting ORA-01652 error.
    On further analysis we could see that there are only 7-10 session being maintained but as more and more inserts happen TEMP tablespace utilization goes on increasing for each of these sessions.
    When we tried with inserting just few records and then watching the session details in v$session_wait then we could see that it is in INACTIVE state and waiting for the event ‘SQL*Net message from client’. This does not seem correct as the session has successfully inserted the data and committed the transaction and we can see the data in the tables as well.
    The confusing thing here is when we modify the trigger to pass blank string('' ) instead of the CLOB column to TABLE2 then this issue does not occur. All 200K records are inserted properly and TEMP tablespace utilization also keep always below 1%.
    Can you please help us in solving this issue. Is this related to any oracle issue?
    Inside the package we have tried using DBMS_COPY statement to copy the CLOB column after insert but still same result.
    Code for reference:
    Trigger:
    =====================================
    CREATE OR REPLACE TRIGGER trg
    AFTER INSERT OR UPDATE
    ON TABLE1
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    BEGIN
    IF (:NEW.date_col > SYSDATE - 2)
    THEN
    IF (:NEW.cat IN (1001, 1002))
    THEN
    pkg.process_change
         (:NEW.COLUMN1,
              :NEW.COLUMN2,
              :NEW.CLOB_COLUMN,
    FLAG
    END IF;
    END IF;
    END;
    =====================================
    Package:
    =====================================
    procedure PKG.Process_change(
    p_COLUMN1 number,
    p_COLUMN2 varchar2,
    p_CLOB_COLUMN clob,
    flag boolean
    ) is
    v_watermark pls_integer;
    v_type varchar2(1);
    begin
    if (flag) then
    v_type := 'U';
    else
    v_type := 'I';
    end if;
    select t_seq.nextval into v_watermark from dual;
    insert into TABLE2(
    COLUMN1 number,
    COLUMN2 varchar2,
    CLOB_COLUMN clob,
    watermark,
    dml_type
    )values (
    p_COLUMN1 number,
    p_COLUMN2 varchar2,
    p_CLOB_COLUMN clob,
    v_watermark,
    v_dml_type
    end;
    =====================================

    My first thought on reading your post is that not only are you using a database version that is now so old it is in extended support and even then not even the most recent patchset for it.
    The first thing I would do is move to 11gR2 and if you can't do that at least get to 10.2.0.5 and apply CLOB relevant patches as well.
    Same goes for your operating system. Solaris 9 is ancient: So move to 10 which has vastly improved memory management.
    To help you further it would be really valuable to know the table layout. For example is this a heap table or an IOT? Is it partitioned? Is this RAC? What size are the CLOBs? Are they stored in-line? Chunk size? etc.
    This page should start you down the right road:
    http://docs.oracle.com/cd/B19306_01/appdev.102/b14249/adlob_tables.htm#sthref204
    But I am also wondering why you would use a trigger to, as you say, "insert the same record into another table." This description is a poster child for "bad design."

  • How to create temp files in temp tablespace

    Dear all,
    Due to outage of our SAN, we our out of production for the
    last 3 days. By the grace of Almighty we have restored production by
    database recovery from our standby backup. Since temp tablespace and
    temp data files do not taken as backup for standby, now after recovery
    we are getting abap dumps asking for temp_1 and temp_2 datafiles.
    Please guide us how to create temp files. v$tablespace is showing tablespace PSAPTEMP but datafile are not there
    Abap dumps are giving these errors as mentioned below
    ====================================================
    The exception must either be prevented, caught within the procedure            
    "DATA_SELECTION"                                                              
    "(FORM)", or declared in the procedure's RAISING clause.                       
    To prevent the exception, note the following:                                  
    Database error text........: "ORA-01157: cannot identify/lock data file 256 -  
    see DBWR trace file#ORA-01110: data file 256:                                 
    '/oracle/SD1/sapdata4/temp_2/temp.data2'"                                     
    Internal call code.........: "[RSQL/FTCH/MARA ]"                               
    ===================================================
    another one asking for 
    '/oracle/SD1/sapdata3/temp_1/temp.data1'"
    Best Regards
    Waqas

    if you want to add a new tempfile to your TEMP Tablespace,you can do like that.
    <i>ALTER TABLESPACE</i> <<b><u>name of TEMP Tablespace</u></b>> ADD TEMPFILE <<b><u><b><u>pfad to the file_and_file name</u></b></u></b>> <b>SIZE</b> <size>;
    You can use also the options <i>REUS</i>E <i>autoextend off</i> or <i>on</i> .
    e.g:
    <i>alter tablespace</i> <u><b>PSAPTEMP</b></u> add <i>tempfile</i> <b><u>'/oracle/SD1/sapdata4/temp_2/temp.data2'</u></b> <i>SIZE 1000K</i> <i>REUSE</i>;
    The directory <b><u>temp_2</u></b> should exist.
    Or you can use the BR*Tools to create a new datafile. Enter brtools and follow the instructions or menu.
    More to TEMP Tablespaces see please following SAP notes:
    <u><b>659946</b></u> - FAQ: Temporary tablespaces
    <u><b>600513</b></u> - ORA-25153 after recovery due to missing tempfiles
    and the Oracle Note:
    <u><b>160426.1</b></u>: TEMPORARY Tablespaces : Tempfiles or Datafiles ?
    I hope it helps.

  • Should I increase TEMP tablespace size here ?

    Version: 10.2.0.4
    Platform : RHEL 5.8
    Currently we are running a batch job in a schema. The default temporary tablespace for that schema is TEMP.
    But I see that the tablespace is full.
    SQL> select file_name, bytes/1024/1024/1024 gb from dba_temp_files where tablespace_name = 'TEMP';
    FILE_NAME                                                                 GB
    /prd/fdms/oradata_db18/fdmsc1sdb/oradata/ts_temp/temp01.dbf               10
    SQL> SELECT     TABLESPACE_NAME, FILE_ID,
            BYTES_USED/1024/1024,
            bytes_free/1024/1024
    FROM V$TEMP_SPACE_HEADER where tablespace_name = 'TEMP'  2    3    4  ;
    TABLESPACE_NAME                             FILE_ID BYTES_USED/1024/1024 BYTES_FREE/1024/1024
    TEMP                                              1                10240          
    So, far the application users have not complained and I didn't see any 'unable to extend' error in the alert log yet,  but the above scenario is dangerous. Right? I mean SQL statements with sorting can error out. Right ? Unlike UNDO, with temp tablespace, temp segments cannot be reused. Right ?

    Hello,
    As said previously, the Sort Segments can be reused, the Views V$SORT_SEGMENT and V$TEMPSEG_USAGE are relevant to monitore the usage of the Temporary Tablespace.
    You'll find in the Note below a way to control over time the Temporary Tablespace:
    How Can Temporary Segment Usage Be Monitored Over Time? [ID 364417.1]
    More over, you may also check for any ORA-01652 in the Alert Log.
    But don't worry to much to get a Full Temporary Tablespace, here "Full" doesn't mean "unreusable".
    Hope this help.
    Best Regards,
    Jean-Valentin Lubiez

  • Restored coldbackup and having trouble with TEMP tablespace

    Hi, i succesfully restored from a coldbackup on solaris.(oracle 9.2)
    i can log on to database using toad, query the database, but when i try to take an export or something i got the error
    EXP-00056: ORACLE error 1157 encountered
    ORA-01157: cannot identify/lock data file 203 - see DBWR trace file
    ORA-01110: data file 203: '/sun2int1/oracle92/app/oracle/product/9.2.1/oradata/TPRS/temp03.dbf'
    ORA-06512: at "SYS.DBMS_LOB", line 424
    ORA-06512: at "SYS.DBMS_METADATA", line 1140
    ORA-06512: at line 1
    EXP-00000: Export terminated unsuccessfully
    when i did the restore, i simply renamed the datafiles and redo logs.
    But i didnt rename the TEMP datafile, as you can not rename it with a "alter database rename file ..." command
    so thats the problem!
    i planned to create a new default temp. tablespace, and simply make it default and drop the other one. but it does not work!
    i tried to execute:
    CREATE TEMPORARY TABLESPACE temp4 TEMPFILE '/oracleAS/TPRS/oradata/TPRS/temp4.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE unlimited
    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
    create temporary tablespace temp01 tempfile '/oracleAS/TPRS/oradata/TPRS/temp01.dbf' size 100M;
    but they all hang! i wait, but nothing happens! (and alert log does not log anything too)
    and finally i tried to drop the default tablespace, and i couldnt drop it as i thought. (ORA-12906: cannot drop default temporary tablespace
    So, im stuck and i beleive i have to RENAME the datafile for temporary tablespace. how can i do this?
    Edited by: merope on Jun 9, 2009 11:32 AM

    SQL> col file_name for a50
    col status for a15
    col tablespace_name for a15
    col PROPERTY_VALUE for a20
    select file_name,tablespace_name,bytes/1024/1024 as "SIZE_IN_MB",status,autoextensible from dba_temp_files;
    SELECT PROPERTY_NAME,PROPERTY_VALUE FROM DATABASE_PROPERTIES where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
    SQL> SQL> SQL> SQL> SQL> SQL> ERROR:
    ORA-01157: cannot identify/lock data file 202 - see DBWR trace file
    ORA-01110: data file 202: '/izmir1/oradbTPRS/temp1.db'
    no rows selected
    SQL>
    PROPERTY_NAME          PROPERTY_VALUE
    DEFAULT_TEMP_TABLESPACE TEMP3
    This is not the actual directory: /izmir1/oradbTPRS/temp1.db
    it is the old location, but in the restored db, the temp1.db file is in some other directory
    how can i rename this?
    Edited by: merope on Jun 9, 2009 11:50 AM

  • 9i on Linux. Problems with Temp tablespace cleanup

    I am currently running Oracle 9i Enterprise on SUSE Linux 7.2.
    I am executing queries against the new XMLType datatype and every query adds to the Temp tablespace, which doesn't get cleaned up. Eventually, the tablespace will run out of space and Oracle will issue and error:
    ORA-01652: unable to extend temp segment by 128 in tablespace <name>
    The only way to clean up the Temp tablespace seems to be by restarting the server.
    Is that happening on other platforms as well? I would appreciate any help.

    Hi
    You can connect to the database as DBA (Sys or System) and make a bigger temporal tablespace. Or create a new bigger temporary tablespace and assign it to the user.
    A10!
    PS: Temporary tablespace is used when no memory available for the session, for example when a big ORDER BY is done. Try to increase the memory assigned, just look at initXXX.ora (sort_size)

  • Shrinking BLOB tablespace in Oracle 10g

    Hello,
    I have table created with 32 GB in Oracle 10g with BLOB field containing images. after that I have deleted some of the images from the table but when I'm checking free space, it is show full 32 GB. But when I'm looking at Toad it shows me out of 32 GB 17 GB is free.
    my question is how to shrink/resize blob tablespace/table having BLOB field in oracle 10g 2rel ?

    Hello urgent,
    Tablespace management is not really an Oracle Spatial topic, I suppose these are georaster images?. You probably want to search and post in the more general database forums.
    The quick answer is that it is not easy. Oracle tablespaces may only be "shrunk" if the free space is at the end of the datafile at the "high water" mark. If by some wild coincidence the images you removed were indeed at the back of the datafile, then you could alter the datafile with a RESIZE command. But the odds of that being the case are incredibly low. If you really, really MUST recover that space then about the only thing to do is export the data, delete it from the tablespace, shrink the tablespace and then import the data back in. Another approach if you have the space is just move the data into another empty tablespace and then drop the original tablespace. I would guess that the salary expended for you to take everything offline and do this would be more than just buying another cheap disk. Considering that in doing your daily work you may well indeed be in this position again in a few weeks, then it makes even less sense.
    Now having said all that I have been in the situation where I MUST recover that space without taking everything offline.
    One thing you can try is to "pop" the last items off the datafile (moving them to another tablespace) identified using the query below. But this is an exercise in futility unless your resources happen to be nicely "chunked" together near the highwater mark. Oracle tends to stripe resources across the available space in the datafile. So you might find you need to move half the contents before recovering any significant amount of space.
    Cheers,
    Paul
       SELECT '
       a.owner, '
       a.segment_name, '
       a.segment_type, '
       a.block_id, '
       a.tablespace_name '
       FROM '
       dba_extents a '
       WHERE '
       a.file_id = ( '
          SELECT '
          b.file_id '
          FROM '
          dba_data_files b '
          WHERE '
          b.file_name = :p1 '
       ORDER BY '
       a.block_id DESC

  • Full temp tablespace

    hi all,
    i faced a problem regarding full temp tablespace, i added a tempfile as an immediate measure ,but the problem was with a query
    i identified it
    the query is
    SELECT DISTINCT rt.po_unit_price item_price,
    pl.unit_meas_lookup_code uom_code,
    TO_NUMBER (porh.segment1) req_number,
    msi.segment1 item_code, pl.item_description,
    ph.po_header_id, TO_NUMBER (ph.segment1) po_number,
    TRUNC (ph.creation_date) po_date, pv.vendor_name supplier,
    pll.need_by_date, pl.quantity qty_ordered,
    rt.quantity quantity_received,
    (rt.quantity * rt.po_unit_price) pl_amount,
    ph.currency_code, isd.ige_number ge_no,
    isd.ige_date ge_date, rsh.receipt_num,
    TRUNC (rt.transaction_date) receipt_date,
    isd.lr_number gr_no, isd.transporter_name transporter,
    (SELECT SUM (j.tax_amount)
    FROM ja_in_receipt_tax_lines j
    WHERE j.shipment_header_id =
    rsl.shipment_header_id
    AND j.shipment_line_id = rsl.shipment_line_id
    AND j.tax_name LIKE 'PO%Freight%') freight,
    pvs.vat_reg_no, pvs.cst_reg_no,
    pvs.service_tax_regno st_reg_no,
    pvs.excise_duty_reg_no excise_reg_no,
    pvs.st_reg_no lst_reg_no, ai.invoice_num, ai.invoice_date,
    ai.invoice_amount invoice_amount, ai.invoice_currency_code,
    TRUNC (ai.terms_date + atl.due_days) date_of_payment,
    TRUNC (aca.check_date) payment_date, aca.check_number,
    aca.bank_account_name mode_of_payment,
    TRUNC (aip.accounting_date) gl_date
    FROM po_headers_all ph,
    po_lines_all pl,
    po_line_locations_all pll,
    po_distributions_all pod,
    po_req_distributions_all pord,
    po_requisition_lines_all porl,
    po_requisition_headers_all porh,
    mtl_system_items msi,
    po_vendors pv,
    ja_in_po_vendor_sites pvs,
    rcv_transactions rt,
    rcv_shipment_headers rsh,
    rcv_shipment_lines rsl,
    ja_in_receipt_tax_lines jirtl,
    ja_in_tax_codes jitc,
    ap_invoice_distributions_all aid,
    ap_invoices_all ai,
    ap_terms_tl att,
    ap_terms_lines atl,
    ap_invoice_payments_all aip,
    ap_checks_all aca,
    kpm_ige_security_details isd,
    kpm_ige_purchase_orders ipo
    WHERE ph.po_header_id = pl.po_header_id
    AND ph.po_header_id = pod.po_header_id
    AND pl.po_line_id = pod.po_line_id
    AND pl.po_line_id = pll.po_line_id
    AND pl.item_id = msi.inventory_item_id
    AND pod.req_distribution_id = pord.distribution_id(+)
    AND pord.requisition_line_id = porl.requisition_line_id(+)
    AND porl.requisition_header_id = porh.requisition_header_id(+)
    AND msi.organization_id = 136
    AND
    pv.vendor_id = pvs.vendor_id
    AND ph.vendor_id = pv.vendor_id
    AND ph.vendor_site_id = pvs.vendor_site_id
    AND rt.po_header_id = pl.po_header_id
    AND rt.po_line_id = pl.po_line_id
    AND rt.transaction_type = 'RECEIVE'
    AND isd.ige_header_id = ipo.ige_header_id
    AND ipo.po_header_id = ph.po_header_id
    AND rsh.shipment_header_id = rsl.shipment_header_id
    AND rt.shipment_header_id = rsl.shipment_header_id
    AND rt.shipment_line_id = rsl.shipment_line_id
    AND rsl.shipment_header_id = jirtl.shipment_header_id
    AND rsl.shipment_line_id = jirtl.shipment_line_id
    AND jirtl.tax_id = jitc.tax_id
    AND aid.po_distribution_id = pod.po_distribution_id
    AND aid.rcv_transaction_id = rt.transaction_id
    AND aid.invoice_id = ai.invoice_id
    AND ai.invoice_type_lookup_code = 'STANDARD'
    AND ai.terms_id = att.term_id
    AND att.term_id = atl.term_id
    AND aip.invoice_id(+) = ai.invoice_id
    AND aip.check_id = aca.check_id(+);
    i am unable to identify the main cause, i know some tables are large , but how do i optimize it
    I CAN SEND THE EXPLAIN PLAN ON EMAIL AS IT WONT GET DISPALYED HERE PROPERLY
    database is 10g and OS is HP UX 11.11
    the query runs perfectly on 9i
    Edited by: user7864753 on Dec 4, 2009 2:55 PM

    >
    database is 10g and OS is HP UX 11.11
    the query runs perfectly on 9iDid you compare 9i and 10g plan ?
    What changed ?
    Was the DB migrated ? How ?
    Were statistics recalculated ?
    >
    PLAN_TABLE_OUTPUT
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
    | 0 | SELECT STATEMENT | | 1 | 547 | 1224 (4)|
    | 1 | SORT AGGREGATE | | 1 | 31 | |
    |* 2 | TABLE ACCESS BY INDEX ROWID | JA_IN_RECEIPT_TAX_LINES | 1 | 31 | 4 (0)|
    |* 3 | INDEX RANGE SCAN | JA_IN_RECEIPT_TAX_LINES_N2 | 4 | | 3 (0)|
    | 4 | HASH UNIQUE | | 1 | 547 | 1224 (4)|
    | 5 | NESTED LOOPS | | 1 | 547 | 1223 (4)|
    | 6 | NESTED LOOPS | | 1 | 543 | 1223 (4)|
    | 7 | NESTED LOOPS | | 1 | 527 | 1220 (4)|
    | 8 | NESTED LOOPS | | 1 | 491 | 1219 (4)|
    | 9 | NESTED LOOPS | | 1 | 473 | 1216 (4)|
    | 10 | NESTED LOOPS | | 1 | 465 | 1214 (4)|
    | 11 | NESTED LOOPS | | 1 | 460 | 1213 (4)|
    | 12 | NESTED LOOPS | | 1 | 400 | 1211 (4)|
    | 13 | NESTED LOOPS | | 1 | 388 | 1204 (4)|
    | 14 | NESTED LOOPS | | 1 | 376 | 1203 (4)|
    | 15 | NESTED LOOPS | | 1 | 364 | 1202 (4)|
    | 16 | NESTED LOOPS | | 1 | 351 | 1200 (4)|
    | 17 | NESTED LOOPS | | 1 | 297 | 1192 (4)|
    | 18 | NESTED LOOPS | | 1 | 274 | 1190 (4)|
    | 19 | NESTED LOOPS | | 5 | 1050 | 1185 (4)|
    | 20 | NESTED LOOPS | | 5 | 985 | 1180 (4)|
    | 21 | NESTED LOOPS | | 5 | 935 | 1175 (4)|
    | 22 | NESTED LOOPS | | 5 | 885 | 1170 (4)|
    |* 23 | HASH JOIN | | 6 | 954 | 1158 (4)|
    |* 24 | HASH JOIN | | 6 | 684 | 1029 (4)|
    |* 25 | HASH JOIN | | 29 | 3045 | 898 (4)|
    |* 26 | HASH JOIN | | 7077 | 483K| 90 (6)|
    | 27 | VIEW | index$_join$_010 | 4217 | 123K| 57 (4)|
    |* 28 | HASH JOIN | | | | |
    | 29 | INDEX FAST FULL SCAN | PO_VENDORS_U1 | 4217 | 123K| 19 (0)|
    | 30 | INDEX FAST FULL SCAN | PO_VENDORS_U2 | 4217 | 123K| 37 (3)|
    | 31 | TABLE ACCESS FULL | JA_IN_PO_VENDOR_SITES | 7077 | 276K| 32 (7)|
    | 32 | TABLE ACCESS FULL | PO_HEADERS_ALL | 52500 | 1794K| 805 (4)|
    PLAN_TABLE_OUTPUT
    |* 33 | TABLE ACCESS FULL | KPM_IGE_PURCHASE_ORDERS | 10824 | 97416 | 130 (3)|
    | 34 | TABLE ACCESS FULL | KPM_IGE_SECURITY_DETAILS | 14910 | 655K| 128 (4)|
    |* 35 | TABLE ACCESS BY INDEX ROWID| PO_DISTRIBUTIONS_ALL | 1 | 18 | 3 (0)|
    |* 36 | INDEX RANGE SCAN | PO_DISTRIBUTIONS_N3 | 4 | | 1 (0)|
    | 37 | TABLE ACCESS BY INDEX ROWID | PO_REQ_DISTRIBUTIONS_ALL | 1 | 10 | 1 (0)|
    |* 38 | INDEX UNIQUE SCAN | PO_REQ_DISTRIBUTIONS_U1 | 1 | | 0 (0)|
    | 39 | TABLE ACCESS BY INDEX ROWID | PO_REQUISITION_LINES_ALL | 1 | 10 | 1 (0)|
    |* 40 | INDEX UNIQUE SCAN | PO_REQUISITION_LINES_U1 | 1 | | 0 (0)|
    | 41 | TABLE ACCESS BY INDEX ROWID | PO_REQUISITION_HEADERS_ALL | 1 | 13 | 1 (0)|
    |* 42 | INDEX UNIQUE SCAN | PO_REQUISITION_HEADERS_U1 | 1 | | 0 (0)|
    |* 43 | TABLE ACCESS BY INDEX ROWID | PO_LINES_ALL | 1 | 64 | 1 (0)|
    |* 44 | INDEX UNIQUE SCAN | PO_LINES_U1 | 1 | | 0 (0)|
    | 45 | TABLE ACCESS BY INDEX ROWID | MTL_SYSTEM_ITEMS_B | 1 | 23 | 2 (0)|
    |* 46 | INDEX UNIQUE SCAN | MTL_SYSTEM_ITEMS_B_U1 | 1 | | 1 (0)|
    |* 47 | TABLE ACCESS BY INDEX ROWID | RCV_TRANSACTIONS | 1 | 54 | 8 (0)|
    |* 48 | INDEX RANGE SCAN | RCV_TRANSACTIONS_N5 | 7 | | 2 (0)|
    | 49 | TABLE ACCESS BY INDEX ROWID | PO_LINE_LOCATIONS_ALL | 1 | 13 | 2 (0)|
    |* 50 | INDEX RANGE SCAN | PO_LINE_LOCATIONS_N1 | 2 | | 1 (0)|
    |* 51 | TABLE ACCESS BY INDEX ROWID | RCV_SHIPMENT_LINES | 1 | 12 | 1 (0)|
    |* 52 | INDEX UNIQUE SCAN | RCV_SHIPMENT_LINES_U1 | 1 | | 0 (0)|
    | 53 | TABLE ACCESS BY INDEX ROWID | RCV_SHIPMENT_HEADERS | 1 | 12 | 1 (0)|
    |* 54 | INDEX UNIQUE SCAN | RCV_SHIPMENT_HEADERS_U1 | 1 | | 0 (0)|
    |* 55 | TABLE ACCESS BY INDEX ROWID | AP_INVOICE_DISTRIBUTIONS_ALL | 1 | 12 | 7 (0)|
    |* 56 | INDEX RANGE SCAN | AP_INVOICE_DISTRIBUTIONS_N17 | 7 | | 2 (0)|
    |* 57 | TABLE ACCESS BY INDEX ROWID | AP_INVOICES_ALL | 1 | 60 | 2 (0)|
    |* 58 | INDEX UNIQUE SCAN | AP_INVOICES_U1 | 1 | | 1 (0)|
    |* 59 | INDEX RANGE SCAN | AP_TERMS_TL_U1 | 1 | 5 | 1 (0)|
    | 60 | TABLE ACCESS BY INDEX ROWID | AP_TERMS_LINES | 2 | 16 | 2 (0)|
    |* 61 | INDEX RANGE SCAN | AP_TERMS_LINES_U1 | 2 | | 1 (0)|
    | 62 | TABLE ACCESS BY INDEX ROWID | AP_INVOICE_PAYMENTS_ALL | 1 | 18 | 3 (0)|
    |* 63 | INDEX RANGE SCAN | AP_INVOICE_PAYMENTS_N1 | 1 | | 2 (0)|
    | 64 | TABLE ACCESS BY INDEX ROWID | AP_CHECKS_ALL | 1 | 36 | 1 (0)|
    |* 65 | INDEX UNIQUE SCAN | AP_CHECKS_U1 | 1 | | 0 (0)|
    | 66 | TABLE ACCESS BY INDEX ROWID | JA_IN_RECEIPT_TAX_LINES | 1 | 16 | 3 (0)|
    |* 67 | INDEX RANGE SCAN | JA_IN_RECEIPT_TAX_LINES_N2 | 4 | | 2 (0)|
    |* 68 | INDEX UNIQUE SCAN | JA_IN_TAX_CODES_U1 | 1 | 4 | 0 (0)|
    PLAN_TABLE_OUTPUT
    Predicate Information (identified by operation id):
    2 - filter("J"."TAX_NAME" LIKE 'PO%Freight%')
    3 - access("J"."SHIPMENT_HEADER_ID"=:B1 AND "J"."SHIPMENT_LINE_ID"=:B2)
    23 - access("ISD"."IGE_HEADER_ID"="IPO"."IGE_HEADER_ID")
    24 - access("IPO"."PO_HEADER_ID"="PH"."PO_HEADER_ID")
    25 - access("PH"."VENDOR_ID"="PV"."VENDOR_ID" AND "PH"."VENDOR_SITE_ID"="PVS"."VENDOR_SITE_ID")
    26 - access("PV"."VENDOR_ID"="PVS"."VENDOR_ID")
    28 - access(ROWID=ROWID)
    33 - filter("IPO"."PO_HEADER_ID" IS NOT NULL)
    35 - filter("POD"."REQ_DISTRIBUTION_ID" IS NOT NULL)
    36 - access("PH"."PO_HEADER_ID"="POD"."PO_HEADER_ID")
    38 - access("POD"."REQ_DISTRIBUTION_ID"="PORD"."DISTRIBUTION_ID")
    40 - access("PORD"."REQUISITION_LINE_ID"="PORL"."REQUISITION_LINE_ID")
    42 - access("PORL"."REQUISITION_HEADER_ID"="PORH"."REQUISITION_HEADER_ID")
    43 - filter("PH"."PO_HEADER_ID"="PL"."PO_HEADER_ID")
    44 - access("PL"."PO_LINE_ID"="POD"."PO_LINE_ID")
    46 - access("PL"."ITEM_ID"="MSI"."INVENTORY_ITEM_ID" AND "MSI"."ORGANIZATION_ID"=136)
    47 - filter("RT"."TRANSACTION_TYPE"='RECEIVE' AND "RT"."PO_HEADER_ID"="PL"."PO_HEADER_ID")
    48 - access("RT"."PO_LINE_ID"="PL"."PO_LINE_ID")
    50 - access("PL"."PO_LINE_ID"="PLL"."PO_LINE_ID")
    51 - filter("RT"."SHIPMENT_HEADER_ID"="RSL"."SHIPMENT_HEADER_ID")
    52 - access("RT"."SHIPMENT_LINE_ID"="RSL"."SHIPMENT_LINE_ID")
    54 - access("RSH"."SHIPMENT_HEADER_ID"="RSL"."SHIPMENT_HEADER_ID")
    55 - filter("AID"."PO_DISTRIBUTION_ID" IS NOT NULL AND
    "AID"."PO_DISTRIBUTION_ID"="POD"."PO_DISTRIBUTION_ID")
    56 - access("AID"."RCV_TRANSACTION_ID"="RT"."TRANSACTION_ID")
    filter("AID"."RCV_TRANSACTION_ID" IS NOT NULL)
    57 - filter("AI"."INVOICE_TYPE_LOOKUP_CODE"='STANDARD')
    58 - access("AID"."INVOICE_ID"="AI"."INVOICE_ID")
    59 - access("AI"."TERMS_ID"="ATT"."TERM_ID")
    61 - access("ATT"."TERM_ID"="ATL"."TERM_ID")
    63 - access("AIP"."INVOICE_ID"="AI"."INVOICE_ID")
    65 - access("AIP"."CHECK_ID"="ACA"."CHECK_ID")
    67 - access("RSL"."SHIPMENT_HEADER_ID"="JIRTL"."SHIPMENT_HEADER_ID" AND
    PLAN_TABLE_OUTPUT
    "RSL"."SHIPMENT_LINE_ID"="JIRTL"."SHIPMENT_LINE_ID")
    68 - access("JIRTL"."TAX_ID"="JITC"."TAX_ID")
    Note
    - 'PLAN_TABLE' is old version
    117 rows selected.

Maybe you are looking for