Check Tablespace Utilization
-- https://www.support.dbagenesis.com/post/tablespace-utilization-in-oracle set colsep | set linesize 100 pages 100 trimspool on numwidth 14 col name format a25 col owner format a15 col "Used (GB)" format a15 col "Free (GB)" format a15 col "(Used) %" format a15 col "Size (M)" format a15 SELECT d.status "Status", d.tablespace_name "Name", TO_CHAR(NVL(a.bytes / 1024 / 1024 /1024, 0),'99,999,990.90') "Size (GB)", TO_CHAR(NVL(a.bytes - NVL(f.bytes, 0), 0)/1024/1024 /1024,'99999999.99') "Used (GB)", TO_CHAR(NVL(f.bytes / 1024 / 1024 /1024, 0),'99,999,990.90') "Free (GB)", TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0), '990.00') "(Used) %" FROM sys.dba_tablespaces d, (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) AND NOT (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY') UNION ALL SELECT d.status "Status", d.tablespace_name "Name", TO_CHAR(NVL(a.bytes / 1024 / 1024 /1024, 0),'99,999,990.90') "Size (GB)", TO_CHAR(NVL(t.bytes,0)/1024/1024 /1024,'99999999.99') "Used (GB)", TO_CHAR(NVL((a.bytes -NVL(t.bytes, 0)) / 1024 / 1024 /1024, 0),'99,999,990.90') "Free (GB)", TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "(Used) %" FROM sys.dba_tablespaces d, (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a, (select tablespace_name, sum(bytes_cached) bytes from v$temp_extent_pool group by tablespace_name) t WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = t.tablespace_name(+) AND d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY';
Report Tablespace Status
set pagesize 2000 set linesize 180 set feedback 1 col tablespace_name Format a30 col maxBytes_MB Format 999,999,999,999,990 col Used_MB Format 999,999,999,999,990 col free_MB Format 999,999,999,999,990 col Usage_per Format 999,999,999,999,990 select tablespace_name ,maxBytes_MB ,Used_MB ,free_MB ,Usage_per Usage_per from (select (select value from v$parameter where name ='db_unique_name') db_unique_name ,a1.tablespace_name ,round(allocation/1024/1024,2) allocation_MB ,round(maxBytes/1024/1024,2) maxBytes_MB ,round((maxBytes-case when UsedBytes is null then 0 else UsedBytes end)/1024/1024,2) free_MB ,round((case when UsedBytes is null then 0 else UsedBytes end)/1024/1024,2) Used_MB ,round((case when UsedBytes is null then 0 else UsedBytes end / maxBytes) * 100,2) Usage_per from (select tablespace_name ,sum(bytes) allocation ,sum(CASE AUTOEXTENSIBLE WHEN 'YES' THEN maxbytes WHEN 'NO' THEN bytes END) maxBytes from dba_data_files --where tablespace_name not like 'UNDO%' group by tablespace_name ) a1 ,(select TABLESPACE_NAME,sum(bytes) UsedBytes from dba_segments group by tablespace_name) a2 where a1.tablespace_name = a2.tablespace_name(+) UNION ALL select (select value from v$parameter where name ='db_unique_name') db_unique_name ,a1.tablespace_name ,round(allocation/1024/1024,2) allocation_MB ,round(maxBytes/1024/1024,2) maxBytes_MB ,round((freebytes+(maxBytes-allocation))/1024/1024,2) free_MB ,round((allocation-freebytes)/1024/1024,2) Used_MB ,round(((allocation - freebytes) / maxBytes) * 100,2) Usage_per from (select tablespace_name ,sum(bytes) allocation ,sum(CASE AUTOEXTENSIBLE WHEN 'YES' THEN maxbytes WHEN 'NO' THEN bytes END) maxBytes from dba_TEMP_files --where tablespace_name not like 'UNDO%' group by tablespace_name ) a1 ,(select tablespace_name,sum(bytes_free) freebytes from v$temp_space_header group by tablespace_name) a2 where a1.tablespace_name = a2.tablespace_name(+) ) b1 where tablespace_name not like '%TEMP%' order by tablespace_name desc;
Drop Tablespace and remove datafiles
drop tablespace tablespace_name including contents and datafiles;
Tablespace add a datafile using omf
alter tablespace tablespace_name add datafile size 32767M autoextend on maxsize unlimited;
Tablespace add mutiple datafiles using omf
-- Tablespace begin for i in 1..50 loop execute immediate 'alter tablespace tablespace_name add datafile size 32767M autoextend on maxsize unlimited'; end loop; end; / -- Temp Tablespace begin for i in 1..10 loop execute immediate 'alter tablespace temp add tempfile size 32767M autoextend on maxsize unlimited'; end loop; end; /
Check tablespace datafiles
select count(*), tablespace_name from dba_data_files group by tablespace_name order by 2;
Drop Tablespace Datafile
When you drop a datafile or tempfile, references to the datafile or tempfile are removed from the data dictionary and control files, and the physical file is deleted from the file system or Oracle Automatic Storage Management (Oracle ASM) disk group.
alter tablespace C_PFSD drop datafile '+DATADG/ORCL/DATAFILE/c_pfsd.525.1120237865';
Query Datafile resize max size
set line 200 col tablespace_name format a30 col file_name format a100 select /*+ rule */ a.tablespace_name, a.file_name, a.bytes/1024/1024 file_size_MB, (b.maximum+c.blocks-1)*d.db_block_size/1024/1024 highwater from dba_data_files a, (select file_id,max(block_id) maximum from dba_extents group by file_id) b, dba_extents c, (select value db_block_size from v$parameter where name='db_block_size') d where a.file_id = b.file_id and c.file_id = b.file_id and c.block_id = b.maximum order by a.tablespace_name,a.file_name;
Fix query dba_segment slow performance
Ref: http://www.dadbm.com/oracle-slow-sql-query-against-dba_segments-solved/
dbms_space_admin.tablespace_fix_segment_extblks('TablespaceName');
0 留言