--检查索引碎片情况,只能对单个表进行分析。
--需要注意块的大小、索引的pctfree的值的大小、rowid的长度的不同,根据不同的情况修改相应的值


select index_name, c.NMB "应有大小", d.SMB "现大小"
from (select index_name,
round((select num_rows numrows
from dba_tables
where table_name = upper('tableName')
AND owner = upper('ownerName')) /
((8192 - 819.2 - 4 - 20 - 72 - 32) /
((sum(AVG_COL_LEN)) + 2 + 18)) * 8192 / 1024 / 1024) NMB
from (SELECT b.index_name index_name,
a.column_name,
a.AVG_COL_LEN AVG_COL_LEN
FROM dba_tab_columns a,
(select b.index_name, b.column_name, b.index_owner
from dba_ind_columns b
where b.table_name = upper('tableName')
and B.INDEX_OWNER = upper('ownerName')
order by b.index_name) b
WHERE a.TABLE_NAME = upper('tableName')
AND A.OWNER = upper('ownerName')
and a.column_name = b.column_name
order by b.index_name)
group by index_name) c,
(SELECT segment_name, round(sum(bytes) / 1024 / 1024) SMB
FROM dba_segments
WHERE OWNER = upper('ownerName')
group by segment_name) d
where c.index_name = d.segment_name;

索引碎片比较严重的话,重建索引:

--ALTER INDEX indexName rebuild online nologging;

DECLARE
CURSOR myCur IS
select INDEX_NAME from user_indexes WHERE TABLE_NAME=upper('tableName') AND INDEX_TYPE='NORMAL';
v_cname myCur% rowtype;
vsSql varchar2(256);
begin
open myCur;
loop
fetch myCur into v_cname;
exit when myCur% notfound;
vsSql:='ALTER INDEX ' || v_cname.INDEX_NAME || ' rebuild online nologging';
EXECUTE IMMEDIATE vsSql;
end loop;
close myCur;
end;

查看指定数据表的空间分配及实际使用情况:

select ta.Used_Blocks, tt.*
from (
SELECT COUNT(DISTINCT DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid) || DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) as Used_Blocks
FROM tableName
) ta
cross join (
select t.*
from user_segments t
where t.segment_type = 'TABLE'
and t.segment_name = upper('tableName')
order by t.blocks desc
) tt;

大量删除数据后的高水位线,造成表扫描性能问题,释放数据空间

--删除数据后,释放数据空间
alter table tableName enable row movement;
alter table tableName shrink space cascade;
alter table tableName disable row movement;

http://www.cnblogs.com/linjiqin/archive/2012/01/15/2323030.html

http://blog.csdn.net/wyzxg/article/details/5631721

附,更新统计信息、清空缓存

--analyze table 更新统计信息:
analyze table my_table compute statistics;
--OR
EXEC DBMS_STATS.gather_table_stats(ownname => 'socct', tabname =>'tableName', estimate_percent =>100, cascade =>true, method_opt => 'for all columns size auto'); --清空缓存(共享池和数据缓存),Command window执行:
alter system flush shared_pool;
alter system flush buffer_cache;

Oracle查询索引碎片及数据表空间使用情况的更多相关文章

  1. oracle表空间查询维护命令大全之中的一个(数据表空间)史上最全

          表空间是数据库的逻辑划分,一个表空间仅仅能属于一个数据库. 全部的数据库对象都存放在建立指定的表空间中.但主要存放的是表, 所以称作表空间.在oracle 数据库中至少存在一个表空间.即S ...

  2. [转帖]Oracle 查询各表空间使用情况--完善篇

    Oracle 查询各表空间使用情况--完善篇 链接:http://blog.itpub.net/28602568/viewspace-1770577/ 标题: Oracle 查询各表空间使用情况--完 ...

  3. Oracle转移数据表空间存储位置

    问题描述:Oracle表空间创建到了C盘,发现C盘的空间不够,现在将表空间的文件转移到D盘下. 操作方法: 1. 先登录sqlplus,登录用户.在cmd中输入:sqlplus /nologSQL&g ...

  4. Oracle解决索引碎片功能

    我们开始时向一个空的带索引的表中插入大量数据后,是不会产生碎片问题的,但是,数据库经过很长一段时间的增删改查后,难免会出现碎片问题,影响数据库的性能,Oracle对于这一问题有自己的解决方案. 下面介 ...

  5. [独孤九剑]Oracle知识点梳理(一)表空间、用户

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  6. 分享知识-快乐自己:Oracle基本语法(创建:表空间、用户、授权、约束等)使用指南

    Oracle12c 与 Oracle11g 创建用户时有差别.Oracle12C默认为 CDB模式 这时创建用户的时候需要加上 c## 开头:例如:c##MLQ. --说明--需求:创建表空间(MLQ ...

  7. Oracle 释放过度使用的Undo表空间

    故障现象:UNDO表空间越来越大,长此下去最终数据因为磁盘空间不足而崩溃: 问题分析:产生问题的原因主要以下两点: 1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况: ...

  8. PL/SQL创建数据表空间

    创建数据表空间create tablespace stbss datafile 'E:\oracle\product\10.2.0\oradata\orcl\stbss_temp01.dbf' siz ...

  9. Oracle创建,删除用户与表空间

    1.创建表空间与用户 a:创建数据表空间 create tablespace user_data logging datafile 'D:\oracle\product\10.2.0\oradata\ ...

随机推荐

  1. git diff patch

    如何生成patch:修改一个地方,然后git diff > xxx.patch 就会生成一个patch文件,这里的关键似乎是, 源文件的某个模块的版本要和线上发布的最新版本要一致,这样patch ...

  2. Teleport Ultra/Teleport Pro的冗余代码批量清理方法

    Teleport Pro 是款优秀的网站离线浏览工具(即网站整站下载工具),Teleport Ultra是其增强版,但使用此系列软件下载的离线网页里会包含大量冗余代码(如tppabs),手动去修改工作 ...

  3. 0050 Linux VIM 命令

    1.  模式切换 vim的模式 $ vi filename 进入normal 模式,这是命令模式,用于执行大多数常用的编辑命令,不能输入 敲i 进入 insert 模式,这是正常的编辑模式,按Esc ...

  4. Java第一个程序

    public class HelloWorld{ public static void main(String[] args){ System.out.println("七期项目二部&quo ...

  5. winform app.config文件的动态配置

    获取 获取应用程序exe.config文件中  节点value值 /// <summary> /// 功能: 读取应用程序exe.config文件中 /// appSettings节点下 ...

  6. 个人对beta发布的观点

    内容:五个小组的beta发布 时间:2016年11月10日 13:40-15:15 地点:传媒西楼202 发布顺序: 1.飞天小女警(选礼物) 2.金州勇士(在线考试) 3.新蜂(俄罗斯方块) 4.天 ...

  7. 转Global.asax文件

    Global.asax 文件是什么   Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序 ...

  8. 并发编程 17—— Lock

    Java并发编程实践 目录 并发编程 01—— ThreadLocal 并发编程 02—— ConcurrentHashMap 并发编程 03—— 阻塞队列和生产者-消费者模式 并发编程 04—— 闭 ...

  9. ShopNc基本介绍

    ShopNc学习笔记: 1.shopNc每个文件夹定义了单入口文件eg:shopnc/admin/index.php, shopnc/cms/index.php 2.MVC M: $model = M ...

  10. Windows Store App 近期访问列表

    Windows 8系统在管理用户的文件时,会将用户近期访问的文件添加到对应应用的近期访问列表中,所有的Windows应用商店应用都有各自的近期访问列表,根据文件的上一次访问时间,可以在列表中对文件进行 ...