13. 10. 2016

Oracle - pridanie miesta v tablespace

Jedna z klasických úloh DB admina je pridávanie miesta pre databázové objekty. V oracle sa jedná o zväčšenie tablespace, ten sa môže skladať z viacerých súborov. Tieto možno pridávať alebo meniť im veľkosť aj za behu databázy.

Prikladám príkazy na monitoring a zväčšovanie priestoru v tablespacoch.

Pre monitorovanie používam skript podobný tomuto, počíta aj s priestorom vyhradeným pre autoextent:

SELECT 'ts: ' || tablespace_name || ' - ' || ROUND(SUM(max_mb) - (SUM(total_mb)-SUM(free_mb))) || ' of ' ||
       ROUND(SUM(max_mb)) || ' (' || ROUND((SUM(total_mb)-SUM(free_mb))/SUM(max_mb)*100) || '% used)'
FROM (
  SELECT tablespace_name, SUM(bytes)/1024/1024 FREE_MB, 0 TOTAL_MB, 0 MAX_MB
  FROM dba_free_space GROUP BY tablespace_name
  UNION
  SELECT tablespace_name, 0 CURRENT_MB, SUM(bytes)/1024/1024 TOTAL_MB,
  SUM(DECODE(maxbytes,0,bytes, maxbytes))/1024/1024 MAX_MB
  FROM dba_data_files GROUP BY tablespace_name)
--  where  tablespace_name like '%APPL%' or tablespace_name like '%IND%' or
--         tablespace_name like '%USERS%'
GROUP BY tablespace_name
having ((SUM(total_mb)-SUM(free_mb))/SUM(max_mb)*100) > 60
and ROUND(SUM(max_mb) - (SUM(total_mb)-SUM(free_mb))) < 7000
order by ROUND((SUM(total_mb)-SUM(free_mb))/SUM(max_mb)*100) desc;

Niekedy je vhodné v prípade podozrivých nárastov vypátrať najväčšie objekty daného tablespace (napr tabuľky):

select segment_name, sum(bytes/1024/1024/1024)
from dba_segments
where segment_type like '%TABLE%'
and tablespace_name = 'SYSTEM'
group by segment_name
having sum(bytes) > 100000000
order by sum(bytes) desc;

Pred pridávaním datafile pozrieme cestu existujúcich na serveri a potom zväčšíme či pridáme ďalší:

select * from dba_data_files where tablespace_name = 'SMALL_TAB' order by file_id;

ALTER DATABASE DATAFILE '/d1/ora/DB1/data/small_tab1.dbf' RESIZE 2000M;

alter tablespace SMALL_TAB add datafile '/d1/ora/DB1/data/small_tab2.dbf' size 100M
autoextend on
next 400M
maxsize 16000M;

Žiadne komentáre:

Zverejnenie komentára