利用在线重定义降低表的高水位线
来源:互联网 发布:单片机音乐播放器 编辑:程序博客网 时间:2024/04/30 00:57
近日对某个线上库的表进行归档,原来有将近2千万条记录,归档后只剩不到400万,但是由于应用程序要对该表进行全表扫描,sql执行代价并没有降低。
决定使用在线重定义来降低其高水位线。
第一步:
建立中间表
-- Create table
create table justin_temp
(
ID NUMBER(18) not null,
SEND_TO VARCHAR2(100),
SUBJECT VARCHAR2(200),
CONTENT VARCHAR2(4000),
IS_SEND NUMBER(1) default 0 not null,
FAILED_AMOUNT NUMBER(5) default 0 not null,
)
alter table justin_temp
add constraint PK_JUSTIN_ID primary key (ID)
using index;
第二步
执行在线重定义
SQL> begin
2 dbms_redefinition.can_redef_table(uname => user,tname => 'justin');
3 end;
4 /
PL/SQL procedure successfully completed
SQL> begin
2 dbms_redefinition.start_redef_table(uname => user,orig_table => 'justin',int_table => 'justin_TEMP');
3 end;
4 /
PL/SQL procedure successfully completed
SQL> begin
2 dbms_redefinition.finish_redef_table(uname => user,orig_table => 'justin',int_table => 'justin_TEMP');
3 end;
4 /
PL/SQL procedure successfully completed
重定义之前表的统计信息
SQL> select num_rows,blocks from dba_tables where table_name='justin';
NUM_ROWS BLOCKS
---------- ----------
3590554 570348
SQL> select header_file,header_block,bytes,blocks from dba_segments where segment_name='justin';
HEADER_FILE HEADER_BLOCK BYTES BLOCKS
----------- ------------ ---------- ----------
15 107 4680843264 571392
重定义之后
SQL> select num_rows,blocks from dba_tables where table_name='justin';
NUM_ROWS BLOCKS
---------- ----------
3590554 135412
SQL> select header_file,header_block,bytes,blocks from dba_segments where segment_name='justin';
HEADER_FILE HEADER_BLOCK BYTES BLOCKS
----------- ------------ ---------- ----------
15 777323 1140850688 139264
由此大致可以估算出,此后每次全表扫描代价应该会是原来的1/4左右
- 利用在线重定义降低表的高水位线
- 使用shrink space降低表的高水位线
- 如何降低Oracle表的高水位?
- 关于使用MOVE的方法降低表的高水位
- Oracle之降低高水位线
- 降低高水位方法
- 降低高水位 oracle
- SHRINK SEGMENT降低高水位
- MOVE降低高水位 HWM
- 高可用之在线重定义表
- Delete/Truncate删除,释放表空间、降低高水位线、resize释放磁盘空间相关优化
- DB2 v8.2 降低高水位线经验
- DB2 降低高水位线、刷新统计、索引信息
- 修正ORACLE表的高水位线
- Oracle清除表的高水位线
- 表的在线重定义
- Oracle表段中的高水位线HWM+修正ORACLE表的高水位线
- ORACLE的高水位线
- word设置不同页脚
- IT小子的随想
- [转]基于Linux的v4l2视频架构驱动编写
- 在Window 7 64位操作系统上安装Oracle 10g 及 配置PLSQL Developer 8.0.4图解
- C# DataGridView控件 动态添加新行
- 利用在线重定义降低表的高水位线
- phpmyadmin登录失败问题解决
- windows上安装ruby on rails
- UITableView详解
- 13.5.2 用 Excel 的图表显示数据
- C# 自定义鼠标样式(使用图片)
- Javascript 获取链接(url)参数的方法
- uva 10954 Huffman
- android中如何在代码中直接设置View的layout_weight属性