2011. április 18., hétfő

Ha túl nagyra dagadt az Oracle adatbázis

Ezt bármilyen kódhiba okozhatja, az én esetemben egy rosszul paraméterezett algoritmus futtatása miatt nőtt meg az adatbázis 32G fölé, ami már ütötte az Oracle 11g limitet. A paraméterezés javítása után viszont csak akkor tudok újra futtatni, ha már leszűkítettem az adatbázist.

Először is meg akartam állapítani, hogy melyik datafile, tablespace okozza a panaszt. A következő parancs kilistázza a datafile-okat, méretükkel csökkenő sorrendben:

select tablespace_name, file_name, bytes from dba_data_files order by bytes desc;

Miután megvan a datafile, jó tudni, hogy melyik táblák okozzák a bajt. A következő parancs megadja, hogy melyik tábla mekkora helyet foglal, ill. hogy hány sort tartalmaz az adott sémában (itt ’SCV_QD’):

select table_name, avg_row_len*num_rows, num_rows from dba_tables where owner = 'SCV_QD' order by num_rows desc;

Nekem ebből már sikerült kitalálnom, hogy mi a teendő, a megfelelő táblákat truncate-eltem. Ettől viszont még nem fog csökkeni az adatbázis mérete. Ahhoz a következő dolgokkal próbálkozhatunk:

1. Kiürítjük a „kukát”, ha van benne valami:

PURGE RECYCLEBIN;

2. Összehúzzuk az adatokat egy adott datafile-on:

ALTER DATABASE DATAFILE 'E:\ORACLE\ORADATA\ORCL\SCV_QD_DATA01.DBF' RESIZE 10G;

Nincsenek megjegyzések:

Megjegyzés küldése