`
lengyue
  • 浏览: 144502 次
  • 性别: 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 表空间 收缩

    ### Oracle 表空间收缩详解 #### 一、背景与需求 在Oracle数据库管理过程中,合理地管理和优化存储空间是非常重要的工作之一。有时,我们会遇到这样的情况:某个表空间占用的实际物理空间远大于其实际需要的空间,...

    Oracle表删除大量数据(千万)后查询变慢问题(原因分析)

    Oracle 表删除大量数据后查询变慢问题分析 在 Oracle 数据库中,如果删除了大量数据(千万级别),可能会出现查询变慢的问题。下面我们将分析这个问题的原因,并提供解决方案。 问题的原因主要有两个方面: 1. 表...

    oracle表空间变动注意事项

    在Oracle数据库管理与维护过程中,表空间(tablespace)的操作是一项非常重要的工作。表空间是Oracle数据库中的逻辑存储单元,用于组织和管理数据文件。本文将详细介绍关于Oracle表空间变动时需要注意的关键点,特别...

    Oracle多个表空间合并成一个表空间,验证通过

    ### Oracle 多个表空间合并成一个表空间详解 #### 背景介绍 在进行数据库维护时,可能会遇到需要将多个表空间合并为一个的情况。这种情况通常发生在新项目的开发过程中,尤其是当新项目需要引用来自其他表空间的...

    oracle查询表空间状态及迁移表.zip_oracle_oracle查询表空间状态_oracle迁移表_状态空间

    在Oracle数据库管理中,了解表空间(Tablespace)的状态至关重要,因为它们是存储数据库对象(如表、索引和视图)的主要容器。本篇将深入探讨如何查询Oracle数据库的表空间状态以及如何迁移表到其他表空间。首先,...

    oracle-临时表空间

    ### Oracle 临时表空间详解 #### 一、Oracle表空间概览 在Oracle数据库系统中,数据被组织成多个逻辑单元,这些单元被称为表空间。每个表空间由一个或多个物理磁盘文件(称为数据文件)组成,并且是数据库中的最高...

    oracle修改表空间的全部步骤,包含bob,clob字段

    在Oracle数据库管理中,修改表空间是一项常见的维护任务,尤其当需要优化存储、解决空间不足或进行数据迁移时。本文将详细阐述如何在Oracle中修改表空间,包括处理BLOB和CLOB字段的具体步骤。 ### 修改表空间的背景...

    oracle分区表分区索引.docx

    Oracle 分区表分区索引详解 Oracle 分区表分区索引是 Oracle 数据库中的一种重要机制,它可以提高数据的存储和查询效率。下面将详细介绍 Oracle 分区表分区索引的类型、分类、创建方法和维护方式。 一、分区表和...

    oracle删除哪些内容可以减少USERS01.DBF数据文件的大小

    在Oracle数据库系统中,`USERS01.DBF` 是一个数据文件,通常与表空间关联,用于存储用户的表、索引和其他对象的数据。当这个数据文件占用的空间过大时,可能需要通过各种方法来减少其大小,以优化存储资源。以下是...

    Oracle更改表空间(table、index、lob)

    ### Oracle更改表空间(table、index、lob) 在Oracle数据库管理中,更改表空间是一项重要的维护任务,尤其是在需要重新组织数据或优化存储时。本文将详细介绍如何通过SQL命令来更改表空间中的表(table)、索引...

    ORACLE19c数据库性能优化说明.docx

    从Oracle 10g开始,RBO(基于规则的优化器)已被淘汰,现在主要使用CBO(基于成本的优化器),它会根据表的物理大小、索引状态等信息来估算成本,选择最低成本的执行计划。 索引是提升查询性能的关键手段。B-tree...

    从一个表空间 另一个表空间

    根据提供的标题、描述、标签及部分内容,我们可以总结出与Oracle表空间管理相关的多个知识点,具体如下: ### 一、理解Oracle表空间的概念 在Oracle数据库中,表空间是由一个或多个数据文件组成的逻辑存储单元。它...

    SAP_very_useful_Oracle_SQL_cmd.zip_SAP_SAP rebuild index_Table

    本压缩包“SAP_very_useful_Oracle_SQL_cmd.zip_SAP_SAP rebuild index_Table”提供了与SAP系统相关的一系列Oracle数据库操作的实用工具,主要涉及表的管理和索引重建。 首先,解锁阴影实例(unlock shadow ...

    oracle 052题库解析

    4. Oracle数据库的Undo管理:Oracle数据库使用Undo表空间来存储事务回滚所需的信息。当事务撤销或回滚时,这些信息用于恢复数据库到事务开始前的状态。长时间运行的查询可能导致Undo段被频繁写入,从而覆盖先前的...

    ORACLE重建索引总结

    3. `REBUILD ONLINE`会创建临时日志表记录索引变更,完成后再删除旧索引。 五、重建分区表上的分区索引 使用`ALTER INDEX indexname REBUILD PARTITION partitionname TABLESPACE tablespacename`或`ALTER INDEX ...

    如何重建索引

    - `REBUILD ONLINE`则执行表扫描获取数据,同样涉及到排序操作。 #### 四、ALTER INDEX REBUILD的内部过程及注意事项 **ALTER INDEX REBUILD与ALTER INDEX REBUILD ONLINE的主要区别在于扫描方式的不同:** 1. *...

    Oracle重构索引

    Oracle提供了多种方法来帮助我们重构索引,包括`DROP AND RECREATE`、`REBUILD`以及`REBUILD ONLINE`等方式。本文将详细介绍这些不同的索引重构方法,并通过实例展示它们的特点和适用场景。 #### 二、索引重构的...

    Oracle高级详细资料

    通过使用DBMS_REDEFINITION、ALTER TABLE MOVE或ALTER INDEX REBUILD等方式,可以有效地整理和合并碎片,提高数据库的存储效率和查询速度。 再者,回滚段(ROLLBACK SEGMENTS)管理是Oracle事务处理的关键部分。...

Global site tag (gtag.js) - Google Analytics