Table of Contents
✅ 2. More Accurate Query Using Outer Join (Includes All Tablespaces)
✅ 3. Include Temporary Tablespaces
✅ 4. Quick One-Liner for Immediate Overview
?️ Tips
Home Database Oracle How to check tablespace size and free space in Oracle?

How to check tablespace size and free space in Oracle?

Jul 30, 2025 am 02:27 AM

Use the DBA_DATA_FILES and DBA_FREE_SPACE join to get total, used, and free space per tablespace in GB with percentage free; 2. Improve accuracy with a LEFT JOIN from DBA_TABLESPACES to include fully used tablespaces by using NVL to handle null free space; 3. Query DBA_TEMP_FILES and V$TEMP_SPACE_HEADER separately to include temporary tablespace sizes and usage; 4. For a quick overview, run simple GROUP BY queries on DBA_DATA_FILES and DBA_FREE_SPACE for size and free space in MB; always ensure DBA privileges for full access and consider autoextensible files when evaluating potential growth, which can be checked via the AUTOEXTENSIBLE and MAXBYTES columns in DBA_DATA_FILES, and use monitoring tools for trend analysis.

How to check tablespace size and free space in Oracle?

To check tablespace size and free space in Oracle, you can use SQL queries that pull information from data dictionary views like DBA_DATA_FILES, DBA_FREE_SPACE, and DBA_TABLESPACES. Here’s how to do it step by step.

How to check tablespace size and free space in Oracle?

✅ 1. Check Total Size, Used Space, and Free Space for Each Tablespace

Run this query to get a comprehensive overview:

SELECT 
    fs.tablespace_name,
    ROUND(SUM(df.bytes) / 1024 / 1024 / 1024, 2) AS "Total Size (GB)",
    ROUND(SUM(fs.bytes) / 1024 / 1024 / 1024, 2) AS "Free Space (GB)",
    ROUND((SUM(df.bytes) - SUM(fs.bytes)) / 1024 / 1024 / 1024, 2) AS "Used Space (GB)",
    ROUND((SUM(fs.bytes) / SUM(df.bytes)) * 100, 2) AS "Pct Free (%)"
FROM 
    dba_free_space fs,
    dba_data_files df
WHERE 
    fs.tablespace_name = df.tablespace_name
GROUP BY 
    fs.tablespace_name;

? Note: This shows only tablespaces with datafiles. If a tablespace has no free space entries, it might not appear — so better to use an outer join or DBA_TABLESPACES.

How to check tablespace size and free space in Oracle?

✅ 2. More Accurate Query Using Outer Join (Includes All Tablespaces)

This version ensures even tablespaces with no free space are included:

SELECT 
    dt.tablespace_name,
    ROUND(SUM(df.bytes) / 1024 / 1024 / 1024, 2) AS "Total Size (GB)",
    ROUND(SUM(NVL(fs.bytes, 0)) / 1024 / 1024 / 1024, 2) AS "Free Space (GB)",
    ROUND((SUM(df.bytes) - SUM(NVL(fs.bytes, 0))) / 1024 / 1024 / 1024, 2) AS "Used Space (GB)",
    ROUND((SUM(NVL(fs.bytes, 0)) / SUM(df.bytes)) * 100, 2) AS "Pct Free (%)"
FROM 
    dba_tablespaces dt
    JOIN dba_data_files df ON dt.tablespace_name = df.tablespace_name
    LEFT JOIN dba_free_space fs ON dt.tablespace_name = fs.tablespace_name
GROUP BY 
    dt.tablespace_name;

? NVL(fs.bytes, 0) handles cases where there's no free space entry (e.g., fully used tablespace).

How to check tablespace size and free space in Oracle?

✅ 3. Include Temporary Tablespaces

The above queries don't cover temporary tablespaces. For temp tablespaces, use:

SELECT 
    tablespace_name,
    ROUND(SUM(bytes) / 1024 / 1024 / 1024, 2) AS "Total Size (GB)"
FROM 
    dba_temp_files
GROUP BY 
    tablespace_name;

And to check temp tablespace usage (requires querying V$TEMP_SPACE_HEADER):

SELECT 
    tablespace_name,
    ROUND(SUM(bytes_cached) / 1024 / 1024 / 1024, 2) AS "Total Size (GB)",
    ROUND(SUM(bytes_used) / 1024 / 1024 / 1024, 2) AS "Used Space (GB)",
    ROUND(SUM(bytes_free) / 1024 / 1024 / 1024, 2) AS "Free Space (GB)"
FROM 
    v$temp_space_header
GROUP BY 
    tablespace_name;

✅ 4. Quick One-Liner for Immediate Overview

If you just want a fast summary:

SELECT 
    tablespace_name, 
    SUM(bytes) / 1024 / 1024 AS "Size_MB"
FROM 
    dba_data_files 
GROUP BY 
    tablespace_name;

-- And free space:
SELECT 
    tablespace_name, 
    SUM(bytes) / 1024 / 1024 AS "Free_MB"
FROM 
    dba_free_space 
GROUP BY 
    tablespace_name;

You can combine them later manually or in a script.


?️ Tips

  • You need DBA privileges to access DBA_* views.
  • Use USER_TABLESPACES or ALL_TABLESPACES if you don’t have DBA access (but info may be limited).
  • Consider monitoring growth trends over time using AWR or custom logging.
  • Watch out for autoextensible datafiles — total possible size may be larger than current size.

You can check autoextension with:

SELECT 
    file_name, 
    tablespace_name, 
    bytes / 1024 / 1024 AS "Current Size (MB)",
    maxbytes / 1024 / 1024 AS "Max Size (MB)",
    autoextensible
FROM 
    dba_data_files;

Basically, the key is combining DBA_DATA_FILES for total allocated space and DBA_FREE_SPACE for unused blocks. Doesn’t require external tools — just SQL*Plus or any Oracle client.

The above is the detailed content of How to check tablespace size and free space in Oracle?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1596
276
How to use the CASE statement in an Oracle query? How to use the CASE statement in an Oracle query? Aug 02, 2025 pm 04:32 PM

OracleSQL's CASE statement is used to implement conditional logic in queries, supporting two forms: 1. Simple CASE is used to compare a single expression with multiple values, such as returning department names according to department_id; 2. Search CASE is used to evaluate multiple boolean conditions, suitable for scope or complex logic, such as classified by salary level; 3. CASE can be used in SELECT, ORDERBY, WHERE (indirect), GROUPBY and HAVING clauses to implement data conversion, sorting, filtering, and grouping; 4. Best practices include always using ELSE to prevent NULL, ensure ending in END, adding alias to the result columns, and avoiding excessive nesting; 5. Compared with the old DECOD

How to concatenate multiple columns into one in Oracle? How to concatenate multiple columns into one in Oracle? Aug 03, 2025 am 10:40 AM

Usethe||operatortoconcatenatemultiplecolumnsinOracle,asitismorepracticalandflexiblethanCONCAT();2.Addseparatorslikespacesorcommasdirectlywithintheexpressionusingquotes;3.HandleNULLvaluessafelysinceOracletreatsthemasemptystringsduringconcatenation;4.U

How to use the WITH clause in Oracle How to use the WITH clause in Oracle Aug 21, 2025 am 08:28 AM

TheWITHclauseinOracle,alsoknownassubqueryfactoring,enablesdefiningcommontableexpressions(CTEs)forimprovedqueryreadabilityandperformance.1.ThebasicsyntaxusesWITHcte_nameAS(SELECT...)followedbyamainqueryreferencingtheCTE.2.AsingleCTEexamplecomputesaver

How to troubleshoot ORA-12541: TNS:no listener How to troubleshoot ORA-12541: TNS:no listener Aug 13, 2025 am 01:10 AM

First, confirm whether the listener on the database server has been started, use lsnrctlstatus to check, if it is not running, execute lsnrctlstart to start; 2. Check whether the HOST and PORT settings in the listener.ora configuration file are correct, avoid using localhost, and restart the listener after modification; 3. Use the netstat or lsof command to verify whether the listener is listening on the specified port (such as 1521). The client can test port connectivity through telnet or nc; 4. Ensure that the server and network firewall allow the listening port communication, the Linux system needs to be configured with firewalld or iptables, and Windows needs to enable inbound

Oracle JDBC connection string example Oracle JDBC connection string example Aug 22, 2025 pm 02:04 PM

Usejdbc:oracle:thin:@hostname:port:sidforSID-basedconnections,e.g.,jdbc:oracle:thin:@localhost:1521:ORCL.2.Usejdbc:oracle:thin:@//hostname:port/service_nameforservicenames,requiredforOracle12c multitenant,e.g.,jdbc:oracle:thin:@//localhost:1521/XEPDB

What is the difference between a view and a materialized view in Oracle? What is the difference between a view and a materialized view in Oracle? Aug 13, 2025 am 08:29 AM

Aviewdoesnotstoredataphysicallyandexecutestheunderlyingqueryeachtimeitisaccessed,whileamaterializedviewstoresthequeryresultasaphysicaltable.2.Materializedviewsgenerallyofferfasterqueryperformancebecausetheyaccessprecomputeddata,whereasviewscanbeslowe

ORA-01017: invalid username/password; logon denied ORA-01017: invalid username/password; logon denied Aug 16, 2025 pm 01:04 PM

When encountering an ORA-01017 error, it means that the login is denied. The main reason is that the user name or password is wrong or the account status is abnormal. 1. First, manually check the user name and password, and note that the upper and lower case and special characters must be wrapped in double quotes; 2. Confirm that the connected service name or SID is correct, and you can connect through tnsping test; 3. Check whether the account is locked or the password expires, and the DBA needs to query the dba_users view to confirm the status; 4. If the account is locked or expired, you need to execute the ALTERUSER command to unlock and reset the password; 5. Note that Oracle11g and above versions are case-sensitive by default, and you need to ensure that the input is accurate. 6. When logging in to special users such as SYS, you should use the assysdba method to ensure the password.

How to create a sequence in Oracle? How to create a sequence in Oracle? Aug 13, 2025 am 12:20 AM

Use the CREATESEQUENCE statement to create sequences, which are used to generate unique values, often used for primary or proxy keys; 2. Common options include STARTWITH, INCREMENTBY, MAXVALUE/MINVALUE, CYCLE/NOCYCLE and CACHE/NOCACHE; 3. Get the next value through NEXTVAL, and CURRVAL gets the current value; 4. You can use sequence values to insert data in the INSERT statement; 5. It is recommended to avoid cache to prevent the loss of values due to crashes, and the sequence values will not be released due to transaction rollback; 6. Use DROPSEQUENCE to delete sequences when no longer needed.

See all articles