piatok, 25 júl 2014 11:37 Written by 2324 times
Rate this item
(1 Vote)

SQL - užitočné pohľady pre databázového programátora časť 2.

Ďalšie užitočné pohľady pre tabuľkové priestory a databázový priestor. Určite sa tieto pohľady môžu zísť vývojárovi pod ORACLE databázami a databázovému administrátorovi. Pohľady sú ladené v prostredí ORACLE 11g.

-- zoznam objektov, ktore používajú tabuľkový priestor (tablespace) s menom TBLSPC

SELECT * FROM DBA_SEGMENTS WHERE TABLESPACE_NAME = 'TBLSPC';

-- počet MB, ktoré zaberá tabuľka MYTABLE

SELECT (NUM_ROWS * AVG_ROW_LEN)/(1024*1024) "USED [MB]" FROM DBA_TABLES WHERE TABLE_NAME = 'MYTABLE';

-- zoznam všetkých tabuľkových priestorov (tablespaces) v databáze + sumáre jednotlivých súborov (datafiles) každého tabuľkového priestoru

 

SELECT 
    TABLESPACE_NAME,
    ORDR,
    DATA_FILE,
    GB_MAX,
    GB_ALLOCATED,
    GB_USED,
    ROUND(GB_USED/GB_MAX*100,2) PERCENT_USED,
    GB_MAX-GB_USED AS GB_FREE 
FROM 
( 
    SELECT  
        A.TABLESPACE_NAME, 
        2 ORDR,
        'Summary:' AS DATA_FILE, 
        A.MAXBYTES/(1024*1024*1024) GB_MAX,
        A.BYTES/(1024*1024*1024) GB_ALLOCATED,
        (A.BYTES-B.BYTES)/(1024*1024*1024) GB_USED,
        B.BYTES/(1024*1024*1024) GB_FREE 
    FROM 
        (SELECT 
            TABLESPACE_NAME, 
            SUM(BYTES) BYTES, 
            SUM(MAXBYTES) MAXBYTES 
         FROM DBA_DATA_FILES 
         GROUP BY TABLESPACE_NAME) A, 
        (SELECT 
            TABLESPACE_NAME, 
            SUM(BYTES) BYTES 
         FROM DBA_FREE_SPACE 
         GROUP BY TABLESPACE_NAME) B 
    WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME 
    UNION ALL 
    SELECT  
        A.TABLESPACE_NAME,
        1 ORDR,
        A.FILE_NAME DATA_FILE,
        A.MAXBYTES/(1024*1024*1024) GB_MAX,
        A.BYTES/(1024*1024*1024) GB_ALOCATED,
        NULL AS GB_USED,
        (SELECT SUM(BYTES) BYTES FROM DBA_FREE_SPACE WHERE FILE_ID=A.FILE_ID)/(1024*1024*1024) AS GB_FREE 
    FROM DBA_DATA_FILES A 
)
ORDER BY TABLESPACE_NAME,ORDR,DATA_FILE;

 

-- pohľad, ktorý zobrazí počet GB využitého, alokovaného a voľného priestoru databázou na disku

SELECT    
    ROUND(SUM(USED.BYTES)/(1024*1024*1024)) || ' GB' "DATABASE SIZE",   
    ROUND(SUM(USED.BYTES)/(1024*1024*1024)) - ROUND(FREE.P/(1024*1024*1024)) || ' GB' "USED SPACE",    
    ROUND(FREE.P/(1024*1024*1024)) || ' GB' "FREE SPACE"
FROM    
    (SELECT BYTES FROM V$DATAFILE
     UNION ALL
     SELECT BYTES FROM V$TEMPFILE
     UNION ALL
     SELECT BYTES FROM V$LOG
    ) USED,    
    (SELECT SUM(BYTES) AS P    
     FROM DBA_FREE_SPACE
    ) FREE
GROUP BY FREE.P;

S pozdravom

Last modified on piatok, 25 júl 2014 12:31
Alojz Benďák

Autor je administrátor webu a venuje sa programovaniu takmer 23 rokov.

  • prvý kontakt s počítačmi na strednej škole - PMD 1,2,3, PP06, Atari, Sinclair (programovanie v jazyku: strojový kód, basic a pascal):  2 roky
  • na VŠ - jazyky Turbo pascal a Turbo C: 1rok
  • programovanie databázového ekonomického širokoškálneho software v Delphi a C++ Borland (databázy Paradox): 8 rokov v Codex s.r.o. Nitra
  • programovanie webových aplikácií na databázach MySQL a MS SQL server: 1 roky na živnosť (firmy: Hermes Nitra, Schindler v Bratislave)
  • pracoval ako DBA v Homecredit Brno a vo VÚB Bratislava ako vyvojár + optimalizácie v SQL a PL/SQL na Oracle 11g (firma Accenture)
  • programoval programy pre súkromné firmy pre HW na skenovanie povrchov nádrží pre skladovanie tekutých palív (pristroj Leica)
  • momentálne pracuje ako DBA pod Oracle 11g a ako vyvojár vnútropodnikových databázových aplikacií v PHP, SQL, C++, C# a interface v PL/SQL: 11 rokov
  • ďalej programuje s HTML, CSS, Ajax, Javascript, VBA, MS visual C++ a C# malé podporné aplikácie
  • certifikát SQL expert for Oracle 11g   
  • spolupracuje a aktívne učí pre počítačové firmy: Lapis, IVIT v Nitre