Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • Implementing Listener Security Oracle
  • SYSOPER Mystery Oracle
  • note id 373303.1 Linux/Unix
  • Best approach for Oracle database patching sequence to latest/required patchset along with CPU/PSU/any-other-one-off patch ID 865255.1 Oracle
  • Rman Notes -1 Oracle
  • Consolidated Reference List Of Notes For Migration / Upgrade Service Requests -ID 762540.1 Oracle
  • Configure ssh authentications for RAC Oracle
  • fkwoind.sql fkwoindex.sql Oracle
  • database trigger failing Oracle
  • Temporary tablespace explaination Oracle
  • db_status.sql Oracle
  • OPENING A STANDBY DATABASE IN READ-ONLY MODE Oracle
  • Drop all SPM baselines for SQL handle Oracle
  • All About Trace Fils Oracle
  • DB Console Mainenance. Oracle

Temporary Tablespsace Temp tablespace behaviour

Posted on 25-May-2010 By Admin No Comments on Temporary Tablespsace Temp tablespace behaviour

Description

===========

When monitoring the size of the available free space in the TEMPORARY tablespace

it does not increased once sorts are finished even with no client connections

to the database. They may also be a large number of EXTENTS of type TEMPORARY

in the temporary tablespace.

Users may also experience ORA-1652 when running transactions. This error implies

that there is no free space left. SMON is not cleaning up after waiting for

hours and queries are failing.

Scope & Application

===================

If the TEMPORARY TABLESPACE is of type TEMPORARY, the space is not released

until the instance is shutdown. If the TEMPORARY TABLESPACE is of type

PERMANENT, then cleanup is performed by SMON after completion of the process

using it.

A sort segment is created by the first statement that uses a TEMPORARY

tablespace for sorting, after startup. These are not released until the

database is restarted. The view V$SORT_SEGMENT can be used to see how

many of the currently allocated sort segments are being used.

If a PERMANENT tablespace is used for sorting, then any temporary segments

created are dropped by SMON on completion of the statement, and the space

is released for use by other objects.

Running the query:

select OWNER,

SEGMENT_NAME,

SEGMENT_TYPE ,

TABLESPACE_NAME

from DBA_SEGMENTS

where SEGMENT_TYPE = ‘TEMPORARY’;

to give results similar to:

OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME

—– ———— ———— —————

SYS 4.2 TEMPORARY TEMP

Note: segment_name and tablepace_name are likely to be different.

Then determine the tablespace type by running:

select TABLESPACE_NAME,

CONTENTS

from DBA_TABLESPACES

where TABLESPACE_NAME in ();

to give results similar to:

TABLESPACE_NAME CONTENTS

—————————— ———

TEMP TEMPORARY

TEMP1 PERMANENT

The above query will indicate what type of tablespace the database has defined.

Explanation

===========

If the tablespace in which the TEMPORARY segment resides is of type

TEMPORARY then sort segments not being released is normal behavior in 7.3+.

ORA-1652 implies that the tablespace is too small.

A sort segment is created by the first statement that used a TEMPORARY tablespace

for sorting, after startup. A sort segment created in a TEMPOARY tablespace

is only released at shutdown. The large number of EXTENTS is caused when the

STORAGE clause has been incorrectly calculated.

If the tablespace in which the TEMPORARY segment resides is of type

PERMANENT, then check that following events are not set in the initalisation

parameter file:

event=”10061 trace name context forever, level 10″

event=”10269 trace name context forever, level 10″

If they are set, comment out the lines and restart database.

These two events prevent SMON from cleaning up TEMP segments and

coalescing. In Oracle Version 7.0, only event 10061 existed and if

set prevented SMON from both cleaning up TEMP segments and coalescing.

From oraus.msg:

10061, 00000, “disable SMON from cleaning temp segments

10269, 00000, “Don’t do coalesces of free space in SMON”

// *Cause: setting this event prevents SMON from doing free space coalesces

As user sessions require space for sorting, they will be allocated temporary

segment(s) from the user’s temporary tablespace. If the user’s temporary

tablespace is of type PERMANENT and these two events are set, then the session

may eventually run out of space and any new sessions requiring space in the

same tablespace may fail with “ORA-1652: unable to extend temp segment by %s

in tablespace %s”.

For performance issues, tablespaces marked as temporary allocate extents

as needed, but the extents are not released or deallocated after the operation

is done. Instead, the extent is simply marked as FREE or available for the

next sort operation. This eliminates the need to continuously allocate and

deallocate extents after every sort operation, hence gaining performance

benefits.

To find out if a TEMP segment is FREE or being USED and also in which

tablespace the segment resides, query the new dynamic performance view

V$SORT_SEGMENT.

For example:

select TABLESPACE_NAME,TOTAL_BLOCKS,USED_BLOCKS,FREE_BLOCKS

from v$sort_segment;

>>> DURING the SORT you will see something like this:

TABLESPACE_NAME TOTAL_BLOCKS USED_BLOCKS FREE_BLOCKS

—————- ———— ———– ———–

TEMP 590 590 0

>>> AFTER the SORT you will see something like this:

TABLESPACE_NAME TOTAL_BLOCKS USED_BLOCKS FREE_BLOCKS

————— ———— ———— ———–

TEMP 590 0 590

This query shows us that during the sort the USED_BLOCK count

increased since we are using the sort extents and after the sort is done the

USED_BLOCK decreased and FREE_BLOCK count increased because the extents got

released back to the sort extent pool.

Use the following guidelines to specify DEFAULT STORAGE:

Set INITIAL=NEXT.Since a process always writes data equal to

SORT_AREA_SIZE to a temporary segment, a good value for the extent

size is (n*s + b)

where: n is a positive integer

s is the value of SORT_AREA_SIZE initialization parameter

b is the value of DB_BLOCK_SIZE initialization parameter

Using this value optimizes temporary segment usage by allowing

sufficient space for a header block and multiple sort run data to be

stored in each extent.

Specify a PCTINCREASE of zero to ensure that all extents are of the

same size.

The MAXEXTENTS parameter only affects a temporary segment if the tablespace

is a PERMANENT tablespace.

Proper calculation of the Default Storage clause parameters will increase

performance and maximize use of storage.

NOTE: By default when a tablespace is created its contents are set to

hold “PERMANENT” objects, (i.e this includes all segments including sort

segment). Sort segments residing in PERMANENT tablespace are

still cleaned up by SMON as before, after the sort is completed. If a

large number of sort segments have been created, SMON may take some

time to drop them.

To make a tablespace hold only temporary objects we need to set the

contents to TEMPORARY, by issuing the following command:

ALTER TABLESPACE TEMPORARY;

and verify this with the following query:

SVRMGR> select TABLESPACE_NAME,CONTENTS from dba_tablespaces;

TABLESPACE_NAME CONTENTS

—————- ———

SYSTEM PERMANENT

RBS PERMANENT

TEMP TEMPORARY

TOOLS PERMANENT

CYN PERMANENT

RBSTMP PERMANENT

Oracle, SQL scripts

Post navigation

Previous Post: Handling LOB data in Oracle
Next Post: find checksum of a file.

Related Posts

  • Giving Grant on v$DATABASE Oracle
  • Find_table_size.sql Oracle
  • tblwopk.sql tablewopk.sql Oracle
  • How to set Processes Parameter Oracle
  • DBMS_SQL for alter session. Oracle
  • Another Tuning Article for subheap of shared pool Oracle

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Categories

  • Ansible (0)
  • AWS (2)
  • Azure (1)
  • Linux/Unix (149)
  • MYSQL (5)
  • Oracle (392)
  • PHP/MYSQL/Wordpress (10)
  • POSTGRESQL (0)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (17)
  • rman-dataguard (26)
  • shell (149)
  • SQL scripts (341)
  • SQL Server (6)
  • Uncategorized (0)
  • Videos (0)

Recent Posts

  • SQL Server Vs Oracle Architecture difference25-Jul-2025
  • SQL Server: How to see historical transactions25-Jul-2025
  • SQL Server: How to see current transactions or requests25-Jul-2025
  • T-SQL Vs PL/SQL Syntax25-Jul-2025
  • Check SQL Server edition25-Jul-2025
  • Checking SQL Server Version25-Jul-2025
  • Oracle vs MYSQL Architecture differences (For DBAs)24-Jul-2025
  • V$INSTANCE of Oracle in MYSQL24-Jul-2025
  • Day to day MYSQL DBA operations (Compared with Oracle DBA)24-Jul-2025
  • MYSQL and Oracle Comparison for Oracle DBA24-Jul-2025

Archives

  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • Changing default shell Linux/Unix
  • Caching sequence in Memory Oracle
  • Oracle Recommended Patches — Oracle Database ID 756671.1 Oracle
  • 276434.1 Modifying the VIP or VIP Hostname of a 10g or 11g Oracle Clusterware Node Oracle
  • Goldengate Tutorial Oracle
  • Wait.sql Oracle
  • on IBM-AIX for display Linux/Unix
  • Roles and Stored Object behaviour Oracle

Copyright © 2025 pvmehta.com.

Powered by PressBook News WordPress theme