Frage zu DBA_INDEXES

Hallo Profis! Ich stehe vor einem Problem, das eigentlich keines ist, ich aber Angst habe, dass es eines werden kann…
Ich betreue 17 RS6000 Server (AIX 4.3) auf denen jeweils eine Oracle DB 7.3 läuft. Nun habe ich in einer Lokation das Problem, dass alle 6 Wochen die DB abstürzt, weil ein Tablespace volläuft. Ich habe nun mal alle DB’s miteinander verglichen (laufen in verschiedenen Lokationen mit den selben Aufgaben - also sollte alle DB’s gleich aufgebaut sein) und festgestellt, dass der Index ‚BXPKSENDTABLEVARCHAR2‘ in dieser lokation in den Tablespace ABCPARAMETER und nicht in ABCOFFLINE schreibt.
Und nun die Quälenden Frage: Dass ich dem Index den richtigen Tablespace ‚aufdübeln‘ kann, davon gehe ich aus, aber was passiert in der Zukunf? Nimmt er dann die schon vorhandenen Eintragungen mit in den neuen Tablespace? Oder ist damit ein zukünftiger crash vorprogrammiert?
Ich bitte Euch um Rat, denn ich habe zwar eine Testumgebung, aber was im richtigen Betrieb passiert, wenn sehr viele Daten auf die DB wollen, das kann ich natürlich nicht richtig austesten!!! Ich möchte auch nochmals daran erinnern, dass es sich um eine Oracle 7.3 handelt!!

Vielen Dank!!!

Hallo Ralf!

Ich habe nun mal alle DB’s miteinander
verglichen (laufen in verschiedenen Lokationen mit den selben
Aufgaben - also sollte alle DB’s gleich aufgebaut sein) und
festgestellt, dass der Index ‚BXPKSENDTABLEVARCHAR2‘ in dieser
lokation in den Tablespace ABCPARAMETER und nicht in
ABCOFFLINE schreibt.

Die Idee mit dem Vergleich ist ja an und für sich ganz gut, aber ich halte es für einen vorschnellen Schluss zu glauben, dass zwangsläufig die eine DB falsch ist, die einen Unterschied zu allen anderen aufweist - das könnte durchaus auch umgekehrt sein (z.B. Fehler in den Skripten korrigiert, aber die bereits bestehenden Datenbanken „vergessen“ anzupassen). Ich würde also in dem Fall versuchen denjenigen zu kontaktieren, der die DB auch aufgesetzt hat.

Und nun die Quälenden Frage: Dass ich dem Index den richtigen
Tablespace ‚aufdübeln‘ kann, davon gehe ich aus, aber was
passiert in der Zukunf?

Was du beim „umdübeln“ tust ist eigentlich nichts anderes, als den Index in einem anderen Tablespace komplett neu aufzubauen. Das sollte theoretisch keinerlei weiteren Auswirkungen haben, solange nicht „irgendjemand“ sich darauf verlässt, dass ein bestimmter Index auch in einem bestimmten Tablespace liegt. Wir bei uns verwenden z.B. einen eigenen Tablespace für (logisch gesehen) temporäre Daten, die per Datenbank-Job immer wieder mal gelöscht werden - und zwar unabhängig davon wie die Tabellen in dem TS heissen. Wenn du mir da eine Stammdatentabelle reinlegst erlebst du früher oder später ein blaues Wunder…

Nimmt er dann die schon vorhandenen
Eintragungen mit in den neuen Tablespace? Oder ist damit ein
zukünftiger crash vorprogrammiert?

Wie schon gesagt, das Resultat ist das gleiche, als wenn du den Index von vorneherein im anderen Tablespace angelegt hättest (abgesehen von der internen Struktur des Indexes, aber das führt hier jetzt wohl etwas zu weit). Die Frage ist nur, ob auch „jeder“ weiss, dass du den Index verschoben hast, der das auch wissen muss.

Ich bitte Euch um Rat, denn ich habe zwar eine Testumgebung,
aber was im richtigen Betrieb passiert, wenn sehr viele Daten
auf die DB wollen, das kann ich natürlich nicht richtig
austesten!!!

Ich würde dir wirklich wärmstens empfehlen mit demjenigen Kontakt aufzunehmen, der die DB auch angelegt hat. Andernfalls landest du unter Umstaänden in Teufels Küche, obwohl die Probleme, die ein fehlender Index hätte noch zu den geringeren Übeln zählen, wenn da nicht auch gerade ein unique constraint oder primary key dranhängt. Ansonsten wirst du einen fehlenden Index wohl nur bei der Performance bemerken.

Ich möchte auch nochmals daran erinnern, dass es
sich um eine Oracle 7.3 handelt!!

Und da empfehle ich DRINGENDST einen Update. Zur Zeit sind von Oracle nur die Versionen 8.1.x und neuer Supported, du bist also schon zwei Versionen im Rückstand, und angesichts der Tatsache, dass Oracle in der Regel immer nur 2 1/2 Versionen unterstützt (sprich 8i wird wohl in nicht allzu fernen Zukunft desupported) solltest du dir gleich mal Gedanken über 10g machen.

Vielen Dank!!!

Leider wenig praktisch hilfreiches von meiner Seite… Solltest du meine Warnung in den Wind schlagen wollen, so kann man einen Index verschieben:

ALTER INDEX REBUILD TABLESPACE ;

Gruss,
Martin

hi!

Solltest du meine Warnung in den Wind schlagen wollen, so kann
man einen Index verschieben:

ALTER INDEX
REBUILD TABLESPACE ;

zum ersten teil + warnung geb ich dir recht, zum alter index allerdings muß ich dich korrigieren (ich dachte nie, daß ich jemals in diese situation komme :wink:: unter 7.x gibt’s kein rebuild (bin selber vor _kurzem_ auf einer 7.3.4 reingefallen); es führt kein weg am index droppen und index neu anlegen vorbei (wobei man sich die index-parameter ev. aufschreiben sollte od. mittels toad sich ein script rausgeneriert - ja, ich bin ein fauler hund)

SQL\>drop index ;
SQL\>create index ;

grüße,
tomh

Hallo Martin!

Vielen Dank für Deine Infos! Du wirst lachen: Ich gebe Dir was die Situation an sich betrifft, zu 100% recht. Aber lass mich bitte kurz erklären, warum es nicht anderst geht. Ich bin alleiniger DBA (keine Backup Person, niemand, mit dem ich gemeinsam Probleme lösen könnte (ausser mit Euch :wink:). Warum ich DB’s verglichen habe? Alle DB stammen von 2 Müttern. D.h. bei einer neuen Lokation wurde eine bestehende DB genommen, geleert und neu mit Daten befüllt. Deshalb muss das „Gerippe“ gleich sein. Wenn an den Skripten etwas geändert wurde, so wurde das überall implementiert (dieses ist bei uns von Regierungsseite vorgeschrieben). Die Firma, die diese Applikation ende der 90er verbrochen hat, gibt es schon lange nicht mehr. Ein ehemaliger Kollege hat die Applikation wenigstens weitgehenst stabil gebracht - dieser verweilt aber nun seit 4 Jahren in den Staaten und hat seit dem nix mehr mit Oracle gemacht. Ich bin der 4. Erbe, der das alles so übernommen hat. Ach ja: Die Applikation läuft nicht unter neueren Oracle Versionen. Und die Applikation können wir nicht neu compilieren, da diese Firma uns nicht den gesammten Sourcecode übergeben hat (hatte damals nur keiner gemerkt)! Und da sich ja alle seit einiger Zeit nur dem sparen widmen, ist einfach kein Geld da, die Software teuer neu zu stricken, bzw. was von der Stange zu kaufen. Ok, soweit dazu! Vielen Dank nochmals für Deine und Tomh’s Hilfe!

Hi Tom!

zum ersten teil + warnung geb ich dir recht, zum alter index
allerdings muß ich dich korrigieren (ich dachte nie, daß ich
jemals in diese situation komme :wink:

Ich auch nicht *ggg*

Aber wo er recht hat, hat er recht. 7.3.4 ist eben doch schon zu lange her bei mir…

Liebe Grüße
Martin

Hi Ralf!

Vielen Dank für Deine Infos! Du wirst lachen: Ich gebe Dir was
die Situation an sich betrifft, zu 100% recht. Aber lass mich
bitte kurz erklären, warum es nicht anderst geht […]

Tust mir fast leid (das ist ernst gemeint!).

Ach ja: Die Applikation läuft nicht unter
neueren Oracle Versionen.

Argh! Was issn das für ein Ding (Forms, OCI, Pro*C,…)? Wenn da keine Verbrecher am Werk waren, dann sollte zumindest in den letzten beiden Fällen ein Upgrade am Server kein Problem sein (unser [OCI-]Programm läuft mangels eines neueren Clients am Mac auf Version 7.x.y gegen alle DB-Versionen zwischen 7 und 9 „problemlos“). Ich kenne aber auch Programme (will hier keine Namen nennen), die eine derart windige Installation am Client verlangen, dass ein Upgrade von 8.0.4 auf 8.0.5 eine Woche Arbeit der betreffenden Firma notwendig gemacht hat. Deren Client-„Installation“ auf Win war nämlich ein wild zusammenkopiertes Sammelsurium von Oracle-DLLs verschiedenster Versionen plus ein paar mehr oder weniger interessanter Registry-Einträge.

Wenn dein Problem in etwa so gelagert ist, dann kommt jetzt der Punkt, wo du mir WIRKLICH leid tust, weil dir nämlich auch schon fast nicht mehr zu helfen ist…

Vielen Dank nochmals für Deine und Tomh’s Hilfe!

Gerne doch, hat’s gefunkt? Ganz nebenbei: Bei wirklich grossen Datenmengen und hoher Änderungsrate der betroffenen Keys kann so ein REBUILD/DROP-CREATE auch schon mal die Performance verbessern (lässt sich aber kaum prognostizieren, und ist in der Priorität definitiv weit hinter aktuellen Statistiken anzusiedeln).

Gruß
Martin

Hi! Danke für den Tip, aber…
Wenn ich das nach deiner Methode mache, bekomme ich erstmal Fehler wegen den Constraints… und nachdem ich auch faul bin, habe ich einfach mal Martins Version (ALTER INDEX BXPKSENDTABLEVARCHAR2 REBUILD TABLESPACE ABCOFFLINE UNRECOVERABLE:wink: probiert… diese hat ohne Probleme gefunkt (auf der Testumgebung)… Ich implementiere das heute nachmittag in meiner Liveumgebung… Ich halte Euch auf dem laufenden…
Und um die Versionsfrage gleich zu klären:

SQLWKS> SELECT * FROM PRODUCT_COMPONENT_VERSION
2>
PRODUCT VERSION STATUS


CORE 3.5.4.0.0 Production
NLSRTL 3.2.4.0.0 Production
Oracle7 Server 7.3.4.0.0 Production
PL/SQL 2.3.4.0.0 Production
TNS for IBM/AIX RISC System/6000: 2.3.4.0.0 Production

Danke für Eure Hilfe

Ralf

Hi!
Ob es funzt? Auf der Testumgebung ja, live erledige ich das heute nachmitteg… Ich berichte dann darüber…
Was die Upgrades betrifft… Wir hatten schon 3 Oracle System Firmen da, die alle kopfschüttelnd wieder gegangen sind… Und wie gesagt, kosten dürfte das ganze auch nix…
Ok, danke nochmals und ich melde mich dann wieder…

Ralf

und nachdem ich auch faul bin,
habe ich einfach mal Martins Version (ALTER INDEX
BXPKSENDTABLEVARCHAR2 REBUILD TABLESPACE ABCOFFLINE
UNRECOVERABLE:wink: probiert… diese hat ohne Probleme gefunkt
(auf der Testumgebung)…

???
ich krieg ein:
ORA-02243: Ungültige ALTER INDEX oder ALTER SNAPSHOT Option

und das dürfte die begründung dafür sein (ich war bis jetzt der irrigen annahme, daß es sich um die _moderne_ 7.3.4er handelt

CORE
3.5.4.0.0

3.4.2.2.0

NLSRTL
3.2.4.0.0

3.1.4.4.0

und jetzt kommt’s

Oracle7 Server
7.3.4.0.0

7.2.2.4.0 … welch schande - aber ein beweis, wie lange oracle-applikationen lauffähig sind :wink:

PL/SQL
2.3.4.0.0

2.2.2.3.0

TNS for IBM/AIX RISC System/6000
2.3.4.0.0

TNS for HPUX:
2.2.2.0.0

da glaub ich einmal, martin übertrumpfen zu können und dann das …

grüße,
tomh