【PL/SQL】show_space

SQL> create table objects as select * from dba_objects;

表已创建

SQL> @f:\sql\show_space

SQL> set serveroutput on
SQL> exec show_space('objects','auto');
Total Blocks............................1024                                   
Total Bytes.............................8388608                                
Unused Blocks...........................8                                      
Unused Bytes............................65536                                  
Last Used Ext FileId....................1                                      
Last Used Ext BlockId...................90377                                  
Last Used Block.........................120                                    
PL/SQL 过程已成功完成。

SQL> create index i_ojectid on objects(object_id);

索引已创建。
                                
SQL> exec show_space('i_ojectid','auto','i');
Total Blocks............................256                                    
Total Bytes.............................2097152                                
Unused Blocks...........................101                                    
Unused Bytes............................827392                                 
Last Used Ext FileId....................1                                      
Last Used Ext BlockId...................90633                                  
Last Used Block.........................27                                     

PL/SQL 过程已成功完成。
SQL> analyze table objects compute statistics;
表已分析。

SQL> exec show_space('objects','auto','T','Y');
Total Blocks............................1024                                   
Total Bytes.............................8388608                                
Unused Blocks...........................8                                      
Unused Bytes............................65536                                  
Last Used Ext FileId....................1                                      
Last Used Ext BlockId...................90377                                  
Last Used Block.........................120                                    
BEGIN show_space('objects','auto','T','Y'); END;

*
第 1 行出现错误:
ORA-10614: Operation not allowed on this segment
ORA-06512: 在 "SYS.DBMS_SPACE", line 190
ORA-06512: 在 "SYS.SHOW_SPACE", line 92
ORA-06512: 在 line 1

SQL> select segment_space_management from dba_tablespaces
  2  where tablespace_name=
  3  (select tablespace_name from user_tables where table_name ='OBJECTS');

SEGMEN                                                                         
------                                                                         
MANUAL                                                                         

SQL> grant execute on dbms_space to public;
授权成功。
SQL> create public synonym show_space for sys.show_space;
同义词已创建。

SQL> grant execute on show_space to public;
授权成功。

SQL> conn scott/yang
已连接。
SQL> exec show_space('emp','auto');

PL/SQL 过程已成功完成。

SQL> set serveroutput on
SQL> exec show_space('emp','auto');
Total Blocks............................8                                      
Total Bytes.............................65536                                  
Unused Blocks...........................0                                      
Unused Bytes............................0                                      
Last Used Ext FileId....................4                                      
Last Used Ext BlockId...................25                                     
Last Used Block.........................8                                      

PL/SQL 过程已成功完成。

时间: 2024-11-02 00:14:41

【PL/SQL】show_space的相关文章

【PL/SQL】TOM 的 show_space()

只适用于非ASSM: create or replace procedure show_space ( p_segname in varchar2, p_owner in varchar2 default user, p_type in varchar2 default 'TABLE' ) as l_free_blks number; l_total_blocks number; l_total_bytes number; l_unused_blocks number; l_unused_byt

【PL/SQL】初试 bulk collect

SQL> create table yang(last_name varchar2(20),first_name varchar2(10),salary number(10));   Table created Executed in 1.388 seconds SQL> begin   2  for i in 1000..100999 loop   3  insert into yang (last_name,first_name,salary) values('qilong'||(i-10

【pl/sql】PLSQL常用配置【转】

1.PL/SQL Developer记住登陆密码 在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: 设 置方法:PL/SQL Developer 7.1.2  ->tools->Preferences->Oracle->Logon History , "Store history"是默认勾选的,勾上"Store with password" 即可,重新登录在输入一次

【PL/SQL】游标提取循环

注意exit when mycur%notfound; 放置的位置不同,输出结果也不同.第一个例子中循环在 it is over 提示后,又重复输出了  owner is  SYS,vid is 3:这是因为当提取到游标结果集的最后一行之后,不再提取其他的行.所以变量 vid ,vowner 不会被改变,当再次输出这些变量的语句时,就会重复输出了 declare   vid t.object_id%type;   vowner t.owner%type;   vnum integer;   cu

【MS SQL】数据库维护计划之数据库备份(一)

原文:[MS SQL]数据库维护计划之数据库备份(一) 在做数据库备份之前,一定会听到:完整备份.差异备份.增量备份.事务日志备份...等词:下面配图进行说明. 完整备份:完整数据库备份包含数据库中的所有数据.对于可以快速备份的小数据库而言,最佳方法就是使用完整数据库备份.但是,随着数据库的不断增大,完整备份需花费更多时间才能完成,并且需要更多的存储空间.因此,对于大型数据库而言,可以用差异备份来补充完整数据库备份.   差异备份:基于差异备份所包含数据的前一次最新完整备份.差异备份仅捕获自该次

【MS SQL】查看任务执行进度

原文:[MS SQL]查看任务执行进度 备份或还原数据库时,我一般是用MS SQL工具向导来进行,由于工具向导没有显示任务执行过程的状态, 如果数据库比较大执行时间较长的话,对任务啥时候执行完成比较迷茫,如下面步骤以"备份"数据库为例:   1.选择要备份的数据库,右键选择"任务 -->备份":   2.设置好备份选项,点击"确定"按钮:   3.数据库备份中....   4.其实,当备份选项设置好后,不点"确认"按钮,

【MS SQL】通过执行计划来分析SQL性能

原文:[MS SQL]通过执行计划来分析SQL性能 如何知道一句SQL语句的执行效率呢,只知道下面3种: 1.通过SQL语句执行时磁盘的活动量(IO)信息来分析:SET STATISTICS IO ON (开启) / SET STATISTICS IO OFF (关闭) 2.通过SQL语句执行时语法分析.编译以及执行所消耗的时间:SET STATISTICS TIME ON (开启) / SET STATISTICS TIME OFF (关闭) 3.通过执行计划查看:Ctrl + L  ----

【MS SQL】数据库维护计划之数据库备份(二)

原文:[MS SQL]数据库维护计划之数据库备份(二) 上篇[MS SQL]数据库维护计划之数据库备份(一) 说了数据库备份的一些概念后,这篇以HRP_KQYY数据库备份为例,进行备份计划设置.   考虑备份的时间.性能和硬盘空间等因素,备份方案做下面设置: 1.每周日凌晨1:00执行数据库完成备份: 2.每周一至周六凌晨1:00执行数据库差异备份: 3.每天在00:00:00和23:59:59之间.每4小时执行数据库的日志备份.   建立3个文件夹: HRP_KQYY_diff:存放差异备份文

【MS SQL】把多个数据库合并为一个新的数据库

原文:[MS SQL]把多个数据库合并为一个新的数据库 因应工作要求,需要把两个数据库合并成一个库: 一开始使用"导入数据.导出数据和复制数据库"三个工具时,没有达到要的效果.   后来,使用"生成脚本"来执行,成功!步骤如下: 1.新建一个空白库 -> SCM_KQYY:   2.选择要合并的数据库-> Materials:   3.这里不表,直接下一步:   4.按下图根据需要选择:表.存储过程.用户.同义词.   5.按下图设置,下一步:   6.