Oracle10g中表的碎片空间回收

对于一些对表经常操作的数据来说。大量的增加及删除操作会导致表的占用空间浪费,下面的操作可以回收整理。减少不必要的空间占用。

需要先创建一个存储过程来计算表或者索引占用的空间及使用的空闲空间。

存储过程名:

get_table_blocks('rocfy','T_test_data');传入参数为当前用户和对应要计算的表名或者索引名称即可。

具体存储过程代码在后面在复制上来。

操作过程:

SQL> alter table T_test_data enable row movement; --支持行移动

Table altered.

SQL> set timing on

SQL> set serveroutput on

SQL> exec get_table_blocks('rocfy','T_test_data');

FS1 Blocks = 2826 Bytes =46301184

FS2 Blocks = 3996 Bytes =46301184

FS3 Blocks = 169 Bytes =46301184

FS4 Blocks = 7028 Bytes =46301184

Full Blocks = 179884 Bytes =2947219456

Unformatted Blocks= 240 Bytes =3932160

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.34

SQL> alter table T_test_data shrink space compact; --重组该表中现有的行

Table altered.

Elapsed: 00:02:15.81

SQL> exec get_table_blocks('rocfy','T_test_data');

FS1 Blocks = 19 Bytes =311296

FS2 Blocks = 11 Bytes =311296

FS3 Blocks = 9 Bytes =311296

FS4 Blocks = 8955 Bytes =311296

Full Blocks = 184909 Bytes =3029549056

Unformatted Blocks= 240 Bytes =3932160

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.18

SQL> alter table T_test_data shrink space;--回收空间

Table altered.

Elapsed: 00:00:04.67

SQL> exec get_table_blocks('rocfy','T_test_data');

FS1 Blocks = 18 Bytes =294912

FS2 Blocks = 10 Bytes =294912

FS3 Blocks = 8 Bytes =294912

FS4 Blocks = 6 Bytes =294912

Full Blocks = 184911 Bytes =3029581824

Unformatted Blocks= 0 Bytes =0

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.16

SQL> alter table T_test_data shrink space cascade; --也可以用一条语句来压缩表的索引

Table altered.

Elapsed: 00:00:58.92

SQL> exec get_table_blocks('rocfy','T_test_data');

FS1 Blocks = 18 Bytes =294912

FS2 Blocks = 10 Bytes =294912

FS3 Blocks = 8 Bytes =294912

FS4 Blocks = 6 Bytes =294912

Full Blocks = 184911 Bytes =3029581824

Unformatted Blocks= 0 Bytes =0

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.18

SQL>

可以对比看出回收的BLOCK数

对于一些对表经常操作的数据来说。大量的增加及删除操作会导致表的占用空间浪费,下面的操作可以回收整理。减少不必要的空间占用。

需要先创建一个存储过程来计算表或者索引占用的空间及使用的空闲空间。

存储过程名:

get_table_blocks('rocfy','T_test_data');传入参数为当前用户和对应要计算的表名或者索引名称即可。

具体存储过程代码在后面在复制上来。

操作过程:

SQL> alter table T_test_data enable row movement; --支持行移动

Table altered.

SQL> set timing on

SQL> set serveroutput on

SQL> exec get_table_blocks('rocfy','T_test_data');

FS1 Blocks = 2826 Bytes =46301184

FS2 Blocks = 3996 Bytes =46301184

FS3 Blocks = 169 Bytes =46301184

FS4 Blocks = 7028 Bytes =46301184

Full Blocks = 179884 Bytes =2947219456

Unformatted Blocks= 240 Bytes =3932160

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.34

SQL> alter table T_test_data shrink space compact; --重组该表中现有的行

Table altered.

Elapsed: 00:02:15.81

SQL> exec get_table_blocks('rocfy','T_test_data');

FS1 Blocks = 19 Bytes =311296

FS2 Blocks = 11 Bytes =311296

FS3 Blocks = 9 Bytes =311296

FS4 Blocks = 8955 Bytes =311296

Full Blocks = 184909 Bytes =3029549056

Unformatted Blocks= 240 Bytes =3932160

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.18

SQL> alter table T_test_data shrink space;--回收空间

Table altered.

Elapsed: 00:00:04.67

SQL> exec get_table_blocks('rocfy','T_test_data');

FS1 Blocks = 18 Bytes =294912

FS2 Blocks = 10 Bytes =294912

FS3 Blocks = 8 Bytes =294912

FS4 Blocks = 6 Bytes =294912

Full Blocks = 184911 Bytes =3029581824

Unformatted Blocks= 0 Bytes =0

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.16

SQL> alter table T_test_data shrink space cascade; --也可以用一条语句来压缩表的索引

Table altered.

Elapsed: 00:00:58.92

SQL> exec get_table_blocks('rocfy','T_test_data');

FS1 Blocks = 18 Bytes =294912

FS2 Blocks = 10 Bytes =294912

FS3 Blocks = 8 Bytes =294912

FS4 Blocks = 6 Bytes =294912

Full Blocks = 184911 Bytes =3029581824

Unformatted Blocks= 0 Bytes =0

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.18

SQL>

可以对比看出回收的BLOCK数


相关文章

  • 培训机构课程设置
  • ◆ 填写 2 .问题/现象与培训需求分析 ◆专家讲师和技术咨询顾问分析"培训需求调查表",安排对客户实施访问.通过与客户的主管人员就开发项目的探讨和沟通,了解客户的现状与出现的问题,理解客户真正关心和希望达到的目的. 3 ...查看


  • 广西社保局技术方案
  • 2.技术方案 第一章 概述 1.1. 需求分析 随着互联网技术.通信技术的快速发展,各行各业信息化建设也从通常的文字录入.办公自动化发展到业务活动的信息化,为了满足不同应用的需求,基于互联网的应用模型和计算模型得到了广泛的应用.PC服务器随 ...查看


  • 杭州Oracle数据库课程
  • [在线报名┊课程咨询┊内容报错┊打印本页┊将本页添加到收藏夹 ] 该课程所属机构:杭州培训网 Oracle数据库系列课程 一.Oracle 9iOCA培训 Oracle大学推出的全球认证计划 OCP(Oracle Certified Pro ...查看


  • 如何搭建一个数据库服务器平台
  • 如何搭建一个数据库服务器平台如何搭建一个数据库服务器平台 玩Oracle 2年多了,从接触Oracle 到现在,一直没有停止过学习. 要学的东西太多,刚入门的时候是这样的感觉,现在还是这样的感觉. 有时候也在想,还要学多长时间才能感觉自我良 ...查看


  • 英文简历 中英对照
  • Name Wang--. Nationality China Gender Male Date of Birth 1983-02-25 Language Standard CET-6 ID No. [***********]0 Educat ...查看


  • oracle物理结构
  • 大型数据库管理系统 Oracle 体系结构 0 前言 目前,工程中常用数据库管理系统主要集中Oracle .SQL server .mySQL 等,其中Oracle 是大型关系型数据库管理系统,相对于其它DBMS 而言Oracle 主要有以 ...查看


  • Oracle商务智能
  • Oracle商务智能在线研讨会 2010 年 10 月 20日 会议内容: Oracle 商务智能完整方案概述 Oracle 商务智能应用特点和价值 Oracle 商务智能基础平台11g新特性更新 1 2 3 Oracle甲骨文公司 全球最 ...查看


  • Oracle 简历
  • Oracle 简历模板 个 人 简 历 一.个人基本信息: 姓名:张三 性别:男 年龄:23岁 证书:OCP (11G ) 英语:良好 联系电话:xx E-MAIL :[email protected] 二.求职意向 数据库管理员 三.职业技能 ...查看


  • Windows上Oracle开放防火墙端口问题
  • Windows上Oracle开放防火墙端口问题 安装完Windows版的Oracle 10G 后,开启了windows 2003自带的防火墙,发现在本机可以访问oracle数据库,但在远程不能连接,一直都在报连接超时.关闭防火墙后,可以用远 ...查看


热门内容