programing

Oracle에서 특정 테이블이 언제 생성되었는지 확인하는 방법

easyjava 2023. 3. 5. 10:30
반응형

Oracle에서 특정 테이블이 언제 생성되었는지 확인하는 방법

Oracle에서는 특정 테이블이 언제 작성되었는지 알 수 있는 방법이 있습니까?

마찬가지로 특정 행이 언제 삽입되었는지 또는 마지막으로 업데이트되었는지 확인할 수 있는 방법이 있습니까?

SELECT created
  FROM dba_objects
 WHERE object_name = <<your table name>>
   AND owner = <<owner of the table>>
   AND object_type = 'TABLE'

테이블이 생성된 타이밍이 표시됩니다(DBA_에 액세스 할 수 없는 경우).OBJETES 테이블에서 SELECT 권한이 있는 경우 대신 ALL_OBJETES를 사용할 수 있습니다).

그러나 행에서 타임스탬프를 가져오는 일반적인 대답은 해당 정보를 추적하기 위해 열을 추가한 경우에만 해당 데이터를 가져올 수 있다는 것입니다(물론 응용 프로그램이 열을 채운다고 가정).하지만 여러 가지 특별한 경우가 있다.DML이 비교적 최근에 발생한 경우(대부분 지난 몇 시간 내) 플래시백쿼리에서 타임스탬프를 얻을 수 있을 거예요DML이 최근 며칠 동안 발생한 경우(또는 아카이브된 로그를 보관하는 기간 동안) LogMiner를 사용하여 타임스탬프를 추출할 수 있지만 많은 행에 대해 타임스탬프를 얻는 경우 특히 비용이 많이 듭니다.ROWDEPENDENCYS가 네이블로 되어 있는(기본값이 아님) 테이블을 빌드하면

SELECT scn_to_timestamp( ora_rowscn ) last_modified_date,
       ora_rowscn last_modified_scn,
       <<other columns>>
  FROM <<your table>>

행의 마지막 변경 날짜와 SCN(시스템 변경 번호)을 가져옵니다.단, 기본적으로는 ROWDEPENDENCYS를 사용하지 않으면 SCN은 블록레벨밖에 없어요SCN_TO_TIMESTAMP또한 SCN을 타임스탬프에 영원히 매핑할 수 없습니다.

데이터 사전/카탈로그 뷰를 조회하여 객체가 생성된 시기와 객체가 포함된 마지막 DDL 시간을 확인할 수 있습니다(예: alter table).

select * 
  from all_objects 
 where owner = '<name of schema owner>'
   and object_name = '<name of table>'

"CREATED" 열은 개체가 생성된 시기를 알려줍니다."LAST_DDL_TIME" 열은 개체에 대해 마지막으로 DDL이 수행된 시간을 나타냅니다.

특정 행이 삽입/업데이트된 경우 "insert_timestamp" 열과 같은 감사 열을 사용하거나 트리거를 사용하여 감사 테이블을 채울 수 있습니다.

다음 코드를 복사하여 붙여넣습니다.이름작성 날짜가 포함된 모든 테이블이 표시됩니다.

SELECT object_name,created FROM user_objects
WHERE object_name LIKE  '%table_name%'
AND object_type = 'TABLE'; 

참고: '%table_name%'를 찾고 있는 테이블 이름으로 바꿉니다.

SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME='<<YOUR TABLE NAME>>'

다음 쿼리를 사용해 보십시오.

sysdate FROM schema_name.table_name을 선택합니다.

필요한 타임스탬프가 표시됩니다.

언급URL : https://stackoverflow.com/questions/4442323/how-to-find-out-when-a-particular-table-was-created-in-oracle

반응형