`

oracle 删除大量数据后整理表(analyze table xxx compute statistics)

 
阅读更多
1. DELETE 后 TRUNCATE TABLE ;

然后重新分析一下
analyze table tablename compute statistics


查看表信息

select NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN from user_tables where table_name=table_name;


2.Oracle 表删除大量数据后,即使表中只有几行记录,但用select count(*) from table 来查询发觉都不会马上出来,
原因是该表的空间大了,查询起来很慢。
解决的方法是把该表所占用的表空间缩小,或者说释放表空间。
alter table XXXX move; 这样处理后就释放了表空间了。
但是释放表空间后,表的行号rowid会发生变化,而基于rowid的索引则会变成无效。因此该操作后必须重建索引。
否则会 提示“ORA-01502: 索引'SMP.ITEMLOG_MID_IDX'或这类索引的分区处于不可用状态”
而重建索引的方法当然可以先drop掉再create ,但是这样太麻烦了,
用alter index XXX rebuild 这样最快了,不会改变原来的索引结构。


Oracle分析表简介
Oracle分析表是Oracle数据库管理的重要部分,下面就为您详细介绍Oracle分析表方面的知识,希望对您学习Oracle分析表方面能有所帮助。
  1、分析SQL
   
analyze table tablename compute statistics

    等同于 analyze table tablename compute statistics for table for all indexes for all columns
    for table的统计信息存在于视图:user_tables 、all_tables、dba_tables
    for all indexes的统计信息存在于视图: user_indexes 、all_indexes、dba_indexes
    for all columns的统计信息存在于试图:user_tab_columns、all_tab_columns、dba_tab_columns
    删除分析SQL:
   
analyze table tablename delete statistics 
会删除所有的statistics
    2、Oracle分析表的作用:为了使基于CBO的执行计划更加准确
    DBA_tables的数据有变化,可做对比。详见官方文档:
    Use the ANALYZE statement to collect non-optimizer statistics, for example, to:
    Collect or delete statistics about an index or index partition, table or table partition, index-organized
    table, cluster, or scalar object attribute.
    Validate the structure of an index or index partition, table or table partition, index-organized table,
    cluster, or object reference (REF)。
    Identify migrated and chained rows of a table or cluster.
    dbms_stats的作用主要是替代analyze的收集统计信息这一块的功能,且在这一方面做了相当大程度上的增强。
    以analyze table table_name compute statistics;这条为例,生成的统计信息会存在于user_tables这个视图,查看一下
   
select NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN from user_tables where table_name=table_name;


观察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列你就会明白,这就是变化。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

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

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

    Analyze_Oracle_Table.rar_Table_analyze orac_analyze orac_oracle

    ANALYZE TABLE table_name COMPUTE STATISTICS; ``` 这将计算表的所有基本统计信息,包括行数、块数等。 在"Analyze_Oracle_Table.doc"文档中,可能详细介绍了如何执行这些分析操作,包括何时应该分析,如何使用...

    自动生成oracle数据库表分析语句

    - `COMPUTE STATISTICS`:这个子句告诉Oracle系统需要更新表的统计信息。 - `;`:SQL语句结束符。 #### 索引分析语句 除了表本身之外,索引也是数据库性能的关键因素之一。因此,定期对索引进行分析也是非常必要的...

    Oracle数据块原理分析

    - **ANALYZE TABLE COMPUTE STATISTICS**:用于计算表统计信息,帮助数据库优化器做出更好的决策。 - **ALTER TABLE ... SHRINK SPACE**:用于回收未使用的空间,减少数据块中的碎片,提高空间利用率。 综上所述,...

    Oracle必杀技物理删除数据文件恢复

    在Oracle数据库管理中,数据文件(Data Files)是存储数据库对象如表、索引等的基础组件。当数据文件遭遇物理删除或丢失时,这将对数据库的正常运行造成严重影响。本篇文章将深入探讨Oracle数据库中物理删除数据文件...

    Oracle常用的SQL语句维护

    ANALYZE TABLE 表名 COMPUTE STATISTICS; ``` 事务控制也是SQL运维中的关键,包括COMMIT(提交)、ROLLBACK(回滚)和SAVEPOINT(保存点): ```sql COMMIT; -- 提交事务 ROLLBACK; -- 回滚事务 SAVEPOINT 保存...

    Oracle Statistic 统计信息

    ANALYZE TABLE table_name COMPUTE STATISTICS FOR ALL INDEXES; ANALYZE TABLE table_name DELETE STATISTICS; ``` 这些命令用于手动收集或删除特定表的统计信息。 2. **使用DBMS_STATS包:** Oracle建议使用`...

    oracle表空间变动注意事项

    ANALYZE TABLE table_name COMPUTE STATISTICS; ``` 2. **调整分区策略**:对于分区表,合理调整分区策略有助于提升查询效率。 3. **使用压缩技术**:启用行级或表级压缩,减少数据占用空间,提高I/O效率。 ###...

    oracle高水位线

    * 首先对表进行分析:ANALYZE TABLE <tablename> ESTIMATE/COMPUTE STATISTICS; * 查看相关信息:SELECT blocks, empty_blocks, num_rows FROM user_tables WHERE table_name = ; 其中,BLOCKS 列代表该表中曾经...

    oracle系统表查询

    - **分析表统计数据**:`ANALYZE my_table COMPUTE STATISTICS;` 该命令用于收集并更新表的统计信息,这对优化查询计划非常有帮助。 - **查询表使用的extent信息**:`SELECT extent_id, bytes FROM dba_extents ...

    oracle dba日常管理

    9. 分析表:`ANALYZE TABLE table_name COMPUTE STATISTICS;` 以上只是Oracle DBA日常工作中的一部分,实际工作还会涉及更多复杂的任务,如数据库设计、性能调优、高可用性架构等。通过熟练掌握Oracle相关知识和SQL...

    oracle 分析策略

    在分析表的列时,可以针对特定列进行分析,如示例中的`analyze table test compute statistics for columns size 2 nick;`,这将更新`nick`列的统计信息。当表整体分析后,查询优化器能更好地理解列的特性,从而制定...

    oracle系统表大全整理优质资料.doc

    - 分析表统计信息:`ANALYZE my_table COMPUTE STATISTICS;` - 查询特定表的extent信息:`SELECT extent_id, bytes FROM dba_extents WHERE segment_name='CUSTOMERS' AND segment_type='TABLE' ORDER BY extent_...

    oracle公司内部培训手册

    - **Analyze Table**:这是一种传统的表分析方式,可以通过命令 `analyze table tablename compute statistics` 来收集表级、索引级和列级的统计信息。这些统计信息会被存储在特定的视图中,方便后续查询和维护。 -...

    oracle 系统表大全

    - `ANALYZE my_table COMPUTE STATISTICS;`:计算并更新表`my_table`的统计信息。 - **表的extent信息**: - `SELECT extent_id, bytes FROM dba_extents WHERE segment_name = 'CUSTOMERS' AND segment_type = '...

    oracle命令大全及关于oracle 1000问 日志管理,表空间管理,表,索引等等等等

    在Oracle中,我们使用`CREATE TABLE`来创建新表,`ALTER TABLE`用于修改已有表的结构,如添加、删除或修改列,`DROP TABLE`用于删除表。另外,`TRUNCATE TABLE`可以快速清空表,但不记录删除操作,而`DELETE`则会...

    Oracle性能监控SQL语句

    - `ANALYZE TABLE table_name COMPUTE STATISTICS FOR TABLE;`:只对表本身进行分析,而不包括索引。 **应用场景:** - 在进行定期维护时,或者当表的数据发生重大变化时(如大规模插入或删除操作),应运行这些...

Global site tag (gtag.js) - Google Analytics