Si vous supprimez accidentellement des données pendant le test ou si vous devez restaurer les données et tester le SQL à plusieurs reprises, vous pouvez utiliser la fonction flashback d'Oracle pour restaurer la base de données à un certain moment.
Récupérer des données à un certain moment dans le temps
-- 假设表名为 HOLIDAY
-- 开启行移动
ALTER TABLE HOLIDAY ENABLE ROW MOVEMENT;
-- 恢复数据到某一时刻
FLASHBACK TABLE HOLIDAY TO TIMESTAMP TO_TIMESTAMP('2024-01-15 08:00:00', 'yyyy-mm-dd hh24:mi:ss');
-- 关闭行移动
ALTER TABLE HOLIDAY DISABLE ROW MOVEMENT;
MOUVEMENT DES RANGS
Si le mouvement des lignes n'est pas activé, une erreur sera signalée ORA-08189: cannot flashback the table because row movement is not enabled
.
Concernant le mouvement des lignes, la réponse de ChatGPT est la suivante :
Dans la base de données Oracle, l'activation du mouvement des lignes (ROW MOVEMENT) est une option utilisée pour modifier la définition de la table. Elle permet d'effectuer des opérations spécifiques sur la table, telles que la mise à jour, la suppression et l'insertion de lignes, tout en conservant un haut degré de disponibilité de la table. Lorsque vous activez le déplacement des lignes, vous disposez de plus de flexibilité pour modifier la structure de la table, notamment pour modifier l'emplacement de stockage physique des lignes de la table.
Interroger des données à un moment donné
-- 查询某一时刻的数据
SELECT * FROM HOLIDAY AS OF TIMESTAMP TO_TIMESTAMP('2024-01-15 08:00:00', 'yyyy-mm-dd hh24:mi:ss');