=====Oracle Parallel SQL - Warum funktioniert in meiner Session Parallel nicht? Was muss geprüft werden?===== Problem: Trotz aller Datenbank üblichen Default Einstellungen auf einer EE Edition DB funktioniert in der User Session Parallel nicht automatisch. Lösung: In folgender Reihenfolge prüfen ob nicht andere DB Features die eigene User Session einschränken: * Ist generell die Datenbank bzgl. Parallel Einstellungen so konfiguriert das auch Parallel nutzbar ist? * Sind die notwendigen Statistiken der DB dafür vorhanden? * Ist für die verwendeten Tabelle und Indexe Parallel konfiguriert (Spalte DEGREE > 1) * Welches Profil hat das Schema und ist in dem zugeordneten Profil Parallel eingeschränkt? * Skript => https://github.com/gpipperr/OraPowerShell/blob/master/Ora_SQLPlus_SQLcL_sql_scripts/profile.sql * Welche Ressource Gruppe ist dem User zugeordnet und ist in dieser Ressource Gruppe Parallel eingeschränkt? * Welcher Ressource Plan ist in der DB aktiv und ist die dem User zugeordnete Gruppe im Plan enthalten? * Skript => https://github.com/gpipperr/OraPowerShell/blob/master/Ora_SQLPlus_SQLcL_sql_scripts/resource_manager.sql * In welcher Ressource Gruppe landet der User nach dem Login? * Skript => https://github.com/gpipperr/OraPowerShell/blob/master/Ora_SQLPlus_SQLcL_sql_scripts/resource_manager_sessions.sql * Wie ist die Zuordnung des Ressourcen Plan zu Gruppe zu User in der DB konfiguriert? Über Service Name, über Schema oder anderen Ressource Manager Einstellungen? * Scheint alles in der Basis zu passen, Optimizer Trace anlegen und nach der Ursache suchen. * siehe => [[dba:oracle_optimizer_trace|Einen Trace File vom Optimizer beim Erzeugen eines Plan anlegen]] In meine konkrekten Problem Falls was es am Ende tatsächlich die Ressource Manager Gruppen Zuordnung. Bei einer Migration einer SE Edition DB per Full Import auf eine ExaDATA EE muss dann am Ende noch der Ressourcen Manager gepflegt und nach justiert werden um diese Effekte zu vermeiden! ---- ==== ADOP und CALIBRATE IO ==== Vor 12 muss über DBMS_RESOURCE_MANAGER.CALIBRATE_IO ein Wert in der DB hinterlegt sein, sonst funktioniert es gar nicht. SELECT * FROM sys.RESOURCE_IO_CALIBRATE$ siehe Skript für 11g => https://github.com/gpipperr/OraPowerShell/blob/master/Ora_SQLPlus_SQLcL_sql_scripts/calibrate_io.sql Ab 12 sind Default Werte hinterlegt: select OPERATION_NAME, DEFAULT_VALUE from V$OPTIMIZER_PROCESSING_RATE where OPERATION_NAME in ('IO_BYTES_PER_SEC','CPU_BYTES_PER_SEC', 'CPU_ROWS_PER_SEC'); siehe Dazu "Do You Need IO Calibrate Statistics for AUTO DOP in 12C ? (Doc ID 1963310.1)" und "How To Use Optimizer Processing Rate Statistics (Doc ID 2253387.1)" Ab 12c sollte DBMS_RESOURCE_MANAGER.CALIBRATE_IO nicht mehr ausgeführt werden. ---- === Was ist in meiner Session aktiv ==== Prüfen welche aktuellen Einstellungen bzgl. Parallel in meiner Session aktiv sind: select name, value from v$ses_optimizer_env where name in ('parallel_degree_limit','parallel_max_degree') and sid=(select sid from v$mystat where rownum=1); parallel_degree_limit 65535 parallel_max_degree 1 Seht der Session Parameter "parallel_max_degree" auf "1" wird der Optimzier keine Parallen Plan automatisch wählen! ---- ==== Quellen ==== Parallel allgemein: * https://www.doag.org/formes/pubfiles/7341367/2015-K-DB-Joel_Goodman-Oracle_Automatic_Parallel_Execution-Praesentation.pdf * https://www.oracle.com/technetwork/database/bi-datawarehousing/twp-parallel-execution-fundamentals-133639.pdf Support Portal: * Setup, Monitor, And Tune Parallelism In The Database (Doc ID 1549214.1)