Oracle查询索引碎片及数据表空间使用情况
--检查索引碎片情况,只能对单个表进行分析。
--需要注意块的大小、索引的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
附,更新统计信息、清空缓存
--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查询索引碎片及数据表空间使用情况的更多相关文章
- oracle表空间查询维护命令大全之中的一个(数据表空间)史上最全
表空间是数据库的逻辑划分,一个表空间仅仅能属于一个数据库. 全部的数据库对象都存放在建立指定的表空间中.但主要存放的是表, 所以称作表空间.在oracle 数据库中至少存在一个表空间.即S ...
- [转帖]Oracle 查询各表空间使用情况--完善篇
Oracle 查询各表空间使用情况--完善篇 链接:http://blog.itpub.net/28602568/viewspace-1770577/ 标题: Oracle 查询各表空间使用情况--完 ...
- Oracle转移数据表空间存储位置
问题描述:Oracle表空间创建到了C盘,发现C盘的空间不够,现在将表空间的文件转移到D盘下. 操作方法: 1. 先登录sqlplus,登录用户.在cmd中输入:sqlplus /nologSQL&g ...
- Oracle解决索引碎片功能
我们开始时向一个空的带索引的表中插入大量数据后,是不会产生碎片问题的,但是,数据库经过很长一段时间的增删改查后,难免会出现碎片问题,影响数据库的性能,Oracle对于这一问题有自己的解决方案. 下面介 ...
- [独孤九剑]Oracle知识点梳理(一)表空间、用户
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- 分享知识-快乐自己:Oracle基本语法(创建:表空间、用户、授权、约束等)使用指南
Oracle12c 与 Oracle11g 创建用户时有差别.Oracle12C默认为 CDB模式 这时创建用户的时候需要加上 c## 开头:例如:c##MLQ. --说明--需求:创建表空间(MLQ ...
- Oracle 释放过度使用的Undo表空间
故障现象:UNDO表空间越来越大,长此下去最终数据因为磁盘空间不足而崩溃: 问题分析:产生问题的原因主要以下两点: 1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况: ...
- PL/SQL创建数据表空间
创建数据表空间create tablespace stbss datafile 'E:\oracle\product\10.2.0\oradata\orcl\stbss_temp01.dbf' siz ...
- Oracle创建,删除用户与表空间
1.创建表空间与用户 a:创建数据表空间 create tablespace user_data logging datafile 'D:\oracle\product\10.2.0\oradata\ ...
随机推荐
- python3 登录接口
登录接口 功能: 输入用户名(有一个用户名及对应的密码表) 认证成功后显示欢迎信息 输错三次后锁定(即第四次提示该账户已被锁定)用户登录锁定记录写到一个文件中. 用到:自定义函数.列表.字典 #Au ...
- (36)老版和新版API调用
---------更新时间18:06 2016-09-18 星期日------- *前言 我用的是odoo8,但里面有相当多的api是以前版本,这时若我们自己开发的 插件采用新版本api,里面 ...
- json 递归查找某个节点
一段json可能有很多的子节点,需要查询到某一个节点 用到的js是 find-in-json.js 地址是:https://gist.github.com/iwek/3924925 貌似翻|||墙才能 ...
- Sharepoint2012 Report权限
在主文件夹下,点击“文件夹设置”,如下图: 在打开的界面中,点击“新建角色分配”,如下图: 在打开的界面中,录入window组名,或是AD域账号,选择以下的角色,点击确定即可.
- C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)
文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们 ...
- iOS开发拓展篇—应用之间的跳转和数据传递
iOS开发拓展篇—应用之间的跳转和数据传 说明:本文介绍app如何打开另一个app,并且传递数据. 一.简单说明 新建两个应用,分别为应用A和应用B. 实现要求:在appA的页面中点击对应的按钮,能够 ...
- $('div','li'),$('div , li'),$('div li')的区别
要搞清楚$('div','li') 和 $('div , li') 和 $('div li') 区别: $('div','li'):是$(子,父),是从父节点里找子,而不是找li外面的div $('d ...
- Client默认用户及登录密码(转)
Client默认用户及登录密码 SAP系统(如ERP.CRM等)安装完成,初始化状态下有若干个客户端(Client).如果是生产系统,一般只有000.001.066等三个Client:如果是IDES系 ...
- HTML5适合移动应用开发的几大特性
1.离线缓存为HTML5开发移动应用提供了基础 HTML5 Web Storage API可以看做是加强版的cookie,不受数据大小限制,有更好的弹性以及架构,可以将数据写入到本机的ROM中,还可以 ...
- (spring-第17回【AOP基础篇】) 创建增强类
一. 增强类包含的信息: a) 横切逻辑(插入的具体代码) b) 部分连接点信息(在方法的哪个位置插入代码,比如方法前.方法后等). 二. 增强的类型 每一种增强有一个需要实现的增强类 ...