欢迎来到天天文库
浏览记录
ID:6052647
大小:366.33 KB
页数:4页
时间:2018-01-01
《oracle降低高水位线教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Oracle降低高水位线方法编制人:王欣亮2014-05-30第一版众所周知oracle数据库在使用到一段时间之后会有表空间文件变大并且占用磁盘空间较多的情况,这种情况叫做高水位线现象。这时候一般都是数据库空间中的某些表数据量过大造成的,因为频繁的对某一个表进行大量的DML语句操作所以占用的空间会上升的很快。如果一个表的数据量一直处于较大的情况会导致数据库在进行DML语句操作时运行缓慢,严重时会导致性能几句降低、死机等现象。使用OB等工具查看现有数据库使用情况如下:当占用空间很大时,我们会第一时间想到删除数据库中无用的数
2、据来降低磁盘占用率。我们在使用delete语句在进行删除的时候会提示删除了XXXX条信息。如,删除60天前的数据deletefromz_testresultwherestarttime<=(sysdate-60);commit;在删除了以上无用的数据之后我们通过OB等工具对数据库表空间的容量进行查得知,并没有减少。从上图可以看出我们使用delete删除了数据之后数据库的空间占用率并没有下降,但是我们明明已经将数据删除并且提交了。这实际上是与oracle的机制有关系。在oracle的世界中数据文件占用的空间分为两类,一类是
3、物理磁盘空间,一类是数据文件的逻辑空间。物理空间我们可以正常理解就是我们正常可以从磁盘使用率中看到的磁盘使用大小;逻辑空间是当数据库文件使用了一定量的物理空间之后,数据具体在这个物理空间上占用了多少的块。如果不好理解的话给大家举个例子,大家都使用过迅雷,迅雷在下载文件的时候采用了一种手段就是先占用一定的磁盘空间,但是不像这个空间写入数据只是先占用上,类似于画了个框不让其他数据进来,等下来到数据之后才开始向这个空间写入需要的东西。Oralce没有类似SQLserver的数据库收缩功能,当oracle的数据文件占用了一定的物
4、理磁盘空间之后无论是否数据文件内容减小,占用的空间物理量是不会有任何变化的。所以我们可以减少的只是数据文件逻辑上的大小,将逻辑大小减少之后我们就可以继续向其中不断的写入数据了,从而无需继续改变数据文件的物理大小。从上面的图来看虽然删除了数据但是并没有减少逻辑空间,如何能减少逻辑空间是指有剩余呢,这就用到了oralce的move功能。Move功能实际上是oracle从8i开始提供的一个功能,作用是讲一个表从一个表空间转移到另一个表空间中。他的实际原理是在物理块之间复制移动数据,移动之后的文件由于文件的物理块有所变化所以会重
5、新计算实际数据的占用率。我们可以根据此特性来使用move功能来降低oracle的逻辑空间使用率。具体方法如下:首先我们要找到占用空间最大的那个表,并且删除其中无用的数据。通过OB工具我们可以看到z_testresult这个表占用了大量空间,我们使用一下数据删除无用数据。deletefromz_testresultwherestarttime<=(sysdate-60);commit;删除完成后我们使用move来移动这个表的物理块。altertablez_testresultmove;执行这个语句的时间会与你这个表占用空间
6、的大小成正比,即表越大时间越长。等待即可。执行完成之后我们再来看一下这个表所占用的空间。可以看到z_testresult这个表的大小已经改变。此时我们在看看表空间使用率。通过OB可以看到表空间使用率也已经下降。如此看来使用move功能移动物理块的方法是可以降低oracle表空间的逻辑大小的,如此做可以保证表空间的有效利用,使维护工作可以有效开展。注意事项:当对一个表使用了move功能之后这个表上关联的所有索引都会失效,查看index的状态均为INVALID。此时我们可以重新建立索引:alterindexindex_nam
7、erebuild;注意在使用以上语句重建index的时候需要在执行move功能之后隔一段时间,从实际操作的经验来看move一些大表的时候即使命令执行完了,表也会处于锁的状态,要过一会才能解除锁状态。另外如果你的表是主要业务表,并且非常大,建议move的时候是在业务不繁忙的时候进行,以免造成性能降低导致写入问题。
此文档下载收益归作者所有