본문 바로가기

데이터베이스

[오라클]플래쉬백(Flashback)을 통한 데이터 복구 -3 (TABLE LEVEL FLASHBACK, Flashback Transaction Query) 이번에는 플래쉬백(Flashback) 복구 방법 중에 테이블 복구에 관한 것을 다룰까 합니다. 로우 레벨 플래쉬백 복구 방법과 다른 점은 로우 레벨 플래쉬백은 다른 로우(ROW)에 영향을 주지 않고 해당 로우의 데이터를 복구합니다. 하지만 테이블 레벨 플래쉬백 복구 방법은 테이블에 있는 전체 로우에 대해서 어느 한 시점으로 복구하는 것이기때문에, 해당 테이블의 모든 로우의 데이터가 영향을 받게 됩니다. 우선적으로 작업을 할려는 테이블에는 'ROW MOVEMENT'가 'ENABLE' 되어 있어야 합니다. 다음과 같이 설정 가능하겠습니다. SQL> ALTER TABLE 테이블명 ENABLE ROW MOVEMENT; [실행화면] 이제 신나게 업데이트를 해볼까요? 다음 테이블에 작업을 합니다. 저는 1년, 2년.. 더보기
[오라클]플래쉬백(Flashback)을 통한 데이터 복구 -2 (ROW LEVEL FLASHBACK, Flashback Transaction Query) 이번글에서 알아볼 Transaction Query는 우리가 이미 행한 트랜잭션에 대해서 Undo 데이터를 통한 Undo SQL 문장을 보여줍니다. 이 트랜잭션 쿼리를 이용하기 위해서는 우선 사용할 계정에 대해서 'select any transaction' 권한이 존재해야 합니다. 권한을 확인후 진행합니다. 없다면 다음과 같이 부여합시다. 관리자 권한으로 접속후 다음을 입력합니다. SQL> GRANT SELECT ANY TRANSACTION TO hr; 권한 관련 글을 다음 링크를 참고하시면 되겠습니다. 권한 설정 관련 글 확인하기 우선 상황을 만들기 위해서 다음과 같이 업데이트를 여러번 해줍니다. [실행화면] [실행화면] [실행화면] [실행화면] 같은 로우(ROW)에 대해서 여러번 업데이트를 진행하고 c.. 더보기
[오라클]플래쉬백(Flashback)을 통한 데이터 복구 -1 (ROW LEVEL FLASHBACK, Flashback Verision Query) 우선, 다음과 같이 연습할 테이블을 간단히 만듭니다. [실행화면] 그리고 나서 자료를 넣습니다. 저는 두개의 로우(ROW)를 입력했습니다. [실행화면] 커밋(commit)을 해준후 테이블을 확인합니다. 일본 국가에 속해있는 'ando'의 나이를 수정해 보겠습니다. [실행화면] 그리고 커밋을 해준후, 다시 테이블을 확인해서 업데이트가 이상없이 되었는지 확인해 봅니다. 자, 여기서부터가 플래쉬백을 통한 복구 과정입니다. 저는 방금 수정했던 'ando'의 나이를 이전 데이터로 돌리고 싶어합니다. 하지만 아무것도 모르고 단지 바뀌었다는 사실만을 알고 있습니다. 플래쉬백 버전 쿼리(Flashback Version Query)를 통해서 다음과 같이 변경이력을 탐색합니다. [실행화면] 보시게 되면 아래로부터가 변경된.. 더보기
[오라클] 아카이브 로그 모드(Archive log mode)로 전환하기 이제 슬슬 백업관련해서 복습을 해봅니다. SQL을 그럭저럭 마쳐가지고. 아카이브에 대해서는 알고 계시리라 생각하고 이번글을 적습니다. 데이터베이스가 구성이 되면 디폴트로 노아카이브 모드로 구성이 되는데요, 노아카이브 모드란 아카이브 로그 파일을 생성하지 않는 시스템 모드 입니다. 리두 로그 파일을 따로 기록하지 않습니다. 반면에, 리두로그 스위치가 일어날때 아카이버(Achiver)-ARCH 백그라운드 프로세스-가 디스크나 정해진 경로에 따로 리두 로그 파일을 기록하는데요, 이를 아카이브 모드라 합니다. 아카이브 모드를 사용하기 위해서는 파라미터(Parameter) 파일에 관련 파라미터를 설정해주어야 하는데요. 우선 다음을 데이터 베이스가 오픈된 상태에서 다음을 적용시켜줍니다. 아카이브 로그 파일이 생성될.. 더보기
[SQL] DB안의 사전, 데이터 딕셔너리(Data Dictionary)! 제가 SQL을 처음 배우면서 desc라는 명령을 알게 되었는데요, 그때 선생님께 물었습니다. "테이블에 존재하는 컬럼들에 대해서는 이 명령어를 써서 알 수 있는데, 제가 만든 테이블들의 전체 정보를 알 수 없을까요? 무엇을 만들었는지, 알고 싶습니다." 그랬더니 11장 예습하라고 하시던 선생님 생각이 납니다. 당시는 1,2장 배우고 있었던 때였죠. 아마, 얘기를 하시려던 부분이 데이터 딕셔너리(Data Dictionary) 파트 였을 겁니다. 데이터 딕셔너리는 스키마 · 사용자 · 객체 · 권한 · 롤 · 데이터베이스의 정보 등등, 오라클 데이터베이스를 운영하는데 필요한 정보를 관리하는 별도의 객체들을 일컫습니다. 시스템 정보를 가지고 있기 때문에 (건드리면 위험) 보통, 뷰를 통해서 조회만 할 수 있습.. 더보기
[SQL] 동의어, SYNONYM! 다들 영어를 배우다 보면 한단어에 같은 영단어를 엮어서 많이 외웠을텐데요, 이를 동의어(Synonym)라고 합니다. 철자와 발음은 비록 다르지만 동일한 의미에서 쓰이죠. 데이터베이스에서도 동의어(보통 '시노님'이라고 부릅니다. 이하 시노님)가 쓰이는데요, 객체(Object)에게 Alias 기능을 부여합니다. 보통 테이블 명이 스키마명과 합쳐져서 길어지는 경우에, 원하는 문자열로 시노님이 구성이 가능한데요. 가령 예를 들면, hr.employees 를 emp 로 시노님을 등록해놓으면 다음에 hr.employees를 사용할때 간단히 emp로 불러들일 수 있습니다. 시노님을 만들기 전에 체크해야할 권한은 해당테이블에 대한 SELECT권한과, 시노님 생성 권한이 있어야 합니다. 권한 부여와 관련해서는 다음 링크.. 더보기
[SQL] 뷰를 사용합시다, VIEW! 지금까지 많은 객체(Object)들을 보아왔는데요, 최근에는 시퀀스였습니다. 사실 뷰를 먼저 봤어야 하는데, 흥미위주로 복습을 하는지라 글 순서가 이리 되었네요. 뷰는 '보안'에 의미에 무게를 둔 '돋보기' 기능이라 비유해도 될까요? 뷰(View)를 통해서 데이터를 조회해 볼 수 있는데요. SELECT처럼 보고싶은 내용을 선택해서 볼 수 있는게 아니라, 제한적으로 보여지게 됩니다. 무슨말이냐 하면 뷰는, 실제 데이터를 담고 있는 테이블을 간접적으로 볼 수 있게 합니다. 만일에 인사직원 중에 월급을 관리하는 직원들이 있다고 합시다. 그런데 그 담당직원에 대해서 SELECT 권한을 주게 되어버리면 그 사원에게는 필요없는 정보까지 모두 보여질 수 있습니다. 보안상으로도 문제가 있구요. 여기에서, 등장하는 것이.. 더보기
[오라클] 오라클의 기동상태(시작과 종료) 1. 오라클의 기동 오라클은 4단계의 레벨을 거쳐 시스템이 시작됩니다. 다음로 4단계로 차례대로 실행됩니다. 1. SHUTDOWN : 오라클 인스턴스(Instance)가 정지된 상태로 데이터 베이스에 대해서 접근(Access) 할 수 없습니다. 2. NOMOUNT : 초기화 파라미터 파일을 읽고 인스턴스 구성(SGA, 백그라운드 프로세스 등), alertSID.log 및 추적파일을 엽니다. 3. MOUNT : Control 파일을 읽고 난뒤 리두 로그 파일과 데이터 파일을 확인합니다. 4. OPEN : 데이터 파일과 리두 로그 파일이 제대로 확인된 상태이며, 이때부터 정상적인 접근이 가능합니다. 보통 우리가 sql에서 startup 명령어를 통해서 DB를 기동시킬때는 위와 같은 순서로 기동됩니다. 기동상.. 더보기
[SQL] 객체(Object) 권한 부여/삭제 이번글은 시스템 권한에 이은 객체(Object) 권한입니다. 객체권한은 주로 SQL 수행 작업과 관련된 것으로 DDL, DML 작업을 할 수 있도록 하는 권한입니다. 관련 있는 권한으로는 다음과 같습니다. SELECT | ALTER | INSERT | DELETE | UPDATE | INDEX | REFERENCES 잠시 알고 지나가야 할 부분은 뷰(VIEW)에서는 인덱스 생성과 ALTER 작업이 안된다는 것입니다. 권한을 부여하는 방법은 시스템 권한 부여 방식과 같습니다. GRANT 권한 ON 스키마.테이블명 TO 계정; 다음과 같이 가능합니다. [실행화면] 역시나 같은 방식으로 권한 삭제가 가능합니다. REVOKE 권한 ON 스키마.테이블명 FROM 계정; 기타 권한으로는 다음 세가지가 있습니다. W.. 더보기
[SQL] 계정 생성 및 시스템 권한 부여/삭제 여태껏 실습을 하시면서 보통 사용해온 계정은 hr 계정아니면 scott 계정 등등 있을텐데요. 이와 같은 계정은 오라클에서 제공하는 샘플 스키마로서 계정에 대한 권한들과 모든 테이블, 데이터들이 미리 구축 되어 있습니다. 이번 글에서는 계정 생성과 시스템 권한에 대해서 알아볼까 합니다. 우선 기존에 존재하던 스키마 계정을 사용할때는 관리자 계정으로 접속후 다음과 같이 해주어야 합니다. SQL> alter user hr identified by hr account unlock; SQL> alter user scott identified by oracle accoun unlock; 기존의 샘플 스키마들은 락(lock)이 걸려 있기 때문에 위와 같이 바꿔줘야 하는데, identified by 뒤에 나오는것은 .. 더보기