Oracle空间清理及表空间扩容

作者:暴躁小n | 创建时间: 2023-03-27
在进行性能测试时发现日终性能测试前对于数据库的清理尤为重要...
Oracle空间清理及表空间扩容

操作方法

1:查看表空间使用率 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) b WHERE a.tablespace_name = b.tablespace_name;

2:日终性能测试前对于一些类似于his表,settinit表都可以直接清理掉 ------HS_HIS_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;

3:查看用户默认的表空间. select username,default_tablespace from dba_users;

4:查看要扩展的表空间使用的数据文件路径与名字 select * from dba_data_files where tablespace_name like 'HS_HIS_DATA%';

5:查询oracle本次修改的数据文件及其编号。 select file#,name from v$datafile;

6:查找该数据文件的最大块号。语句如下: select max(block_id) from dba_extents where file_id=15;

7:显示SXSJ表空间每个数据块的大小。 select tablespace_name,blocK_size,status,contents from dba_tablespaces where tablespace_name like 'HS_HIS_DATA%';---8192 计算该数据块占用的物理空间 语句如下: select 472536*8/1024 from dual; ---执行结果为: 3691,就是3个G左右 例如更改hisdat.dbf表空间大小 alter database datafile '/ora10g/ora11g/ora11gdata/pbox21/hisdat.dbf' resize 1000M; 执行失败 说明:之所以执行失败是因为当初我们执行修改数据文件为1G,但是实际数据已经占用了3G多了,不能修改为1G,只能比实际值大些。 select file#,name from v$datafile;

8:查一下占用最大块(segment 534785)的是什么。语句如下: select distinct owner, segment_name, segment_type,tablespace_name from dba_extents where file_id =15 and block_id=472536; 此时我们把这张表drop掉,记住一定要先备份表结构等信息,然后再重新导入表结构等数据信息,再重新查看这张表会发现占用的块减小了;如此反复操作我们可以把占用较大的快都减小,对应的表空间时间物理占用空间也减小了,可以相应的优化数据库空间; 占用较大的快原因:产生的一些碎片等原因,例如DELETE 的话连HMW都不会降低的,其实数据文件在系统一级就是一个已经指定的文件;

9:查看表空间是否为自动扩展(性能测试时尽量关闭表空间自动扩展) select tablespace_name,file_name,autoextensible from dba_data_files ;

10:总结修改语句语法 开启自动扩展功能语法: alter database datafile '对应的数据文件路径信息' autoextend on; 关闭自动扩展功能语法: alter database datafile '/u01/app/oracle/oradata/orcl/assetdat.dbf' autoextend off;

点击展开全文

更多推荐