本文主要介绍“Oracle表数据库的高水位分析和收缩操作”。在日常操作中,我相信很多人对分析Oracle表数据库的高水位和收缩操作有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮你解答“Oracle表数据库的高水位分析和收缩操作”的疑惑!接下来,请和边肖一起学习!
细分市场收缩分为两个阶段:
1.compact):通过一系列插入和删除操作,尽可能将数据排列在段的前面。
在这个过程中,需要向表中添加RX锁,即只锁定需要移动的行。由于rowid的更改,需要启用行移动。
同时,应该禁用基于rowid的触发器。这个过程对业务影响不大。
2.HWM调整:第二阶段是调整HWM的位置,释放空闲的数据块。这个过程需要对表进行X锁,这将阻塞表上的所有DML语句。
在一个特别繁忙的行业中
该系统可能会产生相对较大的影响。收缩空间语句在两个阶段都执行。收缩空间压缩只执行第一阶段。
如果系统业务繁忙,可以先使用收缩空间紧凑来重新组织数据,然后在业务不繁忙时使用收缩空间来减少HWM来释放空闲数据块。
收缩必须打开线迁移功能。
alter table table_name启用行移动;
注意:alter table XXX语句启用行移动将使对象(如存储过程、包、视图等。)表示引用表XXX无效。执行后,最好运行utlrp.sql来编译无效对象。
语法:
alter table table_name收缩空间[null | compact | cascade];
alter table table_name收缩空间compcat
收缩表相当于强化块内数据,但会保持高水位线;
alter table table _ name收缩空间;
缩小桌子,降低高水位线;
alter table table _ name收缩空间级联;
缩小表格,降低高水位线,缩小相关指标。
alter index idxname收缩空间;收回索引
1.普通的表Sql脚本,改变脚本会生成相应的语句。
选择“alter table”| | table _ name | |”启用行移动;| | chr(10)| |“alter table”| | table _ name | |“收缩空间;来自user_tables的| | chr(10);
选择“alter index”| | index _ name | |”收缩空间;来自user_indexes的| | chr(10);
2.ORA-10631在收缩空间中处理分区表时出错。收缩空间有一些限制。在表上构建函数索引(包括全文索引)将会失败。
Sql脚本,改变脚本会生成相应的语句。
选择“更改表”||table_name||“启用行移动”| | chr(10)| |“alter table”| | table _ name | |“收缩空间;”||chr(10)来自user_tables,其中;
选择“alter index ”| | index _ name | |“收缩空间”||chr(10)来自user_indexes,其中唯一性=' NONUNIQUE
选择“更改表”||段_名称||“修改子分区”| |分区_名称| |“收缩空间;”||chr(10)来自user_segments,其中segment _ type=“TABLE SUBPARTITION”;
此外,经常操作的表可以缓存在内存中。oracle的db_buffer_pool由三部分组成:
buffer _ pool _ defualt
缓冲池保留
缓冲池回收
如果你想在内存中钉桌子,那就在保留区钉桌子。
相关命令有:
更改表格….存储(buffer _ pool keep);
该命令指示如果表被缓存,则该表被缓存在保留区域中。
您可以使用以下语句:
从dba_tables中选择table_name,其中buffer _ pool=' KEEP
更改表的查询放在保留区域。但这并不意味着表已经被缓存。
以下语句缓存该表:
更改表格…缓存;
可以通过
从dba_ tables中选择table_name,其中rtrim(缓存)='Y '
查询表已被缓存。
添加到保留区域的表并不意味着它不能从内存中移除,但它不容易从内存中移除。
您也可以手动移除内存。命令如下:
改变桌子…不疼;
至此,“Oracle表数据库高水位和收缩操作分析”的研究结束,希望能解决大家的疑惑。理论和实践的结合可以更好的帮助大家学习,所以赶紧试试吧!如果你想继续学习更多的相关知识,请继续关注网站,边肖会继续努力,给大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/71161.html