oracle空间清理及表空间扩容
我在嫩家旁边
2024-11-17 01:58:05
最佳回答
11:查看表空间使用率select a.tablespace_name "表空间名", total / 1024 / 1024 "表空间大小单位m", free / 1024 / 1024 "表空间剩余大小单位m", (total - free) / 1024 / 1024 "表空间使用大小单位m", round((total - free) / total, 4) * 100 "使用率 [[%]]"from (select tablespace_name,sum(bytes) free from dba_free_space group by tablespace_name) a, (select tablespace_name, sum(bytes) total from dba_data_files group by tablespace_name) bwhere a.tablespace_name = b.tablespace_name;22:日终性能测试前对于一些类似于h**表,settinit表都可以直接清理掉------hs_h**_data;hs_settinit_data;hs_fil_data 可以全部干掉------例如清理hs_settinit用户,注意尽量使用truncate,不易产生碎片这里有必要提一下drop truncate 以及 delete 的区别truncate:其作用会删除表所有的记录同时释放占用的空间,期间不会产生碎片,不产生日志,速度快,其缺点是不能回滚,删除的数据不能恢复;delete:delete可以有where条件,而且可以回滚,不可以回收索引占有的表空间drop:其作用将表的所有属性全部干掉,且对应表所占用的空间全释放掉begin for cur_tables in(select * from user_tables) loop execute immediate 'truncate table hs_settinit.' || cur_tables.table_name; end loop;end;33:查看用户默认的表空间.select username,default_tablespace from dba_users;44:查看要扩展的表空间使用的数据文件路径与名字select * from dba_data_files where tablespace_name like 'hs_h**_data%';55:查询oracle本次修改的数据文件及其编号。select file#,name from v$datafile;66:查找该数据文件的最大块号。语句如下:select max(block_id) from dba_extents where file_id=15;77:显示sxsj表空间每个数据块的大小。select tablespace_name,block_size,status,contents from dba_tablespaces where tablespace_name like 'hs_h**_data%';---8192计算该数据块占用的物理空间语句如下:select 472536*8/1024 from dual;---执行结果为: 3691,就是3个g左右例如更改h**dat.dbf表空间大小alter database datafile '/ora10g/ora11g/ora11gdata/pbox21/h**dat.dbf' resize 1000m; 执行失败说明:之所以执行失败是因为当初我们执行修改数据文件为1g,但是实际数据已经占用了3g多了,不能修改为1g,只能比实际值大些。select file#,name from v$datafile;88:查一下占用最大块(segment 534785)的是什么。语句如下:select d**tinct owner, segment_name, segment_type,tablespace_name from dba_extents where file_id =15 and block_id=472536;此时我们把这张表drop掉,记住一定要先备份表结构等信息,然后再重新导入表结构等数据信息,再重新查看这张表会发现占用的块减小了;如此反复操作我们可以把占用较大的快都减小,对应的表空间时间物理占用空间也减小了,可以相应的优化数据库空间;占用较大的快原因:产生的一些碎片等原因,例如delete 的话连hmw都不会降低的,其实数据文件在系统一级就是一个已经指定的文件;99:查看表空间是否为自动扩展(性能测试时尽量关闭表空间自动扩展)select tablespace_name,file_name,autoextensible from dba_data_files ;1010:总结修改语句语法开启自动扩展功能语法:alter database datafile '对应的数据文件路径信息' autoextend on;关闭自动扩展功能语法:alter database datafile '/u01/app/oracle/oradata/orcl/assetdat.dbf' autoextend off;end 20210311