`
lengyue
  • 浏览: 141657 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

oracle表的rebuild

阅读更多
今天是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的优缺点。采取的策略根据实际需求的不同而不同,关键是得知道我们有哪几种方案,每种方案的优缺点。
1
2
分享到:
评论

相关推荐

    从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员)

    记住Oracle Applications会有很多索引,定期rebuild index会对性能有好处,当然做这项工作应该在系统的空闲时间。 4.不要为了提高性能而在没有询问oracle Support前试着去增加额外的indexes。如果你一定要去做,那...

    一个释放临时表空间实例

    Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会...

    ORACLE重建索引总结

    3 、rebuild online 时系统会产生一个 SYS_JOURNAL_xxx 的 IOT 类型的系统临时日志表 , 所有 rebuild online 时索引的变化都记录在这个表中 , 当新的索引创建完成后 , 把这个表的记录维护到新的索引中去 , 然后 ...

    Oracle表碎片整理操作步骤详解

    高水位线(HWL)下的许多数据块都是无数据的,但全表扫描的时候要扫描到高水位线的数据块,也就是说oracle要做许多的无用功!因此oracle提供了shrink space碎片整理功能。对于索引,可以采取rebuild online的方式...

    Oracle中如何把表和索引放在不同的表空间里

    下面语句用于移动索引的表空间: 代码如下:alter index INDEX_OWNER.INDEX_NAME rebuild tablespace NEW_TBS;也可以利用以下语句获得某个schema下移动索引表空间的所有语句: 代码如下:select ‘alter index ‘||...

    最全的oracle常用命令大全.txt

    查看放在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 For Oracle使用手册

    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 ...

    SAP_very_useful_Oracle_SQL_cmd.zip_SAP_SAP rebuild index_Table

    Useful SQL commands or scripts to alter Oracle table used for SAP

    如何重建索引

    如何重建索引如何重建索引如何重建索引如何重建索引如何重建索引

    Oracle 数据库 9i/10g/11g 扫描,优化提示,安全提示

    10,某个用户的索引 优化 rebuilding:比如对scott用户进行该用户下所有indexes的rebuilding,,7天前没有分析的表都要rebuild。 11,Oracle隐含初始化参数及含义。 12,Oracle常用的事件及参数。 13, 常用操作...

    Oracle事例

    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) ...

    ORACLE 中 SQL语句优化总结

    利用ALTER INDEX语句中的REBUILD选项,可以使用已有索引而不是表来快速重建索引。在执行这个操作时必须要有足够的空间来保存所有的索引。

    orcale常用命令

    查看放在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 ...

    oracle DBA日常脚本

    .............\Rebuild_Index.sql .............\soap_api.sql .............\switch_schema.sql .............\table_defs.sql .............\Table_Differences.sql .............\trc.pkb .............\...

    Toad 使用快速入门

    可以修改表的各种逻辑和物理属性,修改列的属性,增加列,删除列(在Oracle8i里面),修改表的物理存储属性,Truncate,Drop等。 iii. 可以生成建表的完整的DDl语句,包括存储信息,权限信息,约束,索引和触发器等,...

    修改Innodb的数据页大小以优化MySQL的方法

     实际上innodb的数据页大小也是可以更改的,只是需要在源码层去更改,然后重新rebuild一下MySQL.  更改办法:  (以MySQL-5.1.38源码为例)  位置在storage/innobase/include/univ.i ,在univ.

    Devart LinqConnect 3.1

    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,...

    网管教程 从入门到精通软件篇.txt

     注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。  bootcfg /scan 扫描用于 Windows 安装的所有磁盘并显示结果。  注意:这些结果被静态存储,并用于本次会话。如果在...

    javacv-platform-1.3.3-src

    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 ...

Global site tag (gtag.js) - Google Analytics