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