Informations générales
En général, la modification du schéma d'une table nécessite son verrouillage, ce qui bloque les requêtes métier. Pour résoudre ce problème, ODC V4.2.0 et versions ultérieures proposent la fonctionnalité de modification de schéma sans verrouillage. Cette rubrique explique comment soumettre un ticket pour exécuter une tâche de modification de schéma sans verrouillage.
Mécanisme technique
Créez une table temporaire.
Modifiez le schéma de la table temporaire.
Copiez toutes les données.
Synchronisez les données incrémentielles.
Vérifiez la cohérence des données.
Interrompez la session.
Basculez vers la nouvelle table.
Processus d'exécution

Initiez un ticket de modification de schéma sans verrouillage.
Effectuez une vérification préalable de l'instruction SQL saisie.
Approuvez le processus de la tâche.
Exécutez la tâche de modification de schéma sans verrouillage.
Opérations prises en charge pour les modifications de schéma sans verrouillage
Catégorie | Opération | Prise en charge ? | Remarques |
Opérations sur les colonnes | Modifier le type de colonne | ✔️ | - |
Réorganiser les colonnes (pour déplacer une colonne avant ou après une autre, ou en première position) | ✔️ | - | |
Modifier le jeu de caractères | ✔️ | - | |
Renommer les colonnes | ❌ | - | |
Ajouter des colonnes | ✔️ | - | |
Supprimer des colonnes | ❌ | - | |
Ajouter des colonnes de clé primaire | ❌ | - | |
Clés primaires | Ajouter une clé primaire | ✔️ | La table cible doit disposer d'une clé unique non nulle. |
Modifier une clé primaire | ✔️ | La table cible doit disposer d'une clé unique non nulle. | |
Supprimer une clé primaire | ✔️ | La table cible doit disposer d'une clé unique non nulle. | |
Partitions | Supprimer des partitions | ✔️ | - |
Tronquer des partitions | ✔️ | - | |
Repartitionner une table | ✔️ | - | |
Convertir une table non partitionnée en table partitionnée | ✔️ | - |
Considérations
Assurez-vous que la base de données dispose d'un espace disque suffisant.
La table contient une clé primaire ou une clé unique non nulle, et ne contient pas de clé étrangère.
Si vous exécutez d'autres opérations DDL sur une table faisant l'objet d'une tâche de modification de schéma sans verrouillage, la tâche échouera.
Le nom de la table ne doit pas dépasser 54 caractères en mode MySQL d'OceanBase Database.
Lorsque ODC se connecte à une instance d'OceanBase Database Community Edition, les informations de configuration de la source de données doivent contenir le nom du cluster et un compte de locataire sys.
Dans le mode MySQL d'OceanBase Database antérieur à la version V4.3.0, ODC verrouille l'utilisateur et ferme la session pour empêcher l'écriture de données lors du basculement du nom de la table.
Si vous exécutez d'autres opérations DDL sur une table faisant l'objet d'une tâche de modification de schéma sans verrouillage, la tâche échouera.
Procédure
Créer une tâche de modification de schéma sans verrouillage
Cette rubrique utilise OceanBase Community Edition et Enterprise Edition d'OMS comme exemples, illustrant le scénario de modification du type de colonne de birth dans la table student en date. Le nom du projet utilisé dans cet exemple est odc_4.2.0, le nom de la base de données est odc_test et le nom de la table est student.
-
Dans la fenêtre SQL, rédigez une instruction SQL pour créer une table nommée student dans la base de données odc_test.

CREATE TABLE `odc_test`.`student` ( `name` varchar(120) NULL, `id` int NOT NULL, `birthday` date NULL, `create_time` date NULL, CONSTRAINT `key_id` PRIMARY KEY (`id`) ) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci PARTITION BY RANGE(`id`) ( PARTITION `p1` VALUES LESS THAN (10000), PARTITION `p2` VALUES LESS THAN (20000) ); -
Créez une tâche de modification de schéma sans verrouillage.
a. Dans l'onglet Ticket , choisissez Lock-free Schema Change > Create New.

b. Dans le panneau Create Online Schema Change, configurez les paramètres suivants.

Paramètre
Description
Base de données
Sélectionnez la base de données à laquelle appartient la tâche de modification de base de données.
Lock User
Si vous spécifiez le verrouillage d'un utilisateur, ODC verrouillera le compte de base de données spécifié et fermera toutes les sessions de ce compte avant le basculement du nom de la table. Cela permet de réduire l'impact sur les activités tout en garantissant la cohérence des données lors du basculement du nom de la table.
Si aucun compte n'est spécifié, ODC ne verrouillera aucun compte ni ne fermera aucune session. Dans ce cas, vous devez garantir manuellement la cohérence des données lors du basculement du nom de la table.
RemarqueVous ne pouvez pas exécuter simultanément les tâches de modification de schéma sans verrouillage d'une table et de sa table associée.
Change Definition
CREATE TABLE : Si d'autres syntaxes ne sont pas prises en charge dans OceanBase Database, vous devez utiliser l'instruction CREATE.
ALTER TABLE : Dans OceanBase Database V4.0.0 et versions ultérieures, vous pouvez utiliser l'instruction ALTER en mode ALTER TABLE OFFLINE.
SQL Content
Saisissez le script SQL dans la section d'édition.
Switch Table Settings
Basculez vers la table cible après vérification de la cohérence des données.
Table Locking Timeout Period : La table est verrouillée pendant le basculement. Si le basculement n'est pas terminé dans le délai imparti, il échoue.
Retries : Si le basculement n'est pas terminé dans le délai spécifié, une nouvelle tentative peut être lancée automatiquement.
Cleanup Strategy for Source Table Upon Completion : Vous pouvez sélectionner Renaming tasks are not handled pour renommer la table source sans la supprimer, ou sélectionner Delete Now pour supprimer la table source une fois la tâche de modification de schéma sans verrouillage terminée.
Task Settings
Sélectionnez Execute Now ou Scheduled Execution.
L'outil de modification de schéma sans verrouillage propose deux méthodes de gestion des erreurs :
Abort Task : Il s'agit de l'option par défaut. Lorsque vous sélectionnez cette option, la tâche est abandonnée si une erreur se produit lors de l'exécution du script.
Ignore Error and Continue : Lorsque vous sélectionnez cette option, le système ignore l'instruction erronée où une erreur s'est produite et continue d'exécuter les autres instructions du script.
Sélectionnez Automatic Switch ou Manual Switch.
Remarques
Facultatif. Informations supplémentaires sur la tâche, dont la longueur ne doit pas dépasser 200 caractères.
c. Cliquez sur Create.
d. Une fois la tâche de modification de schéma sans verrouillage générée, choisissez Tickets > Lock-free Schema Change et consultez les informations de la tâche dans la liste des tâches.
Consulter une tâche de modification de schéma sans verrouillage
Consulter les informations de la tâche
Dans la liste des tâches de modification de schéma sans verrouillage de l'onglet Ticket , cliquez sur View dans la colonne Actions de la tâche cible.
Dans le panneau Task Details , cliquez sur l'onglet Task Information pour consulter la base de données, le type, le niveau de risque, le contenu SQL et l'instruction de rollback de la tâche.
Cliquez sur Initiate Again pour lancer à nouveau la tâche de modification de schéma sans verrouillage.
Consulter le processus de la tâche
Dans le panneau Task Details , cliquez sur l'onglet Task Process et consultez des informations telles que le statut d'initiation de la tâche, le statut d'approbation, le statut d'exécution et le résultat de l'exécution.
Consulter les journaux d'exécution
Dans le panneau Task Details , cliquez sur l'onglet Execution Records pour consulter les instructions DDL des nouvelles tables et des tables sources.
Consulter les journaux de la tâche
Dans le panneau Task Details , cliquez sur l'onglet Task Logs pour consulter tous les journaux et les journaux d'alerte de la tâche.
Onglet | Description |
All Logs | Affiche les informations complètes de tous les journaux de tâche, y compris les journaux INFO, ERROR et WARN . Vous pouvez cliquer sur Search, Download ou Copy pour rechercher, télécharger ou copier tous les journaux. |
Alert Logs | Affiche les journaux ERROR et WARN de la tâche. Lorsqu'une tâche échoue, vous pouvez afficher le message d'erreur dans les journaux d'alerte. Vous pouvez cliquer sur Search, Download ou Copy pour rechercher, télécharger ou copier les journaux d'alerte. |