Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Oracle 10g Fulltablescan Problem

Frage Entwicklung Datenbanken

Mitglied: H41mSh1C0R

H41mSh1C0R (Level 2) - Jetzt verbinden

30.05.2011 um 10:52 Uhr, 4404 Aufrufe, 14 Kommentare

Hi@All,

die Oracle DB sorgt ja selber für die Suchstrategien. Wir haben nun eine Stammdatentabelle die die mio Einträge bereits überschritten hat. Wird nun über diese Tabelle ein fulltablescan gemacht dauert das natürlich seine Zeit.

Jetzt haben wir einen Bereich im Haus wo 5 Leute mit Hauseigener Anwendung X arbeiten und bei 3 Leuten geht es fix und bei 2 macht die Oracle DB über besagte Stammdatentabelle einen fulltablescan.

Alle machen das gleiche mit der Anwendung.

Wir haben bis jetzt keinen Kniff gefunden wie und ob man diese Suchstrategien beeinflussen kann.

Wer stand bereits vor solch einem Fall und hätte einen Tipp parat?

VG
Mitglied: db-wizard
30.05.2011 um 11:13 Uhr
Hallo


Ein Fulltablescan ist prinzipiell weder gut noch schlecht, es kommt auf den Umstand an. Abhängig von den verwendeten Suchkriterien kann ein Fulltabslescan deutlich performanter sein als ein Index Scan.


Gruss, Ueli
Bitte warten ..
Mitglied: H41mSh1C0R
30.05.2011 um 11:20 Uhr
Hallo,

mit verwendeten Suchkriterien meinst du den Select Aufruf selber oder kann man Oracle noch selber Parameter für seine Suchstrategie mitgeben bzw. gibt es Stellschrauben an denen wir drehen können?


VG
Bitte warten ..
Mitglied: db-wizard
30.05.2011 um 11:30 Uhr
- Ob Oracle eine FTS oder Index Scan verwendet, ist unter anderem abhängig von der Anzahl der zurückgelieferten Datensätzte in Relation zur Gesamtmenge. Es gibt dabei einige Stellschrauben, welche das Verhalten beinflussen können, ausserdem natürlich das Vorhandensein von passenden Indizies und aktuellen Statistiken.
- Ein guter Startpunkt zur Analyse solcher Probleme wäre ein Tracen der Session's, welche die Benutzer ausführen. In den dabei entstehenden TRACE Files, siehst du exakt, was die DB bei den ein einzelnen Statements gemacht hat.


Gruss
Bitte warten ..
Mitglied: H41mSh1C0R
30.05.2011 um 13:32 Uhr
Index ist vorhanden.

Langsamer Ablauf:

Hier geht er NICHT über den Index.

11bb33f6720196d81500a5b75f470595 - Klicke auf das Bild, um es zu vergrößern


Schneller Ablauf:

Hier geht er über den Index so wie er soll.

1049f7e9aa81a4eaac9a3208860b245a - Klicke auf das Bild, um es zu vergrößern

vg

EDIT:

Käme man hier mit der Benutzung von HINTs weiter?
Bitte warten ..
Mitglied: db-wizard
30.05.2011 um 14:55 Uhr
Kannst du mal die beiden SQL posten ? Einmal "schnell", einmal langsam" ?


Danke und Gruss
Bitte warten ..
Mitglied: H41mSh1C0R
30.05.2011 um 15:01 Uhr
01.
SELECT CASE WHEN substr(xd_az,1,2) = 'SR' THEN to_char(sysdate,'YYYY') ELSE to_char(to_date(substr(xd_az,1,2),'RRRR'),'YYYY') END, 1,  
02.
to_char(xd_eingang,'yyyymmdd'), day(vs_gebdat), month(vs_gebdat), year(vs_gebdat), '',  
03.
xd_dok_typ, xd_az, vs_udat, xd_personal_unfall, '', vs_gebdat,  
04.
CASE WHEN vs_abgabe IN (' ','997','998') THEN '' ELSE  
05.
CASE WHEN xd_sammelrechnung = '0' AND substr(vs_mglnr,2,4) = '9999'  
06.
THEN vs_abgabe ELSE '' END END, xd_ident,  
07.
CASE WHEN xd_archiv_dok_id IS NULL THEN 0 ELSE xd_archiv_dok_id END,  
08.
CASE WHEN xd_archiv_vorgang_id IS NULL THEN 0 ELSE xd_archiv_vorgang_id END,  
09.
xd_dok_typ, xd_verfahren, xd_eingang, xd_post_eingang, xd_dok_name, vs_name,  
10.
vs_vname, vs_hmkm, vs_bstand, vs_mglnr, vs_betr, vs_uart, vs_akz,  
11.
CASE WHEN vs_abgabe IN (' ','997') THEN '' ELSE vs_abgabe END,  
12.
pwf_ident, pwf_aktion, pwf_aktion_teil, pwf_datum_ende, pwf_datum_beginn, pwf_user_eingang,  
13.
xd_ablage_datum, xd_sammelrechnung, '', ''  
14.
from   xml_dokumente, verl_stamm, prog_work_flow, work_flow_aktion, term_zust  
15.
 
16.
where xd_az = vs_az AND tz_zust = 'xxxxxxxxxxx' 
17.
  
18.
AND (tz_sachgeb = 10 AND tz_tag2 = 0 AND tz_tag1 = day(vs_gebdat)  
19.
AND tz_monat1v <= month(vs_gebdat) AND tz_monat1b >= month(vs_gebdat)  
20.
OR tz_sachgeb = 9 AND tz_tag2 > 0 AND tz_tag1 <= day(vs_gebdat)  
21.
AND tz_tag2 >= day(vs_gebdat) AND tz_monat1v <= month(vs_gebdat)  
22.
AND tz_monat2b >= month(vs_gebdat))  
23.
AND xd_ident = pwf_vorgang_ident AND xd_verfahren = pwf_verfahren AND pwf_aktion = wa_ident  
24.
AND wa_prog_modul IS NOT NULL AND wa_prog_modul = 'prog_erf'  
25.
AND xd_ident NOT IN (SELECT dz_ident FROM dok_zust WHERE (dz_sachgeb = 10 OR dz_sachgeb = 10))  
26.
AND xd_az IS NOT NULL AND (pwf_aktion_teil IS NULL OR pwf_aktion_teil = 2)  
27.
AND (vs_abgabe IS NULL OR vs_abgabe = ' ' OR vs_abgabe <> '999' )  
28.
AND (pwf_datum_ende IS NULL OR to_char(pwf_datum_ende,'dd.mm.yyyy') = '30.05.2011')  
29.
AND xd_az NOT IN (SELECT vm_az FROM verl_sonder)
Beide Selects unterscheiden sich nur im Nutzernamen der in der mitte statt 'xxxxxxx' steht.

vg
Bitte warten ..
Mitglied: db-wizard
30.05.2011 um 15:03 Uhr
Wieviele Datensätze geben die beiden Varianten jeweils zurück ?
Bitte warten ..
Mitglied: H41mSh1C0R
30.05.2011 um 15:07 Uhr
Da wo es schnell geht 287.

Bei dem wo es "lange" (durchaus bis zu 30 Minuten) dauert ca. 150 Datensätze mehr.
Bitte warten ..
Mitglied: db-wizard
30.05.2011 um 15:11 Uhr
Das dürfte kein Problem sein. Ich glaube, du solltest einen Trace machen und via TKPROF mal anschauen, was genau gemacht wird, also mit ALTER SESSION SET SQL_TRACE = TRUE; und dann das Statement laufenlassen, am besten direkt im SQL PLUS, Du weisst wie das funktioniert ?
Bitte warten ..
Mitglied: H41mSh1C0R
30.05.2011 um 15:16 Uhr
^^ Sry leider weiß ich noch nicht wie das geht. Aber ich kann ja nur dazulernen. Aus dem SQL Developer heraus kann ich das nicht anstoßen und überprüfen?
Bitte warten ..
Mitglied: db-wizard
30.05.2011 um 16:04 Uhr
Ja, es geht auch pe SQL Developer, jedenfalls beinahe.

Ich gehe von der aktuellen Version 3.x aus


1. Connecte auf die Instanz und mache ein SQL Worksheet auf
2. Paste dort dein gewünschtes SQL hinein
3. VOR deinem SQL fügst du ALTER SESSION SET SQL_TRACE = TRUE
/
ein (mit dem Slash)
4. NACH deinem SQL : ALTER SESSION SET SQL_TRACE = FALSE
/

Lasse alle 3 Statements laufen (F5)

5. Das Tracefile findest du nun auf dem Server, in der Regel unter folgendem Pfad (Linux, bei Windows ist es ähnlich): /opt/oracle/admin/THLTST10/udump/
(THLTST10 ist meine SID)

Es sollte etwa so heissen : SID_ora_10007.trc, wobei SID dein Oacle SID ist...schaue einfach auf das aktuelle Filedatum,es sollte eh nicht allzuviel im Verzeichnis haben

6 .Kopiere dir dieses File auf deinen PC
7. Per Drag und Drop kannst du es nun direkt in den SQLDev ziehen

Hoffe das hilft
Bitte warten ..
Mitglied: H41mSh1C0R
30.05.2011 um 16:51 Uhr
Danke, ich glaube ich sollte erstmal die SQL Developer Version updaten =). Hocke hier auf dem 1.0.0.14er Stand.

Mein Kollege hat zwar das Problem bereits gelöst, durch einen Schalter bei dem Oracle die Reihenfolge wie er durch die Tabellen geht nicht selber verändern darf und schon geht das fix.

Das Problem ist das er bei den letzten Tabellen noch fts macht und deren Inhalt nimmt täglich rasant zu also früher oder später gibts an der Stelle verbesserungsbedarf.

Ich werde das mit dem Tracen dennoch ausprobieren, kann nicht schaden.

Viele Grüße

EDIT:

Die Reihenfolge scheint das Problem nur verlagert zu haben. Gelöst wurde es jetzt durch ein Analyse Table auf die Term.Zust. Somit wird das Tracen auch nichts mehr bringen, da es jetzt nun wieder rennt.
Bitte warten ..
Mitglied: db-wizard
30.05.2011 um 18:51 Uhr
Na ja, die Statistiken müssen schon da und auch aktuell sein, hatte ich weiter oben ja auch geschrieben. Im übrigen solltest du das ANALYZE TABLE nicht mehr verwenden, siehe dazu dazu folgenden Link:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:434 ...

Für folgendes Problem :

<<<<
Das Problem ist das er bei den letzten Tabellen noch fts macht und deren Inhalt nimmt täglich rasant zu also früher oder später gibts an der Stelle verbesserungsbedarf.
>>>>>

In solch einem Fall würde sich eventuell eine Partitionierung der Tabelle aufdrängen und zwar nach dem Key, nach dem in deinem Fall gesucht wird
Bitte warten ..
Mitglied: H41mSh1C0R
30.05.2011 um 19:03 Uhr
Die Statistiken werden per Job erstellt, wir haben das jetzt nur manuell für diese eine Tabelle angestoßen.

Danke für den Tipp mit dem Partitionieren das werden wir ausprobieren.

vg
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Multimedia & Zubehör
BENQ Beamer Fernbedingung Frequenz Problem (2)

Frage von xbast1x zum Thema Multimedia & Zubehör ...

Windows Server
Google Chrome Web Store Problem auf Terminal Farm

Frage von dakoerry zum Thema Windows Server ...

Multimedia & Zubehör
gelöst Problem: DVI zu VGA (8)

Frage von Protected zum Thema Multimedia & Zubehör ...

Windows Server
Problem bei Zertifikatsverlängerung auf SBS2008 (2)

Frage von Firewire zum Thema Windows Server ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...