- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
오라클 쿼리 복구
먼저.. 오라클에 해당하는 내용이다.
쿼리문을 커맨드창이나 메모장에서 작성하기는.... 흠좀무 다..
그래서 쿼리 에디터 툴을 쓰기 마련이다.
오라클에서 제공하는 SQL Developer나 두꺼비를 쓰던지 귤을 쓰던지 쿼리를 작성을 하게 된다.
그러다가 느닷없이 재앙은 다가온다.. 어플리케이션이 갑자기 죽어 버린다. 저장도 안 했는데...
다행스럽게도 재 시작하면 이전 쿼리를 복구 시켜 준다거나 쿼리 히스토리가 기록되어 있어서
복구 시키면 된다.
하지만.. 때때로 이 놈이 복구가 안 되는 수가 있다. 이럴땐 진짜 의욕상실이다.
해서 에디터 프로그램에서 날려먹은 쿼리를 DB에서 찾아 오는 방법도 알아 둘 필요가 있다고 느꼈다.
어제 그랬으니까 -_-
실행환경은 ORACLE 10g 다.
v$sqlarea나 v$sqltext는 퍼포먼스 확인이나 lock 걸린 쿼리 잡아내는 용도로 쓰이지만 복구용으로 써 보자.
0. 최대한 빨리 실행해야 한다. 이유는 묻지 말자.
1. v$sqlarea 테이블에서 기억나는 쿼리 구문으로 찾는다.
from v$sqlarea
where sql_text like '%emp%'
시간을 기억하고 있다면 조건절에 first_load_time 를 거는 것은 좋은 생각.
조회하는 시간 포맷은 아래와 같다.
from v$sqlarea
where sql_text like '%emp%'
and first_load_time > '2008-09-24/20:00:00'
2. 쿼리가 1000byte미만이라면 모든 쿼리가 나오겠지만 1000바이트 이상이라면
쿼리의 뒷부분이 날아가 있다. 나머지 쿼리도 모두 복구해 보자.
쿼리를 찾았다면 해당 row의 SQL_ID 를 복사해 둔다.
예를 들어서 SQL_ID가 '53dchps3sn7p2' 라고 하자.
3. v$sqltext 테이블에서 조각을 끼워 맞춘다.
출력은 text output 으로 하는 것이 좋다. 긁어서 에디터에 붙여야 하므로..
from v$sqltext
where sql_id = '53dchps3sn7p2'
order by piece
결과값으로 나온 쿼리는 일정한 바이트에 따라서 잘려져 있으므로
에디터에서 정상적인 쿼리가 되도록 수정해야 한다. 캡숑 삽질이다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86160 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 78656 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95389 |

