Oracle Resize
datafile,tempfile,undo空间使用过大时可以通过 resize将空间回收到 高水位线附近(不低于高水位);
其中表段,索引段存在高水位线,表空间的高水位线就是所有表段,索引段等高水位线的最大值;
---查看所有数据文件,undo文件
占用空间大小(filesize),
空闲空间大小(freesize),
使用空间大小(usedsize),
高水位线(hwmsize),
可以回收的空间(canshirnksize),
回收resize语句(cmd)
select a.file_id,
a.file_name,
a.filesize,
b.freesize,
(a.filesize - b.freesize) usedsize,
c.hwmsize,
c.hwmsize - (a.filesize - b.freesize) unsedsize_belowhwm,
a.filesize - c.hwmsize canshrinksize,
'alter database datafile ' || a.file_name || ' resize ' || c.hwmsize || 'M;' cmd
from (select file_id, file_name, round(bytes / 1024 / 1024) filesize
from dba_data_files) a,
(select file_id, round(sum(dfs.bytes) / 1024 / 1024) freesize
from dba_free_space dfs
group by file_id) b,
(select file_id, round(max(block_id) * 8 / 1024) HWMsize
from dba_extents
group by file_id) c
where a.file_id = b.file_id
and a.file_id = c.file_id
order by unsedsize_belowhwm desc;
---执行此SQL前需要确保数据库统计信息是最新的;
查出来高水位线后,就可以通过cmd列把数据文件或者undo缩小到高水位线附近了,
alter database datafile 'datafilename' resize xxM;
alter database datafile 'undodatafilename' resize xxM;
查询当前数据库没有使用临时表空间时,也可以通过Resize回收临时表空间;
alter database tempfile 'tempfilename' resize xxM;
---查看数据文件,undo,temp文件大小
select *
from (select bytes / 1024 / 1024 / 1024, file_name, tablespace_name
from dba_data_files
union all
select bytes / 1024 / 1024 / 1024, file_name, tablespace_name
from dba_temp_files)
order by 1 desc;
除此以外,临时表空间和UNDO表空间可以通过重建回收空间;
如果报错ORA-03297,说明Resize的尺寸过小,需要适当调大reisze的值;
---查看10号数据文件中高水位线较高的区属于哪些用户以及段名,段类型
select *
from (select owner, segment_name, segment_type, block_id
from dba_extents
where file_id =
(select file_id from dba_data_files where file_id = 10)
order by block_id desc)
where rownum <= 5;
查出来高水位线后,就可以通过cmd列把数据文件或者undo缩小到高水位线附近了,
alter database datafile 'datafilename' resize xxM;
alter database datafile 'undodatafilename' resize xxM;
查询当前数据库没有使用临时表空间时,也可以通过Resize回收临时表空间;
alter database tempfile 'tempfilename' resize xxM;
---查看数据文件,undo,temp文件大小
select *
from (select bytes / 1024 / 1024 / 1024, file_name, tablespace_name
from dba_data_files
union all
select bytes / 1024 / 1024 / 1024, file_name, tablespace_name
from dba_temp_files)
order by 1 desc;
除此以外,临时表空间和UNDO表空间可以通过重建回收空间;
如果报错ORA-03297,说明Resize的尺寸过小,需要适当调大reisze的值;
---查看10号数据文件中高水位线较高的区属于哪些用户以及段名,段类型
select *
from (select owner, segment_name, segment_type, block_id
from dba_extents
where file_id =
(select file_id from dba_data_files where file_id = 10)
order by block_id desc)
where rownum <= 5;
参考:
http://blog.chinaunix.net/uid-10218589-id-349050.html
http://blog.chinaunix.net/uid-42518-id-2404799.html
http://blog.itpub.net/6517/viewspace-536246
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29785807/viewspace-2094469/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29785807/viewspace-2094469/