Oracle日常维护之表管理

简介:
通常做为DBA的我们来说,对于表的维护主要是做以下的工作
1. 增加表所在表空间的大小
我们所创建的表都是存储在表空间中的,当表空间的创建属性是自动扩展的时候,通常我们不需要人为干预,表中的数据量持续增长,会使表空间的可用空间减少,表空间会自动增长,这会带来一定的性能上的影响,表空间的自动扩展直接操作物理磁盘,将增加的表空间格式化成可用于写数据的数据块。同时也会导致数据文件疯狂增大的可能,不好管理,所以建议将表空间的属性设置成手动扩展。
2. 表的碎片整理
有时候会遇到将一个表中大量的历史无用数据删除掉,这时候就会产生数据块级别的碎片,所谓的碎片就是说:每个数据块中含有的数据很少,但并且一个数据分散在多个这样的数据块中。
产生这种现象的原因是:
表上有大量的insert 和delete 在表的段头中记录的一个值-HWM(high water mark)这个高水位线表示当前的段里面使用的最后一个数据块的位置,当发生insert的时候增加hwm的值,和水位上涨的道理差不多的。
当删除一些数据的时候,块儿中的数据被删除,但是HWM并不会下降。HWM的好处是:当发生全表扫描的时候,只会扫描到标记HWM的地方为止,如果没有HWM标记,就会导致扫描所有有使用的和未使用的数据块,性能很低下。有了这个标记,就扫描到HWM出现为止。
delete操作,并不会使HWM下降。所以在有数据写进来的时候HWM的值还是会增加的,长时间下去会导致数据文件很大,空间浪费。

解决方法:
在9i的时候通常的做法是将表做一个move操作
alter table tablename move;
把表移动一下,这个操作会使表的索引全部失效,所以会造成一定的影响
这时候可以重建索引
alter index index_name rebuild online;

还有就是将表exp/imp 导入导出操作;
为了减少对应用的影响10g的版本可以使用shrink,这种方式的收缩操作是通过事物老进行的,因此在收缩的过程中,表可以进行DML操作,当然如果对正在收缩的表进行DML操作,需要等待收缩引起的是事物完成,并释放锁。要对表收缩需要有两个前提条件:
1. 表所在的表空间必须使用ASSM
2. 表级别上需要启用行迁移row movement
alter table tablename enable row movement;
压缩数据,并不下降HWM
alter table tablename shrink space compact;
收缩表并下降    HWM
alter table tablename shrink space;
收缩表并下降HWM同时和表相关的索引等会同时收缩
alter table tablename shrink space cascade;

 

     本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/462944,如需转载请自行联系原作者

相关文章
|
7月前
|
Oracle 关系型数据库 数据库
9-4 Oracle管理表空间和数据文件
9-4 Oracle管理表空间和数据文件
|
8月前
|
SQL 监控 Oracle
Oracle创建和管理表空间
Oracle创建和管理表空间
63 1
|
8月前
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
70 0
|
4月前
|
Oracle 关系型数据库 数据库
Oracle查询优化-复制表的定义及数据
【1月更文挑战第5天】【1月更文挑战第14篇】在Oracle数据库中,复制表定义和复制表数据是两个常见的操作。
55 1
|
22天前
|
SQL 存储 Oracle
Oracle中的Dual表:数据世界的“神奇小盒子”
【4月更文挑战第19天】Oracle的Dual表是一个虚拟表,仅含一行一列,常用于执行SQL函数、数据类型转换、测试语句和动态SQL。它是测试和便捷操作的工具,如获取当前日期(`SELECT SYSDATE FROM DUAL`)、数字转字符串(`SELECT TO_CHAR(12345) FROM DUAL`)。在存储过程、函数和触发器中也发挥重要作用,是数据库管理员的得力助手。
|
2月前
|
存储 Oracle 关系型数据库
Oracle系列之七:表的创建与管理
Oracle系列之七:表的创建与管理
|
5月前
|
运维 Oracle 关系型数据库
医院检验科LIS系统源码,oracle数据库、报告管理、质控管理
医院检验科LIS系统源码,oracle数据库、报告管理、质控管理
68 0
|
5月前
|
Oracle 关系型数据库
Oracle - 表操作语句
Oracle - 表操作语句
25 0
|
7月前
|
存储 Oracle 关系型数据库
9-6 Oracle 管理索引
9-6 Oracle 管理索引
|
8月前
|
Oracle 关系型数据库 数据库
Oracle数据库 查询所有表
Oracle数据库 查询所有表
118 1

推荐镜像

更多