[Oracle]-[show_space and show_space_asm]-execute the Stored Procedure show_space and show_s

Source: Internet
Author: User

[Oracle]-[show_space and show_space_asm]-Run the Stored Procedure show_space and show_space_asm to report errors. Sys creates show_space () and show_space_asm (). Bisal execution prompt:

SQL> exec show_space('MY_OBJECTS', 'BISAL');BEGIN show_space('MY_OBJECTS', 'BISAL'); END;      *ERROR at line 1:ORA-06550: line 1, column 7:PLS-00201: identifier 'SHOW_SPACE' must be declaredORA-06550: line 1, column 7:PL/SQL: Statement ignored

 

Sys user execution:
grant execute on show_space to bisal
, Bisal still cannot be executed. Sys user execution:
SQL> create public synonym show_space for sys.show_space;   Synonym created.SQL> grant execute on show_space to public ;Grant succeeded.

 

Bisal execution:
SQL> exec show_space('MY_OBJECTS', 'BISAL');UNFORMATTED BLOCKS .....................        0FS1 BLOCKS (0-25) ......................        0FS2 BLOCKS (25-50) .....................        0FS3 BLOCKS (50-75) .....................       18FS4 BLOCKS (75-100).....................      122FULL BLOCKS ............................        0TOTAL BLOCKS............................      256TOTAL BYTES.............................       2,097,152TOTAL MBYTES............................        2UNUSED BLOCKS...........................      104UNUSED BYTES............................  851,968LAST USED EXT FILEID....................        5LAST USED EXT BLOCKID...................      137LAST USED BLOCK.........................       24PL/SQL procedure successfully completed.SQL> exec show_space_assm('MY_OBJECTS', 'BISAL');free space 0-25% Blocks:................0free space 25-50% Blocks:...............0free space 50-75% Blocks:...............18free space 75-100% Blocks:..............122Full Blocks:............................0Unformatted blocks:.....................0PL/SQL procedure successfully completed.

 

Attach the show_space and show_space_assm of TOM's great gods:
-- ---------------------------------------------- Author : Tom Kyte-- Description : Displays free and unused space for the specified object.-- Call Syntax : EXEC Show_Space('Tablename');-- Requirements : SET SERVEROUTPUT ON -- Last Modified: June 22, 2010-- This enhance version has all the fixes for ASSM, LMT, partitions etc (Oracle version 10gr2 +)-- -----------------------------------------------------------------------------------set define offcreate 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 that wanted to use itauthid current_useras    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 a 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.segment_type = :p_type             and seg.tablespace_name = ts.tablespace_name'            into l_segment_space_mgmt           using p_segname, p_partition, p_partition, p_owner, p_type;  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;/set define oncreate or replace procedure show_space_assm(p_segname in varchar2,p_owner in varchar2 default user,p_type in varchar2 default 'TABLE' )asl_fs1_bytes number;l_fs2_bytes number;l_fs3_bytes number;l_fs4_bytes number;l_fs1_blocks number;l_fs2_blocks number;l_fs3_blocks number;l_fs4_blocks number;l_full_bytes number;l_full_blocks number;l_unformatted_bytes number;l_unformatted_blocks number;procedure p( p_label in varchar2, p_num in number )isbegindbms_output.put_line( rpad(p_label,40,'.') ||p_num );end;begindbms_space.space_usage(segment_owner => p_owner,segment_name => p_segname,segment_type => p_type,fs1_bytes => l_fs1_bytes,fs1_blocks => l_fs1_blocks,fs2_bytes => l_fs2_bytes,fs2_blocks => l_fs2_blocks,fs3_bytes => l_fs3_bytes,fs3_blocks => l_fs3_blocks,fs4_bytes => l_fs4_bytes,fs4_blocks => l_fs4_blocks,full_bytes => l_full_bytes,full_blocks => l_full_blocks,unformatted_blocks => l_unformatted_blocks,unformatted_bytes => l_unformatted_bytes);p('free space 0-25% Blocks:',l_fs1_blocks);p('free space 25-50% Blocks:',l_fs2_blocks);p('free space 50-75% Blocks:',l_fs3_blocks);p('free space 75-100% Blocks:',l_fs4_blocks);p('Full Blocks:',l_full_blocks);p('Unformatted blocks:',l_unformatted_blocks);end;/

 

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.