Maison  >  Article  >  base de données  >  Comment modifier les enregistrements de table dans Oracle

Comment modifier les enregistrements de table dans Oracle

PHPz
PHPzoriginal
2023-04-04 09:14:341525parcourir

La base de données Oracle est actuellement le système de gestion de bases de données relationnelles le plus utilisé au monde. Elle possède des fonctions riches et une configuration flexible. Dans la base de données Oracle, les tables constituent une partie importante du stockage des données. La structure du tableau comprend les noms de colonnes, les types de colonnes, les contraintes, etc. La modification de la structure de la table est une opération de données courante, mais l'opération de modification peut avoir un certain impact sur l'intégrité et la sécurité des données. Par conséquent, une attention particulière doit être portée lors de la modification de la structure du tableau.

Afin d'enregistrer le processus de modification de la structure de la table et d'assurer l'intégrité et la traçabilité des données, la base de données Oracle propose diverses méthodes pour enregistrer les modifications de la table. Cet article présentera les méthodes suivantes pour modifier la table d'enregistrement.

  1. Oracle Flashback Table
    Oracle Flashback Table est une fonctionnalité avancée d'Oracle qui peut restaurer l'état historique d'une table ou annuler les modifications de données à un moment précis. Avant d'utiliser Flashback Table, vous devez activer les journaux Oracle pour enregistrer les modifications apportées à la table. Lors de l'exécution d'une opération de mise à jour ou de suppression, le système enregistrera les données avant de modifier l'espace table d'annulation. Flashback Table peut utiliser ces informations d'annulation pour restaurer l'état de la table au même état qu'avant la modification.

Flashback Table a été lancé dans la version Oracle10g, il nécessite l'autorisation SYSTEM pour s'exécuter. Avant d'exécuter Flashback Table, vous pouvez utiliser l'instruction suivante pour demander quelles tables ont la journalisation activée dans la base de données :

SELECT LOG_MODE FROM V$DATABASE;

Si le résultat de la requête est "ARCHIVELOG", cela signifie que la journalisation est activée dans la base de données.

Lorsque vous utilisez Flashback Table, vous devez faire attention aux points suivants :

  • Flashback Table ne peut restaurer que les opérations de mise à jour et de suppression, mais ne peut pas restaurer les modifications de la structure de la table.
  • Flashback Table utilise l'espace table d'annulation. Si l'espace table d'annulation est insuffisant, l'historique des modifications ne peut pas être enregistré.
  • Flashback Table ne peut pas récupérer les données supprimées par la commande truncate, car cette commande effacera l'espace table d'annulation.
  1. Oracle Trigger
    Oracle Trigger déclenche des actions spécifiées avant et après l'insertion, la mise à jour ou la suppression d'une table. Vous pouvez créer un déclencheur pour enregistrer l'historique des opérations sur la table. En créant des déclencheurs avant insertion, avant mise à jour et avant suppression sur la table, les données avant modification sont enregistrées. Dans les déclencheurs après insertion, après mise à jour et après suppression, les données modifiées sont enregistrées.

Ce qui suit est un exemple de déclencheur qui enregistre l'historique des modifications de la table étudiant :

CREATE TABLE STUDENT_HISTORY (
    ID INT PRIMARY KEY,
    OPERATION_TYPE VARCHAR(10) NOT NULL,
    OPERATE_TIME DATE NOT NULL,
    NAME VARCHAR2(50) NOT NULL,
    AGE INT NOT NULL,
    SEX VARCHAR2(10) NOT NULL,
    GRADE VARCHAR2(20) NOT NULL,
    REMARKS VARCHAR2(100)
);

CREATE OR REPLACE TRIGGER STUDENT_HISTORY_TRG
BEFORE DELETE OR UPDATE OR INSERT ON STUDENT
FOR EACH ROW
BEGIN
    IF DELETING THEN
        INSERT INTO STUDENT_HISTORY (ID, OPERATION_TYPE, OPERATE_TIME, NAME, AGE, SEX, GRADE, REMARKS)
        VALUES (:OLD.ID, 'DELETE', SYSDATE, :OLD.NAME, :OLD.AGE, :OLD.SEX, :OLD.GRADE, :OLD.REMARKS);
    ELSIF UPDATING THEN
        INSERT INTO STUDENT_HISTORY (ID, OPERATION_TYPE, OPERATE_TIME, NAME, AGE, SEX, GRADE, REMARKS)
        VALUES (:OLD.ID, 'UPDATE', SYSDATE, :NEW.NAME, :NEW.AGE, :NEW.SEX, :NEW.GRADE, :NEW.REMARKS);
    ELSIF INSERTING THEN
        INSERT INTO STUDENT_HISTORY (ID, OPERATION_TYPE, OPERATE_TIME, NAME, AGE, SEX, GRADE, REMARKS)
        VALUES (:NEW.ID, 'INSERT', SYSDATE, :NEW.NAME, :NEW.AGE, :NEW.SEX, :NEW.GRADE, :NEW.REMARKS);
    END IF;
END;

Ce déclencheur enregistre l'historique des modifications de la table étudiant dans la table STUDENT_HISTORY. Lors de l'exécution d'opérations d'insertion, de mise à jour et de suppression, Trigger enregistrera le type d'opération, la durée de l'opération, le nom de l'étudiant, son âge, son sexe, sa note et ses remarques.

Les avantages de l'utilisation de Trigger pour enregistrer l'historique des modifications sont :

  • Trigger peut enregistrer les modifications apportées à la structure de la table, ainsi que les opérations d'insertion, de mise à jour, de suppression et autres ;
  • Trigger peut enregistrer des données avant et après la modification, c'est-à-dire ; , le processus de modification des données peut être retracé ;
  • Trigger peut personnaliser le contenu et la méthode d'enregistrement et est très flexible.

Cependant, l'utilisation de Trigger présente certains inconvénients :

  • Trigger affectera les performances de la base de données ;
  • Vous devez écrire du code PL/SQL complexe, et s'il y a un problème avec le code, l'intégrité des données peut être affectée.
  1. Oracle AUDIT
    Oracle AUDIT est une fonction d'audit au niveau de la base de données qui peut enregistrer l'historique des opérations des utilisateurs de la base de données. La fonctionnalité AUDIT comprend une bande-annonce d'audit globale et plusieurs options de stratégie. Les utilisateurs peuvent contrôler le comportement de journalisation en définissant des options de stratégie. AUDIT est déjà intégré à la base de données Oracle et ne nécessite aucune installation supplémentaire.

Ce qui suit est une stratégie AUDIT qui enregistre les opérations d'insertion, de mise à jour et de suppression de l'utilisateur sur la table EMPLOYEES :

AUDIT INSERT, UPDATE, DELETE ON EMPLOYEES BY SESSION;

Cette instruction enregistrera les opérations d'insertion, de mise à jour et de suppression de l'utilisateur sur la table EMPLOYEES. PAR SESSION signifie enregistrer l’opération effectuée par quelle session. Vous pouvez utiliser l'instruction suivante pour vérifier l'état activé de l'audit :

SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='HR' AND OBJ_NAME='EMPLOYEES';

L'avantage d'utiliser AUDIT pour enregistrer l'historique des modifications de table est :

  • Audit peut enregistrer l'historique global des opérations utilisateur de la base de données, y compris la modification de la structure de la table, l'insertion , mise à jour, suppression et autres opérations ;
  • Les données d'audit peuvent être facilement extraites et analysées
  • Pas besoin d'écrire du code supplémentaire ;

Cependant, AUDIT a également certaines limites :

  • AUDIT est implémenté au niveau de la base de données, il ne peut donc pas enregistrer le processus d'exécution des instructions SQL ;
  • AUDIT a des restrictions sur le format des données enregistrées et n'est pas assez flexible ;
  • AUDIT affectera les performances de la base de données et aura un certain impact.
    Oracle Database Change Management Pack
  1. Oracle Database Change Management Pack est un outil de gestion de base de données enfichable qui peut gérer et auditer les modifications de la base de données. Database Change Management Pack génère et stocke une documentation sur les modifications de haute qualité, des informations de piste d'audit et des rapports de modifications.
Database Change Management Pack permet aux utilisateurs d'avoir une image complète de l'état des modifications de la base de données, notamment :

  • L'historique des modifications des objets de la base de données ;
  • L'identité de la personne qui l'a modifié ainsi que l'heure et la date de l'opération ;
  • Un document et un artefact modifiés.

Dans le Database Change Management Pack, les utilisateurs peuvent spécifier les objets et les options de stratégie qui doivent être audités et générer des données de suivi des modifications. Il peut également générer automatiquement une documentation et des artefacts sur les modifications et effectuer des audits après chaque modification de la base de données.

Les avantages de l'utilisation du Database Change Management Pack sont les suivants :

  • Database Change Management Pack peut enregistrer toutes les modifications de la base de données, y compris les opérations DDL et les modifications des données.
  • Peut générer des documents de modification et des rapports d'audit pour faciliter les audits de sécurité et le dépannage ; Peut détecter automatiquement la standardisation et l'exhaustivité des modifications de la base de données.
  • Cependant, le Database Change Management Pack présente également certains inconvénients :

nécessite un achat supplémentaire et le coût est plus élevé
  • nécessite une certaine quantité de temps et d'énergie pour la configuration et la gestion ;
  • Résumé :
Oracle est actuellement la base de données la plus utilisée au monde. Elle fournit une variété de méthodes pour enregistrer l'historique des modifications de table, notamment Flashback Table, Trigger, AUDIT et Database Change Management Pack. Chacune de ces méthodes présente des avantages et des inconvénients, et les utilisateurs doivent les choisir et les utiliser en fonction de circonstances spécifiques.


Lors de la modification de la structure du tableau, vous devez être très prudent pour éviter d'affecter l'intégrité et la sécurité des données. Si des données importantes sont enregistrées dans la base de données, il est recommandé de sauvegarder les données avant de les modifier. L'enregistrement en temps opportun de l'historique des modifications des tables et la réalisation d'audits sont très efficaces pour garantir l'intégrité et la sécurité des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn