create or replace procedure SHOW_SPACE(P_SEGNAME   IN VARCHAR2,

P_OWNER     IN VARCHAR2 DEFAULT USER,

P_TYPE      IN VARCHAR2 DEFAULT 'TABLE',

P_PARTITION IN VARCHAR2 DEFAULT NULL)

-- THIS PROCEDURE USES AUTHID CURRENT USER SO IT CAN QUERY DBA_*

-- VIEWS USING PRIVILEGES FROM A ROLE AND SO IT CAN BE INSTALLED

-- ONCE PER DATABASE, INSTEAD OF ONCE PER USER WHO WANTED TO USE IT.

AUTHID CURRENT_USER AS

L_FREE_BLKS          NUMBER;

L_TOTAL_BLOCKS       NUMBER;

L_TOTAL_BYTES        NUMBER;

L_UNUSED_BLOCKS      NUMBER;

L_UNUSED_BYTES       NUMBER;

L_LASTUSEDEXTFILEID  NUMBER;

L_LASTUSEDEXTBLOCKID NUMBER;

L_LAST_USED_BLOCK    NUMBER;

L_SEGMENT_SPACE_MGMT VARCHAR2(255);

L_UNFORMATTED_BLOCKS NUMBER;

L_UNFORMATTED_BYTES  NUMBER;

L_FS1_BLOCKS         NUMBER;

L_FS1_BYTES          NUMBER;

L_FS2_BLOCKS         NUMBER;

L_FS2_BYTES          NUMBER;

L_FS3_BLOCKS         NUMBER;

L_FS3_BYTES          NUMBER;

L_FS4_BLOCKS         NUMBER;

L_FS4_BYTES          NUMBER;

L_FULL_BLOCKS        NUMBER;

L_FULL_BYTES         NUMBER;

-- INLINE PROCEDURE TO PRINT OUT NUMBERS NICELY FORMATTED

-- WITH A SIMPLE LABEL.

PROCEDURE P(P_LABEL IN VARCHAR2, P_NUM IN NUMBER) IS

BEGIN

DBMS_OUTPUT.PUT_LINE(RPAD(P_LABEL, 40, '.') ||

TO_CHAR(P_NUM, '999,999,999,999'));

END;

BEGIN

-- THIS QUERY IS EXECUTED DYNAMICALLY IN ORDER TO ALLOW THIS PROCEDURE

-- TO BE CREATED BY A USER WHO HAS ACCESS TO DBA_SEGMENTS/TABLESPACES

-- VIA A ROLE AS IS CUSTOMARY.

-- NOTE: AT RUNTIME, THE INVOKER MUST HAVE ACCESS TO THESE TWO

-- VIEWS!

-- THIS QUERY DETERMINES IF THE OBJECT IS AN ASSM OBJECT OR NOT.

BEGIN

EXECUTE IMMEDIATE 'SELECT TS.SEGMENT_SPACE_MANAGEMENT

FROM DBA_SEGMENTS SEG, DBA_TABLESPACES TS

WHERE SEG.SEGMENT_NAME = :P_SEGNAME

AND (:P_PARTITION IS NULL OR

SEG.PARTITION_NAME = :P_PARTITION)

AND SEG.OWNER = :P_OWNER

AND SEG.TABLESPACE_NAME = TS.TABLESPACE_NAME'

INTO L_SEGMENT_SPACE_MGMT

USING P_SEGNAME, P_PARTITION, P_PARTITION, P_OWNER;

EXCEPTION

WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE('THIS MUST BE A PARTITIONED TABLE, USE P_PARTITION => ');

RETURN;

END;

-- IF THE OBJECT IS IN AN ASSM TABLESPACE, WE MUST USE THIS API

-- CALL TO GET SPACE INFORMATION; ELSE WE USE THE FREE_BLOCKS

-- API FOR THE USER MANAGED SEGMENTS.

IF L_SEGMENT_SPACE_MGMT = 'AUTO' THEN

DBMS_SPACE.SPACE_USAGE(P_OWNER,

P_SEGNAME,

P_TYPE,

L_UNFORMATTED_BLOCKS,

L_UNFORMATTED_BYTES,

L_FS1_BLOCKS,

L_FS1_BYTES,

L_FS2_BLOCKS,

L_FS2_BYTES,

L_FS3_BLOCKS,

L_FS3_BYTES,

L_FS4_BLOCKS,

L_FS4_BYTES,

L_FULL_BLOCKS,

L_FULL_BYTES,

P_PARTITION);

P('UNFORMATTED BLOCKS ', L_UNFORMATTED_BLOCKS);

P('FS1 BLOCKS (0-25) ', L_FS1_BLOCKS);

P('FS2 BLOCKS (25-50) ', L_FS2_BLOCKS);

P('FS3 BLOCKS (50-75) ', L_FS3_BLOCKS);

P('FS4 BLOCKS (75-100)', L_FS4_BLOCKS);

P('FULL BLOCKS ', L_FULL_BLOCKS);

ELSE

DBMS_SPACE.FREE_BLOCKS(SEGMENT_OWNER     => P_OWNER,

SEGMENT_NAME      => P_SEGNAME,

SEGMENT_TYPE      => P_TYPE,

FREELIST_GROUP_ID => 0,

FREE_BLKS         => L_FREE_BLKS);

P('FREE BLOCKS', L_FREE_BLKS);

END IF;

-- AND THEN THE UNUSED SPACE API CALL TO GET THE REST OF THE

-- INFORMATION.

DBMS_SPACE.UNUSED_SPACE(SEGMENT_OWNER             => P_OWNER,

SEGMENT_NAME              => P_SEGNAME,

SEGMENT_TYPE              => P_TYPE,

PARTITION_NAME            => P_PARTITION,

TOTAL_BLOCKS              => L_TOTAL_BLOCKS,

TOTAL_BYTES               => L_TOTAL_BYTES,

UNUSED_BLOCKS             => L_UNUSED_BLOCKS,

UNUSED_BYTES              => L_UNUSED_BYTES,

LAST_USED_EXTENT_FILE_ID  => L_LASTUSEDEXTFILEID,

LAST_USED_EXTENT_BLOCK_ID => L_LASTUSEDEXTBLOCKID,

LAST_USED_BLOCK           => L_LAST_USED_BLOCK);

P('TOTAL BLOCKS', L_TOTAL_BLOCKS);

P('TOTAL BYTES', L_TOTAL_BYTES);

P('TOTAL MBYTES', TRUNC(L_TOTAL_BYTES / 1024 / 1024));

P('UNUSED BLOCKS', L_UNUSED_BLOCKS);

P('UNUSED BYTES', L_UNUSED_BYTES);

P('LAST USED EXT FILEID', L_LASTUSEDEXTFILEID);

P('LAST USED EXT BLOCKID', L_LASTUSEDEXTBLOCKID);

P('LAST USED BLOCK', L_LAST_USED_BLOCK);

END;

show_space.sql.txt的更多相关文章

  1. mysql命令行的导入导出sql,txt,excel(都在linux或windows命令行操作)(转自筑梦悠然)

    原文链接https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/73805962 Mysql导入导出sql,txt,excel 首先我们通过命令行 ...

  2. Sql Server海量数据插入

    目录 1.前言 2.BULK INSERT 3.简单示例 前言 由于昨天接到一个客户反馈导出数据卡死的问题,于是决定今天模拟一下千万级的数据,然后傻傻的等待插入数据了半天...... 对于海量数据,上 ...

  3. Navicat Premium下sql导入中文乱码解决方案

    今天帮忙朋友找bug的时候,准备导入她数据库里面的数据,所以我就试图在mysql管理工具Navicat下面导入相应的mysql命令.结果发现导入的中文字符全部变成乱码,所以做了如下这种尝试: 在“连接 ...

  4. 实战手记:让百万级数据瞬间导入SQL Server

    想必每个DBA都喜欢挑战数据导入时间,用时越短工作效率越高,也充分的能够证明自己的实力.实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本文将向大家推荐一个挑战4秒极限让百万级数据瞬间 ...

  5. mysql基础语法及拓展到web中的sql注入

    本来是想写下javaweb的mvc(tomcat, spring, mysql)的搭建,  昨天搭到凌晨3点, 谁知道jdbcTemplate的jar包不好使, 想死的心都有了, 想想还是休息一下, ...

  6. into outfile 生成sql脚本

    select concat('insert into t_dm_stage(STAGE_ID,STAGE_NAME) values(',STAGE_ID,',','\'',STAGE_NAME,'\' ...

  7. 【转 】实战手记:让百万级数据瞬间导入SQL Server

    想必每个DBA都喜欢挑战数据导入时间,用时越短工作效率越高,也充分的能够证明自己的实力.实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本文将向大家推荐一个挑战4秒极限让百万级数据瞬间 ...

  8. 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

    原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...

  9. C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

    作者: Aicken(李鸣)  来源: 博客园  发布时间: 2010-09-08 15:00  阅读: 4520 次  推荐: 0                   原文链接   [收藏] 摘要: ...

随机推荐

  1. Com进程通信(有详细步骤)

    http://www.cnblogs.com/FKdelphi/p/5772950.html

  2. 转:阿里旺旺导致python安装包失败的解决办法

    我以前使用web.py没事,今天运行时报错, mimetypes.init() # try to read system mime.types File "D:\ProgramFiles\p ...

  3. 【宽搜】ECNA 2015 E Squawk Virus (Codeforces GYM 100825)

    题目链接: http://codeforces.com/gym/100825 题目大意: N个点M条无向边,(N<=100,M<=N(N-1)/2),起始感染源S,时间T(T<10) ...

  4. 【模拟】Codeforces 704A & 705C Thor

    题目链接: http://codeforces.com/problemset/problem/704/A http://codeforces.com/problemset/problem/705/C ...

  5. Java---类反射(2)---类反射加强

    经过前面的一篇博客,Java-类反射(1),相信大家对类反射有了一定的了解了. 下面来进行对类反射的加强,了解一下怎么通过类反射去new一个对象, 怎么通过类反射去访问其他类的方法. 怎么通过类反射去 ...

  6. oracle常用命令总结

    声明:本文为博主在做项目中用到的一些常用命令,请勿转载,只为保存. oracle常用命令总结 创建表空间: --create tablespace vms--datafile 'e:\vms.dbf' ...

  7. svn server安装配置

    安装平台:RHEL5 1.安装软件:httpd.subversion.mod_dav_svn 2.修改配置 修改/etc/httpd/conf.d/subversion.conf.eg: LoadMo ...

  8. 在javascript中使用媒体查询media query

    由于需要,我们可能会在js中用到一些media query,从而针对不同的分辨率做一些操作. //全兼容的 事件绑定 and 阻止默认事件 var EventUtil = { //Notice: ty ...

  9. 学习 opencv---(10)形态学图像处理(2):开运算,闭运算,形态学梯度,顶帽,黒帽合辑

    上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换. 所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和 ...

  10. SpringBoot 配置文件 application.properties

    转:http://www.qiyadeng.com/post/spring-boot-application-properties #########COMMON SPRING BOOT PROPER ...