oracle 收缩段空间,Oracle段收缩功能

1. 了解段收缩

应用场景:如果对一张表频繁执行插入、更新和删除操作,时间长了可能会出现大量碎片,Oracle针对这种场景推出段收缩功能,以便减少碎片。

Oracle的段收缩执行两项不同的任务:(1)压缩数据行,(2)移动高水位线(HWM)。

因为重新定位HWM可能阻塞用户的DML操作,而存粹的收缩操作则不会产生这种影响。

操作期间会维护表上的所有索引。

2. 自动执行Segment Advisor

## 2.1 在OEM查看并设置 ##

服务器 -> Oracle Scheduler -> 自动维护任务 -> 配置,来启用或禁用“段指导”任务,同时这里还可以设置“优化程序统计信息搜集”,“自动 SQL 优化”

## 2.2 使用SQL命令设置 ##

```

--禁用自动执行Segment Advisor

BEGIN

dbms_auto_task_admin.disable(client_name => 'auto space advisor', operation => NULL, window_name => NULL);

END;

/

--启用自动执行Segment Advisor

BEGIN

dbms_auto_task_admin.enable(client_name => 'auto space advisor', operation => NULL, window_name => NULL);

END;

/

3. 收缩段

**收缩段核心步骤:**

--启用行移动

alter table T3 enable row movement;

--与大多数Oracle SQL命令不同,添加COMPACT关键字后,实际执行的操作不多反少,即HWM不移动

alter table T3 shrink space compact;

--去掉COMPACT关键字后,执行HWM移动

alter table T3 shrink space;

--禁用行移动

alter table T3 disable row movement;

**实验:执行段分析和收缩操作**

## 3.1 创建表T3 ##

--创建表T3

create table T3 (c1 varchar2(4000));

## 3.2 往T3插入1000行(使用大值),然后使用小值更新这些行 ##

--往T3插入1000行(使用大值)

begin

for i in 1..1000 loop

insert into T3 select rpad(i,3900,'*') from dual;

end loop;

commit;

end;

/

--T3大小

select segment_name, BYTES/1024/1024 "MB" from user_segments where segment_name = 'T3';

SEGMENT_NAME MB

T3 8

--使用小值更新这些行

update t3 set c1='1';

commit;

--此时再次查询表T3大小是不变的

## 3.3 设置启动Segment Advisor作业 ##

variable task_id number

declare

name varchar2(100);

descr varchar2(500);

obj_id number;

begin

name := ''; --unique name

descr := 'Check T3 table';

dbms_advisor.create_task('Segment Advisor', :task_id, name, descr, null);

dbms_advisor.create_object(name, 'TABLE', 'JINGYU', 'T3', null, null, obj_id);

dbms_advisor.set_task_parameter(name, 'RECOMMEND_ALL', 'TRUE');

dbms_advisor.execute_task(name);

end;

/

执行过程如下:

SQL> conn jingyu/jingyu

Connected.

SQL> variable task_id number

SQL> declare

2 name varchar2(100);

3 descr varchar2(500);

4 obj_id number;

5 begin

6 name := ''; --unique name

7 descr := 'Check T3 table';

8 dbms_advisor.create_task('Segment Advisor', :task_id, name, descr, null);

9 dbms_advisor.create_object(name, 'TABLE', 'JINGYU', 'T3', null, null, obj_id);

10 dbms_advisor.set_task_parameter(name, 'RECOMMEND_ALL', 'TRUE');

11 dbms_advisor.execute_task(name);

12 end;

13 /

PL/SQL procedure successfully completed.

Elapsed: 00:00:02.01

SQL>

SQL>

SQL> print task_id

TASK_ID

1358

根据上面的TASK_ID查询DBA_ADVISOR_FINDINGS

col owner for a20

col task_name for a20

col type for a20

select owner, task_id, task_name, type, message, more_info from dba_advisor_findings where task_id=1358;

OWNER TASK_ID TASK_NAME TYPE

MESSAGE

MORE_INFO

JINGYU 1358 TASK_1358 PROBLEM

The free space in the object is less than 10MB.

Allocated Space:8388608: Used Space:954000: Reclaimable Space :7434608:

## 3.4 执行段收缩 ##

alter table T3 enable row movement;

alter table T3 shrink space compact;

alter table T3 shrink space;

alter table T3 disable row movement;

--T3大小

select segment_name, BYTES/1024/1024 "MB" from user_segments where segment_name = 'T3';

SEGMENT_NAME MB

T3 .0625

可以看到,T3表由8M大小成功收缩成0.0625M大小。至此,完成T3表的shrink操作。

用mysql实现类似于oracle dblink的功能

用mysql实现类似于oracle dblink的功能 首先看看有没有federated 引擎. mysql> show engines; +------------+----------+ ...

WordPress文章页添加展开/收缩功能

很多时候我们在WordPress上发布一些文章的时候里面都包含了很多的代码,我一般又不喜欢把代码压缩起来而喜欢让代码格式化显示,但是格式化显示通常会让文章内容看起来很多,不便于访问者浏览,所以今天就介 ...

oracle修改审计功能

oracle修改审计功能 如果没有关闭审计功能,审计日志文件默认保存在位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/ 关闭审计:alter system set au ...

oracle导入导出功能

1.普通版:oracle导入导出功能:导出exp 用户名/密码@SID file=f:\xx.dmp owner=用户名 导入imp 用户名/密码@SID full=y file=f:\xx.dmp ...

dhtmlxtree 节点 展开收缩:新增了直接点 文本内容 也 实现了 展开收缩 功能(并记住了展开、收缩状态)

dhtmlxtree 节点 展开收缩通常情况我们按 +- 就实现了 展开收缩 功能,为了方便我们新增了直接点 文本内容 也 实现了 展开收缩 功能(并记住了展开.收缩状态) tree = new dh ...

Oracle EBS WMS功能介绍(二)

Oracle EBS WMS功能介绍(二) (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处.否则请与本人联系,违者必究) 出货物流逻辑主要包括 1.      打包.能够进 ...

mysql和oracle的区别(功能性能、选择、使用它们时的sql等对比)

一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取.共享与锁定. mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他se ...

oracle数据库基础功能

一.oracle基本常用的数据类型 varchar(长度) 字符串char(长度) 字符number(x,y) x表示总位数 y表示保留小数点后几位数 eg面试题:number(5,3)最大的数是99 ...

Oracle的AUTOTRACE功能

ORACLE9i在使用autotrace之前,需要作一些初始设置: 1.用sys用户运行脚本utlxplan.sql创建PLAN_TABLE表 脚本目录:(UNIX:$ORACLE_HOME/rdbm ...

随机推荐

[LeetCode] All solution

比较全的leetcode答案集合: kamyu104/LeetCode grandyang

Windows cmd命令搜索顺序

一.在cmd中执行一个不带后缀的命令(不带路径),首先会在无后缀的系统命令(如cd.dir等)中搜索,如果找到了就执行该命令, (dir是无后缀的系统命令所以优先执行,无视当前目录中的dir.exe) ...

桥牌笔记索引,牌例全部摘自Bridge Master 2000

Level 3 A A34-到处都是希望 B B14 防将牌失控 B26 探索式打法 C C1 绝不能让东家上手 C5 4-1分布该怎么办? C10 保持将牌控制 C27 多一个成功机会 D D1 注 ...

深入理解OpenGL拾取模式(OpenGL Picking)

深入理解OpenGL拾取模式(OpenGL Picking) 本文转自:http://blog.csdn.net/zhangci226/article/details/4749526 在用OpenGL ...

JAVAscript——菜单下拉列表练习(阻止事件冒泡)

下拉列表框,鼠标点击文本框,出现下拉,鼠标(离开的时候或者点击网页其他位置时)下拉列表消失.鼠标放到下拉列表的某一项上变背景色,点击下拉列表的某一项将该项的值显示在文本框内,然后下拉列表消失. &lt ...

redis数据类型:lists

redis的list类型其实就是一个每个子元素都是string类型的双向链表. 我们可以通过push,pop操作从链表的头部或者尾部添加删除元素,这样list即可以作为 栈,又可以作为队列. lpus ...

poj1014二进制优化多重背包

Dividing Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53029   Accepted: 13506 Descri ...

jmeter(十二)关联之正则表达式提取器

如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作(也就是常说的关联/将上一个请求的响应结果作为下一个请求的参数): 在jmeter中,可以利用正 ...

怎么找到与你Eclipse匹配的spring tool suite插件

在Eclipse中安装插件是很简单的,但是某些插件需要与你的Eclipse的版本对应才能用,比如spring的插件. 首先,查看你的Eclipse的版本. 从eclipse的Help菜单的About ...

xamarin.Android SQLite存储

在可移植类库 新建: using SQLite.Net.Interop; using System; using System.Collections.Generic; using System.Li ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值