今天是5.1,发现数据库变慢,查看数据采集的日志,发现是计算GSM和GPRS指标合并表时的一个存储过程在执行时花费大约10分钟,以前碰到过这种事情,当时花了好长时间。最后将表rebuild速度恢复正常,本次也尝试将相关操作的表进行rebuild,效率恢复正常,oracle表大量存在insert和delete操作,会产生大量的碎片,要清理掉表的碎片,可以将表的数据备份出去,然后新建表,再将数据导入。当然这样做的话如果存在约束的话,会存在问题。oracle的rebuild充分考虑到这些。我们可以通过toad生成rebuild语句。然后执行。最后又在网上查询了一些资料。发现如下有用的知识点。
select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_name
having count(tablespace_name)>10;
alter tablespace name coalesce;
alter table name deallocate unused;
create or replace view ts_blocks_v as
select tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_space
union all
select tablespace_name,block_id,bytes,blocks,segment_name from dba_extents;
select * from ts_blocks_v;
select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_space
group by tablespace_name;
查看碎片程度高的表
SELECT segment_name table_name , COUNT(*) extents
FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name
HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);
如果必须要重建表,alter table ...move tablespace...绝对是第一选择,理由如下:
1 对于大表move时,对此表的查询不受影响,只有在move操作完成的瞬间受影响。DML操作受影响。
2 index结构不受影响,只需move完成后rebuild。
3 与其它对象依赖关系不受影响,操作前不必为对象间的依赖关系操心。
4 move操作可以parallel。
5 NOLOGGING选项对move操作有作用,可大大加快重建速度。如果要move的表是nologging的,则不需指定。
基于以上理由,move是rebuild table的最佳选择,应该优先考虑,大家可以对照以上优点考虑一下用exp/imp的优缺点。采取的策略根据实际需求的不同而不同,关键是得知道我们有哪几种方案,每种方案的优缺点。
分享到:
相关推荐
记住Oracle Applications会有很多索引,定期rebuild index会对性能有好处,当然做这项工作应该在系统的空闲时间。 4.不要为了提高性能而在没有询问oracle Support前试着去增加额外的indexes。如果你一定要去做,那...
Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会...
3 、rebuild online 时系统会产生一个 SYS_JOURNAL_xxx 的 IOT 类型的系统临时日志表 , 所有 rebuild online 时索引的变化都记录在这个表中 , 当新的索引创建完成后 , 把这个表的记录维护到新的索引中去 , 然后 ...
高水位线(HWL)下的许多数据块都是无数据的,但全表扫描的时候要扫描到高水位线的数据块,也就是说oracle要做许多的无用功!因此oracle提供了shrink space碎片整理功能。对于索引,可以采取rebuild online的方式...
下面语句用于移动索引的表空间: 代码如下:alter index INDEX_OWNER.INDEX_NAME rebuild tablespace NEW_TBS;也可以利用以下语句获得某个schema下移动索引表空间的所有语句: 代码如下:select ‘alter index ‘||...
查看放在ORACLE的内存区里的表 SQL>select table_name,cache from user_tables where instr(cache,'Y')>0; 3、索引 查看索引个数和类别 SQL>select index_name,index_type,table_name from user_indexes ...
Toad and Oracle Enterprise Manager 29 Quick Search Bar 30 Additional Resources 31 Working with other Quest Products 32 Knowledge Xpert 32 Using SQL Optimizer with Toad 32 Benchmark Factory 33 Quest ...
Useful SQL commands or scripts to alter Oracle table used for SAP
如何重建索引如何重建索引如何重建索引如何重建索引如何重建索引
10,某个用户的索引 优化 rebuilding:比如对scott用户进行该用户下所有indexes的rebuilding,,7天前没有分析的表都要rebuild。 11,Oracle隐含初始化参数及含义。 12,Oracle常用的事件及参数。 13, 常用操作...
27、查看放在ORACLE的内存区里的表 SQL>select table_name,cache from user_tables where instr(cache,\'Y\')>0; 28、约束条件 create table employee (empno number(10) primary key, name varchar2(40) ...
利用ALTER INDEX语句中的REBUILD选项,可以使用已有索引而不是表来快速重建索引。在执行这个操作时必须要有足够的空间来保存所有的索引。
查看放在ORACLE的内存区里的表 SQL>select table_name,cache from user_tables where instr(cache,'Y')>0; 3、索引 查看索引个数和类别 SQL>select index_name,index_type,table_name from user_indexes ...
.............\Rebuild_Index.sql .............\soap_api.sql .............\switch_schema.sql .............\table_defs.sql .............\Table_Differences.sql .............\trc.pkb .............\...
可以修改表的各种逻辑和物理属性,修改列的属性,增加列,删除列(在Oracle8i里面),修改表的物理存储属性,Truncate,Drop等。 iii. 可以生成建表的完整的DDl语句,包括存储信息,权限信息,约束,索引和触发器等,...
实际上innodb的数据页大小也是可以更改的,只是需要在源码层去更改,然后重新rebuild一下MySQL. 更改办法: (以MySQL-5.1.38源码为例) 位置在storage/innobase/include/univ.i ,在univ.
The "Recreate Model" option, allowing to rebuild the model from a scratch, is added to the "Update Model From Database" wizard The "GeneratePartialClass" template property to generate a partial class,...
注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 扫描用于 Windows 安装的所有磁盘并显示结果。 注意:这些结果被静态存储,并用于本次会话。如果在...
Sun JDK http://www.oracle.com/technetwork/java/javase/downloads/ or IBM JDK http://www.ibm.com/developerworks/java/jdk/ Further, although not always required, some functionality of JavaCV also relies ...