오라클에서 시간을 기준으로 데이터 복구

Posted by 백창
2021. 9. 16. 21:54 개발/Oracle
반응형

#1

시스템을 실제 운용하는 상황에서는 가끔 언제 무슨 데이터를 확인 해달라는 요청이 많이 발생한다.

운영 시스템에선 DB백업을 모두 하고 있겠지만 데이터 하나하나 확인하고자 

백업 라이브러리를 뒤적거릴 시간이 없을 것이다.

이런 경우 유용하게 활용할 수 있는 timstamp 기능이 있다.

  * 이 기능은 미리 설정되어 있는 시간만큼만 조회가 가능함

 

 

사용법은 간단하다. 복구를 원하는 테이블에

as of timestamp(복구시간) 라는 명령어를 작성해주면 되는데

 

#2

정확한 복구 시점을 알 수 없을때는 

아래와 같은 방법으로 현재 시간으로부터 XX시간, XX분, XX초 전의 데이터를 확인 할 수 있다.

select * from sample_tabel as of timestamp(systimestamp - interval '1' hour)

interval '1' hour을 아래와 같이 바꾸면 다양한 방법으로 활용이 가능하다

o XX일 :  'XX' DAY

o XX시간 : 'XX' HOUR

o XX분 : 'XX' MINUTE

o XX초 : 'XX' SECOND

 

#3

정확한 복구 시점을 알고 있는 경우는 아래와 같이 정확히 복구시간을 작성해주는 것이 더욱 도움이 된다.

select * from sample_table as timestamp(to_date('20210101000000','YYYYMMDDHH24MISS'))

 

 

반응형

'개발 > Oracle' 카테고리의 다른 글

[oracle] DB Link  (0) 2016.04.07
[oracle] 날짜 + 번호 일련번호 생성하기  (0) 2015.12.13

[oracle] 날짜 + 번호 일련번호 생성하기

Posted by 백창
2015. 12. 13. 03:23 개발/Oracle
반응형

# 개요


 Oracle에서 스케줄 등록 없이 날짜 + 숫자 와 같은 형식의 일련번호를 생성해보자.


# 코드


1
2
3
4
5
6
select 
    to_number(to_char(sysdate,'YYMMDD'|| nvl(to_char(max(substr(sales_no,7))),'00'))+1
from
    sales
where
    to_char(sales_date,'YYYYMMDD'= to_char(sysdate,'YYYYMMDD')    
cs


# 설명


 일련번호의 형태로 많이 사용하는 방식은 YYYYMMDD + 00001 와 같은 방식일 것이다. 


 이런 일련번호를 생성하기 위해서는 스케줄을 등록하여 하루가 지날때마다 초기 값을 지정해주는 방법이 있었다.


 개발 중인 프로그램의 특성상 DB서버를 항상 켜두는 것이 아니기 때문에 insert 시 계산하는 방법에 대해 고민해보았다.


 아직 학생이라 효율성의 측면까지는 생각하지 못하였고 동작은 잘 되고 있다.


# 전체 SQL 및 DB



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<insert id="addNewOrder" parameterType="com.nara.order.vo.AddOrder">
    <selectKey order="BEFORE" keyProperty="sales_no" resultType="int">
        select 
            to_number(to_char(sysdate,'YYMMDD'|| nvl(to_char(max(substr(sales_no,7))),'00'))+1
        from
            sales
         where
            to_char(sales_date,'YYYYMMDD'= to_char(sysdate,'YYYYMMDD')
    </selectKey>
    insert
        into sales
            (sales_no, cust_no, cost_sum, sales_date, pay, section)
        values
            (#{sales_no}, #{cust_no}, #{cost_sum}, sysdate, #{pay}, #{section})
</insert>
cs



# 동작 결과




반응형

'개발 > Oracle' 카테고리의 다른 글

오라클에서 시간을 기준으로 데이터 복구  (0) 2021.09.16
[oracle] DB Link  (0) 2016.04.07