본문 바로가기
정보관리(데이터베이스, DB)/DB

tibero에서 테이블에 데이터가 입력되는 시간 또는 순서를 기준으로 추적하고 싶다. 쿼리문으로 정보를 추적할 수 있나?

by 3604 2025. 10. 27.
728x90
Tibero는 기본적으로 데이터가 삽입된 시간이나 순서를 추적하는 기능을 제공하지 않습니다.
즉, 테이블에 INSERT된 시점을 나중에 쿼리로 확인하려면, 사전에 별도의 컬럼을 추가해두지 않은 이상에는 절대로 알 수 없습니다. 이는 Oracle, SQL Server, PostgreSQL 등 대부분의 RDBMS에서도 동일한 원칙입니다.

🔍 왜 그런가요?

  • 테이블은 기본적으로 "순서"라는 개념이 없습니다.
  • ROWID, SEQUENCE, IDENTITY 컬럼 등은 삽입 순서를 보장하지 않습니다.
    • 예를 들어, ROWID는 물리적 저장 위치 기반이며, 재사용될 수 있습니다.
    • SEQUENCE 값은 트랜잭션 실패 시 건너뛸 수도 있고, 수동으로도 입력할 수 있습니다.

✅ 그럼 어떻게 해야 하나요?

1. 사전 방어: 컬럼 추가

삽입 시간을 기록할 컬럼을 미리 추가해두는 것이 유일한 확실한 방법입니다.
sql
Copy
-- 테이블 생성 시
CREATE TABLE my_table (
    id NUMBER,
    data VARCHAR2(100),
    created_at TIMESTAMP DEFAULT SYSTIMESTAMP
);

-- 나중에 추가
ALTER TABLE my_table ADD created_at TIMESTAMP DEFAULT SYSTIMESTAMP;
이후에는 다음과 같이 조회 가능합니다:
sql
Copy
SELECT * FROM my_table ORDER BY created_at;

2. 사후 추적: 불가능

이미 만들어진 테이블에 created_at 컬럼이 없다면, 지금까지의 삽입 순서는 복구할 수 없습니다.
Tibero도 Oracle과 유사하게 Flashback Query 기능은 있지만, INSERT 시간을 역추적하는 기능은 없습니다.

🧭 결론

  • Tibero에서 삽입 시간/순서를 추적하려면, 반드시 TIMESTAMP 컬럼을 추가하고 DEFAULT SYSTIMESTAMP로 자동 기록되도록 해야 합니다.
  • 이미 지나간 데이터는 복구 불가합니다. 이는 Tibero만의 한계가 아니라 모든 RDBMS의 기본 원칙입니다.

필요하다면, 기존 테이블에 created_at 컬럼을 추가하는 DDL 문장 고려해 볼 것

 

728x90