[Oracle] 2020.12.23. day_43 백업, 복구 / sequence
2020. 12. 23. 16:52ㆍWeb_Back-end/Oracle
◎ 백업
- exp.exe 사용
- 모든 계정은 백업을 수행할 수 있다
- DOS 창에서 수행
도움말 보기 : exp help=y
테이블만 백업 : exp userid=계정명/비번 tables=백업할테이블,,,,,,, file=백업파일경로
모든 Object 백업 : exp userid=계정명/비번 full=y file=백업파일경로
백업파일은 확장자를 .dmp 로 설정 ( .ora 를 사용했었는데 요즘 안씀 )
◎ 복구
- imp.exe 사용
- 모든 계정은 복구를 수행할 수 있다
- DOS 창에서 수행
- 같은 이름의 객체가 존재하면 해당 객체는 복구되지 않는다
도움말 보기 : exp help=y
테이블만 복구 : imp userid=계정명/비번 tables=복구할테이블,,, file=복구할파일경로
모든 Object 복구 : imp userid=계정명/비번 full=y file=복구할파일경로
◎ sequence
sequence | |
순차적인 번호를 관리하는 객체 | |
nextval, currval 번호를 얻는 psuedo 컬럼이다 | |
user_sequences 에서 시퀀스를 확인할 수 있다 | |
nextval : | File 영역에 존재하는 시퀀스의 값을 변경하고, 접속자 세션에 시퀀스 객체를 올리고, 다음 번호를 얻는다 |
currval : | 접속자 세션에 올라와있는 시퀀스 객체의 현재 번호를 얻는 일 // 메모리에 올리는 일을 할 수 없다 -> 올라와있는 일만 할 수 있다 |
작성법 생성) |
create sequence 시퀀스명 increment by 증가하는 수 start with 시작하는수 maxvalue 끝값 cache 메모리에 올려놓을 수 // 20이 default cycle | nocycle : 반복여부 // nocycle이 default (java의 for문과 비슷한 개념으로 이해할 수 있다) |
작성법 번호얻기) |
1. 다음번호 : 시퀀스명.nextval 2. 현재번호 : 시퀀스명.currval |
작성법 삭제) |
drop sequence 시퀀스명 |
※ sequence를 사용하지 않고 순차적인 번호 관리하기
sequence를 사용하지 않고 순차적인 번호 관리하기
--test 테이블에 아래의 레코드를 추가
/*
번호 : 이전에 들어가있는 번호 다음 번호를 추가해야한다
이름 : 신ㅇ영, 남ㅇ진, 박ㅇ원, 박익을 추가
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
---------------------------sequence-------------------------
create table test(num number, name varchar2(30));
insert into test(num, name) values(1, '김ㅇ규');
commit;
select * from test;
--test 테이블에 아래의 레코드를 추가
/*
번호 : 이전에 들어가있는 번호 다음 번호를 추가해야한다
이름 : 신ㅇ영, 남ㅇ진, 박ㅇ원, 박익을 추가
*/
insert into test(num, name) values((select max(num)+1 from test), '신ㅇ원');
insert into test(num, name) values((select max(num)+1 from test), '남ㅇ진');
insert into test(num, name) values((select max(num)+1 from test), '박ㅇ원');
insert into test(num, name) values((select max(num)+1 from test), '박ㅇ익');
|
cs |
※ sequence 연습해보기
1에서부터 시작해서, 999999999까지 1씩 증가하는 시퀀스를 생성
1
2
3
4
5
6
|
create sequence test_seq
increment by 1
start with 1
maxvalue 999999999;
select * from user_sequences;
|
cs |
○ 간접실행 : 쿼리문에 넣어서 사용하는 것
1
2
3
4
5
6
7
|
--currval은 메모리에 올라와있는 시퀀스의 현재값을 얻는일만 수행
select test_seq.currval
from dual;
--nextval
select test_seq.nextval
from dual;
|
cs |
※ 주의 : 데이터형에 맞지않아, 입력실패하면 해당 시퀀스 번호는 사라진다
1
2
3
4
|
--실패하면 해당 시퀀스번호는 사라진다
insert into test(num, name) values (test_seq.nextval, '테스트테스트');
insert into test(num, name) values (test_seq.nextval, '테스트');
|
cs |