Oracle File 'Ausdehnung'

Hallo,

kennt jemand das Problem, das ohne ersichtlichen Grund eine Datenmenge um ca. das 3-fache anwächst? (Datenbestand von ca. 600 MB auf 1,5 GB)
Es handelt sich um eine Oracle DB und der Auslöser ist in keinster Weise ersichtlich!!
Brauch nur nen Tip, wo der Fehler liegen könnte!!!

Danke!!!

Moien,
wär schon hilfreich zu wissen, was das für eine Tabelle ist, Oracle-Version, usw…

prinzipiell würde ich auf hohen Traffic und schlechte Einstellungen schätzen, z. B. PCT-Free

Gruß

Bernd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rike!

Um dir eine vernünftige Antwort geben zu können folgende Fragen:
Oracle Version?
Oracle managed files j/n?
Betriebssystem?

Gruß
Martin

Oracle Version : BTBi (Oracle8i) 5.0.07.03

BS : Win 2000

Oracle Version : BTBi (Oracle8i) 5.0.07.03

BS : Win 2000

Hallo Rike!

Mach’ mal die Datei ausfindig, die den Zuwachs verursacht hat, am Besten hiermit:

SELECT file\_name,
 round(bytes/(1024\*1024)) size\_mb,
 tablespace\_name 
FROM dba\_data\_files
ORDER BY 2 DESC;

Das ergibt die Files in absteigender Größe mit dem Tablespace zu dem sie gehören
Danach siehst du dir die Segmente des Tablespaces an, der den Zuwachs verursacht hat:

SELECT owner,
 segment\_name,
 segment\_type,
 round(bytes/(1024\*1024)) size\_mb,
 initial\_extent, 
 next\_extent
FROM dba\_segments
WHERE tablespace\_name=[der Name von oben]
ORDER BY 3 DESC;

Mit etwas Glück weisst du jetzt, welches Segment den Grössenzuwachs verursacht. Der Grund kann entweder die tatsächliche Datenmenge sein (auch Daten, die mittlerweile wieder gelöscht wurden) oder schlechte Storage-Parameter bei der Anlage des Segments.
Wenn das Segment tatsächlich noch immer so viele Daten hält, dann hilft nur noch Daten löschen (idR aber eine eher suboptimale Idee). Wenn die Storage Parameter schlecht sind oder der Platz nur temporär benötigt wurde kannst du u.U. noch was tun.
Zunächst mal: Wieviel Platz brauchen die Daten des Segments tatsächlich:

var total\_blocks number;
var total\_bytes number;
var unused\_blocks number;
var unused\_bytes number;
var last\_used\_extent\_file\_id number;
var last\_used\_extent\_block\_id number;
var last\_used\_block number;
exec dbms\_space.unused\_space([owner],
 [segment\_name],
 [segment\_type],
 :total\_blocks,
 :total\_bytes,
 :unused\_blocks,
 :unused\_bytes,
 :last\_used\_extent\_file\_id,
 :last\_used\_extent\_block\_id,
 :last\_used\_block);
select :total\_blocks,:total\_bytes,:unused\_blocks,:unused\_bytes from dual;

wobei sich die Parameter in [] aus den Werten des obigen selects ergeben. Wenn sich hier ergibt, dass sehr viel Platz verschwendet wird, dann empfiehlt sich (wenn du den Platz auich tasächlich brauchst - sonst: wayne interessiert’s :wink:) die Neuanlage des betreffenden Segments (aber bitte nur, wenn du auch genau weisst was du tust). Hilfe dazu auf Anfrage.

Gruß
Martin