>데이터 베이스 >Oracle >오라클에서 테이블 레코드를 수정하는 방법

오라클에서 테이블 레코드를 수정하는 방법

PHPz
PHPz원래의
2023-04-04 09:14:341588검색

Oracle 데이터베이스는 현재 전 세계에서 가장 널리 사용되는 관계형 데이터베이스 관리 시스템으로, 풍부한 기능과 유연한 구성을 갖추고 있습니다. Oracle 데이터베이스에서 테이블은 데이터 저장의 중요한 부분입니다. 테이블의 구조에는 열 이름, 열 유형, 제약 조건 등이 포함됩니다. 테이블 구조를 수정하는 것은 일반적인 데이터 작업이지만 수정 작업은 데이터의 무결성과 보안에 특정 영향을 미칠 수 있습니다. 따라서 테이블 구조를 수정할 때는 특별한 주의가 필요합니다.

테이블 구조의 수정 과정을 기록하고 데이터의 무결성과 추적성을 보장하기 위해 오라클 데이터베이스는 테이블 수정 사항을 기록하는 다양한 방법을 제공합니다. 이 기사에서는 레코드 테이블을 수정하는 다음 방법을 소개합니다.

  1. Oracle Flashback Table
    Oracle Flashback Table은 특정 시점에 테이블의 기록 상태를 복원하거나 데이터 변경 사항을 취소할 수 있는 Oracle의 고급 기능입니다. Flashback Table을 사용하기 전에 Oracle 로그를 활성화하여 테이블 수정 사항을 기록해야 합니다. 업데이트 또는 삭제 작업을 수행할 때 시스템은 실행 취소 테이블스페이스에 수정되기 전의 데이터를 기록합니다. Flashback Table은 이 undo 정보를 이용하여 테이블의 상태를 수정 전과 동일한 상태로 롤백할 수 있습니다.

Flashback Table은 Oracle10g 버전에서 출시되었으며 실행하려면 SYSTEM 권한이 필요합니다. Flashback Table을 실행하기 전에 다음 명령문을 사용하여 데이터베이스에서 어떤 테이블에 로깅이 활성화되어 있는지 쿼리할 수 있습니다.

SELECT LOG_MODE FROM V$DATABASE;

쿼리 결과가 "ARCHIVELOG"이면 데이터베이스에 로깅이 활성화되어 있다는 의미입니다.

Flashback Table을 사용할 때 다음 사항에 주의해야 합니다.

  • Flashback Table은 업데이트 및 삭제 작업만 복원할 수 있으며, 테이블 구조 수정 사항은 복원할 수 없습니다.
  • 플래시백 테이블은 언두 테이블 공간을 사용합니다. 언두 테이블 공간이 부족할 경우 수정 내역을 기록할 수 없습니다.
  • 플래시백 테이블은 truncate 명령으로 삭제된 데이터를 복구할 수 없습니다. 이 명령은 실행 취소 테이블 공간을 지우기 때문입니다.
  1. Oracle Trigger
    Oracle Trigger는 테이블 삽입, 업데이트 또는 삭제 전후에 지정된 작업을 트리거합니다. 트리거를 생성하여 테이블 작업 내역을 기록할 수 있습니다. 테이블에 삽입 전, 업데이트 전, 삭제 전 트리거를 생성하여 수정 전의 데이터를 기록합니다. 삽입 후, 업데이트 후, 삭제 트리거 후에 수정된 데이터가 기록됩니다.

다음은 학생 테이블의 수정 내역을 기록하는 트리거의 예입니다.

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;

이 트리거는 학생 테이블의 수정 내역을 STUDENT_HISTORY 테이블에 기록합니다. 삽입, 업데이트, 삭제 작업을 수행할 때 Trigger는 작업 유형, 작업 시간, 학생 이름, 나이, 성별, 성적 및 비고 사항을 기록합니다.

Trigger를 사용하여 수정 내역을 기록하면 다음과 같은 이점이 있습니다.

  • Trigger는 테이블 구조에 대한 수정 사항은 물론 삽입, 업데이트, 삭제 및 기타 작업도 기록할 수 있습니다.
  • Trigger는 수정 전후의 데이터를 기록할 수 있습니다. , 데이터 변경 프로세스를 추적할 수 있습니다.
  • 트리거는 기록 내용과 방법을 사용자 정의할 수 있으며 매우 유연합니다.

그러나 Trigger를 사용하면 몇 가지 단점이 있습니다.

  • Trigger는 데이터베이스 성능에 영향을 미칩니다.
  • 복잡한 PL/SQL 코드를 작성해야 하며, 코드에 문제가 있으면 데이터 무결성에 영향을 줄 수 있습니다.
  1. Oracle AUDIT
    Oracle AUDIT는 데이터베이스 사용자 작업 내역을 기록할 수 있는 데이터베이스 수준 감사 기능입니다. AUDIT 기능에는 글로벌 감사 트레일러와 여러 정책 옵션이 포함되어 있습니다. 사용자는 정책 옵션을 설정하여 로깅 동작을 제어할 수 있습니다. AUDIT는 이미 Oracle 데이터베이스에 내장되어 있으므로 추가 설치가 필요하지 않습니다.

다음은 EMPLOYEES 테이블에 대한 사용자의 삽입, 업데이트 및 삭제 작업을 기록하는 AUDIT 전략입니다.

AUDIT INSERT, UPDATE, DELETE ON EMPLOYEES BY SESSION;

이 문은 EMPLOYEES 테이블에 대한 사용자의 삽입, 업데이트 및 삭제 작업을 기록합니다. BY SESSION은 어떤 세션에서 수행된 작업을 기록하는 것을 의미합니다. 다음 명령문을 사용하여 Audit 활성화 상태를 확인할 수 있습니다.

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

AUDIT를 사용하여 테이블 수정 내역을 기록하면 다음과 같은 이점이 있습니다.

  • Audit은 테이블 구조 수정, 삽입, 삽입 등 데이터베이스의 전역 사용자 작업 내역을 기록할 수 있습니다. , 업데이트, 삭제 및 기타 작업
  • 감사 데이터를 쉽게 추출하고 분석할 수 있습니다.
  • 추가 코드를 작성할 필요가 없습니다.
그러나 AUDIT에는 몇 가지 제한 사항도 있습니다.

    AUDIT는 데이터베이스 수준에서 구현되므로 SQL 문의 실행 프로세스를 기록할 수 없습니다.
  • AUDIT는 기록되는 데이터 형식에 제한이 있으며 충분히 유연하지 않습니다.
  • AUDIT는 데이터베이스 성능에 영향을 미치며 특정 영향을 미칩니다.
Oracle 데이터베이스 변경 관리 팩
    Oracle 데이터베이스 변경 관리 팩은 데이터베이스 변경 사항을 관리하고 감사할 수 있는 플러그형 데이터베이스 관리 도구입니다. 데이터베이스 변경 관리 팩은 고품질 변경 문서, 감사 추적 정보 및 변경 보고서를 생성하고 저장합니다.

  1. 데이터베이스 변경 관리 팩을 사용하면 사용자는 다음을 포함하여 데이터베이스 변경 상태를 전체적으로 파악할 수 있습니다.
  • 데이터베이스 개체의 변경 내역
  • 수정한 사람의 신원 및 작업 날짜
  • 변경된 문서 및 유물.

Database Change Management Pack에서 사용자는 감사해야 하는 개체 및 정책 옵션을 지정하고 변경 내용 추적 데이터를 생성할 수 있습니다. 또한 변경 문서와 아티팩트를 자동으로 생성하고 각 데이터베이스 변경 후에 감사를 수행할 수도 있습니다.

데이터베이스 변경 관리 팩 사용의 장점은 다음과 같습니다.

  • 데이터베이스 변경 관리 팩은 DDL 작업 및 데이터 수정을 포함한 모든 데이터베이스 변경 사항을 기록할 수 있습니다.
  • 보안 감사 및 문제 해결을 용이하게 하기 위해 변경 문서 및 감사 보고서를 생성할 수 있습니다. 데이터베이스 변경의 표준화 및 완전성을 자동으로 감지할 수 있습니다.
  • 그러나 데이터베이스 변경 관리 팩에는 몇 가지 단점도 있습니다.

추가 구매가 필요하고 비용이 더 높습니다.
  • 구성 및 관리에 일정량의 시간과 에너지가 필요합니다.
  • 요약:
Oracle은 현재 세계에서 가장 널리 사용되는 데이터베이스이며 Flashback Table, Trigger, AUDIT 및 Database Change Management Pack을 포함하여 테이블 수정 내역을 기록하는 다양한 방법을 제공합니다. 이들 방법 각각에는 장단점이 있으며, 사용자는 특정 상황에 따라 이를 선택하여 사용해야 합니다.


테이블 구조를 수정할 때 데이터의 무결성과 보안에 영향을 주지 않도록 각별히 주의해야 합니다. 데이터베이스에 중요한 데이터가 저장되어 있는 경우, 데이터 수정 전 백업을 권장합니다. 테이블 수정 내역을 적시에 기록하고 감사를 수행하는 것은 데이터 무결성과 보안을 보장하는 데 매우 효과적입니다.

위 내용은 오라클에서 테이블 레코드를 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.