diff --git a/CHANGELOG.md b/CHANGELOG.md
index fd320e6aac10130d94449223498daa6d3331f450..8cf512b1e47d8dfc4b198d350eb3794aaab74e87 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+1.2.0 (20/02/2025)
+------------------
+
+- Oracle : Build des indexs à l'update-bdd
+- Meilleure gestion des managers compilables
+- Refactorisation de l'exécution des requêtes collectées (interne)
+
+
 1.1.2 (07/02/2025)
 ------------------
 
diff --git a/src/Bdd.php b/src/Bdd.php
index 4707b45276100592bb38efc5021a35831605e441..7779988982103ab106919a30e24bb5b1b0a6bebb 100644
--- a/src/Bdd.php
+++ b/src/Bdd.php
@@ -503,12 +503,12 @@ class Bdd
     {
         if (is_string($object)) {
             [$schema, $name] = Util::explodedFullObjectName($object);
-        }else{
-            if (isset($object['name'])){
+        } else {
+            if (isset($object['name'])) {
                 throw new BddException('Propriété d\'objet "name" non fournie');
             }
             $schema = $object['schema'] ?? null;
-            $name = $object['name'];
+            $name   = $object['name'];
         }
 
         return Util::fullObjectName($schema, $name);
@@ -789,16 +789,7 @@ class Bdd
                     $queries = $this->alterDdlObject($manager, $action, [], $ddl[$ddlName]);
                     if ($queries) {
                         $this->logBegin($label);
-                        foreach ($queries as $query => $desc) {
-                            $this->logMsg($desc);
-                            try {
-                                $this->exec($query);
-                            } catch (BddCompileException $e) {
-                                // ne rien faire => trité après
-                            } catch (\Throwable $e) {
-                                $this->logError($e);
-                            }
-                        }
+                        $this->execQueries($queries);
                         $this->logEnd();
                     }
                 }
@@ -808,6 +799,22 @@ class Bdd
 
 
 
+    public function execQueries(array $queries): void
+    {
+        foreach ($queries as $query => $desc) {
+            $this->logMsg($desc);
+            try {
+                $this->exec($query);
+            } catch (BddCompileException $e) {
+                // ne rien faire => trité après
+            } catch (\Throwable $e) {
+                $this->logError($e);
+            }
+        }
+    }
+
+
+
     public function alter(Bdd|Ddl|array $ddl, DdlFilters|array $filters = []): void
     {
         $filters = DdlFilters::normalize($filters);
@@ -834,16 +841,7 @@ class Bdd
                     $queries = $this->alterDdlObject($manager, $action, $manager->get($objectFilter), $objectDdl);
                     if ($queries) {
                         $this->logBegin($label);
-                        foreach ($queries as $query => $desc) {
-                            $this->logMsg($desc);
-                            try {
-                                $this->exec($query);
-                            } catch (BddCompileException $e) {
-                                // ne rien faire => traité après
-                            } catch (\Throwable $e) {
-                                $this->logError($e);
-                            }
-                        }
+                        $this->execQueries($queries);
                         $this->logEnd();
                     }
                 }
@@ -870,14 +868,7 @@ class Bdd
                         $queries = $this->alterDdlObject($manager, 'drop', $ddl, []);
                         if ($queries) {
                             $this->logBegin($label);
-                            foreach ($queries as $query => $desc) {
-                                $this->logMsg($desc);
-                                try {
-                                    $this->exec($query);
-                                } catch (\Throwable $e) {
-                                    $this->logError($e);
-                                }
-                            }
+                            $this->execQueries($queries);
                             $this->logEnd();
                         }
                     }
@@ -1132,40 +1123,38 @@ class Bdd
 
 
 
-    public function compilerTout(): array
+    public function compilerTout(): void
     {
-        $compileTypes = [Ddl::PACKAGE, Ddl::VIEW, Ddl::TRIGGER];
-        $managers     = [];
-        foreach ($compileTypes as $compileType) {
-            $manager = $this->manager($compileType);
+        /** @var CompilableInterface[] $compilables */
+        $compilables = [];
+
+        // Récupération de la liste des managers compilables
+        $managers = $this->managerList();
+        foreach ($managers as $name => $null) {
+            $manager = $this->manager($name);
             if ($manager instanceof CompilableInterface) {
-                $managers[$compileType] = $manager;
+                $compilables[$name] = $manager;
             }
         }
 
-        $errors = [];
-
-        if ($managers) {
-
-            $this->logBegin("Compilation de tous les objets de la BDD");
+        // S'il n'y en a pas on ne fait rien
+        if (empty($compilables)) {
+            return;
+        }
 
-            foreach ($managers as $compileType => $manager) {
-                $list = $manager->getList();
-                foreach ($list as $name) {
-                    try {
-                        $this->logMsg("Compilation de $name ...", true);
-                        $manager->compiler($name);
-                    } catch (BddCompileException $e) {
-                        $errors[$compileType][$name] = $e->getMessage();
-                        $this->logError($compileType . ' ' . $name . ' : Erreur de compilation');
-                    }
-                }
-            }
-            $this->logEnd("Fin de la compilation");
+        $this->logBegin("Compilation de tous les objets de la BDD");
+        $this->queryCollect = true;
 
+        $this->queries = [];
+        foreach ($compilables as $managerName => $manager) {
+            $manager->compilerTout();
+            $this->execQueries($this->queries);
+            $this->queries = [];
+            $this->logMsg(" ");
         }
 
-        return $errors;
+        $this->queryCollect = false;
+        $this->logEnd("Fin de la compilation");
     }
 
 
diff --git a/src/Driver/Oracle/IndexManager.php b/src/Driver/Oracle/IndexManager.php
index 966b7eb033b321dedbf76fa998d4b53d4c376cc2..cd6b0d82894b4ffe27b0f0f49718806f937688fc 100644
--- a/src/Driver/Oracle/IndexManager.php
+++ b/src/Driver/Oracle/IndexManager.php
@@ -3,10 +3,11 @@
 namespace Unicaen\BddAdmin\Driver\Oracle;
 
 use Unicaen\BddAdmin\Manager\AbstractManager;
+use Unicaen\BddAdmin\Manager\CompilableInterface;
 use Unicaen\BddAdmin\Manager\IndexManagerInterface;
 use Unicaen\BddAdmin\Ddl\DdlFilter;
 
-class IndexManager extends AbstractManager implements IndexManagerInterface
+class IndexManager extends AbstractManager implements IndexManagerInterface, CompilableInterface
 {
     public function getList(?string $name = null): array
     {
@@ -146,4 +147,24 @@ class IndexManager extends AbstractManager implements IndexManagerInterface
         $this->addQuery($sql, 'Renommage de l\'index ' . $oldName . ' en ' . $newName);
     }
 
+
+
+    public function compiler(string|array $name): void
+    {
+        if ($this->sendEvent()->getReturn('no-exec')) return;
+
+        if (is_array($name)) $name = $name['name'];
+
+        $this->addQuery("ALTER INDEX $name REBUILD", 'Reconstruction de l\'index ' . $name);
+    }
+
+
+
+    public function compilerTout(): void
+    {
+        $objects = $this->getList();
+        foreach ($objects as $object) {
+            $this->compiler($object);
+        }
+    }
 }
\ No newline at end of file