com
오라클 Database 교육 노트 (3)
by Kitle · 2020. 06. 24.
Table을 설계할 때, DML이
발생하지 않으면, Index를 많이 만들어둬도 된다.
그런데 DML 이 자주 발생하는
table은 Index를 과도하게 만들지 않아야 한다.
View : Table을 기초로 하는 가상 Table. “거울” >> Table의 데이터를 업데이트
하면, View의 데이터도 함께 변경된다.
Synonym : 별명
Partion Table : 테이블이 나뉘어져 있음. 성능 때문에 사용함. ex) 은행 – 거래내역 처럼 데이터가 아주 많은 Table
Global Index, Local Index. 마이그레이션시에는
Global Index를 빼는 추세. why? 만들고 유지보수
하는데 오래 걸리므로. 은행쪽은 아직 존재함.
개인정보 암호화 -> 성능 속도의 Issue 가 있음.
grant select_catalog_role to 계정명;
>> Oracle의 딕셔너리 정보만 볼 수 있는 권한
number(8)
12345 입력시
데이터 인풋은 00012345
row id
같은 데이터가 2개 들어가 있는 경우 하나만 지우고 싶을 때
data 주소를 이용하여 삭제함.
select rowid 를 사용해 검색할 수 있음
create table 의
check 제약
ex) check (Loc in(‘서울’,’부산’)),
foreign-key
1) 부모없는 자식 없다
2) 자식없는 부모 있다
3) 데이터의 변경 및 삭제는 자식부터 한다
마이그레이션 작업
1) 데이터 이관 작업
>> 시간 엄~~ 청 오래 걸림
2) 제약조건 생성
>> 제약조건을 먼저 생성하면 계속 체크를 하기 때문에
성능 안나옴
[사용하지 않는 컬럼 > 사용하지
않는 컬럼으로 설정하면 됨]
alter table [테이블명]
set unused column [컬럼명];
alter table [테이블명] drop
unused columns;
Index
너무많은 인덱스는 오히려 성능이 감소된다.
select만 사용하는 table에
적용하라~
대부분의 데이터가 where절에 매핑되면 (ex 80%데이터)
풀테이블 스켄이 빠름.
단 10% 미만인 경우 인덱스 스켄이 빠름.
sequence >> 값이 1씩 증가함.
데이터베이스 유저 계정 관리
시스템 권한 : create session, create table 등
객체 권한 : 오브젝트 권한. select
update, insert, delete
시스템 권한 DBA -> USER1 -> USER2
객체권한 DAB -> USER1 -> USER2
시스템 권한은 삭제할 때 연쇄적으로 삭제하지 않지만
객체 권한은 USER1을 삭제하면
USER2도 삭제된다.
merge
Insert 와 Update를
동시에 함
DML 이 여러 개인 경우 중간중간
commit을 통해 error를 방지한다. Undo
list가 많아지고, 기존자료가 undo 에
없으면 select 하는데 문제가 발생할 수 있다.
보안관리
1)내부적 보안
2)외부적 보안
현재 시장에서 db보안
1. 접근제어 : 사용자ip, db계정, 접속도구 (국정원 cc인증 받음)
2. 암호화 : 개인정보(주민번호, 계좌번호, 여권번호
등) 암호화(국정원 cc인증
받음)
하나는 상관 없으나 두가지가 매핑되면 문제로봄
ex) 핸드폰 번호만 있음
-> 상관없음
ex) 이름 + 핸드폰 -> 암호화 필요
암호화를 하면 table을 View로
보여줌. View의 제약사항으로 대용량 db에서는 성능상의
문제가 있음
2-Tier : pc -> db
3-Tier : pc (ip) -> middle ware (ip) ->
db (ip)
미들웨어의 기능 : Load balancing – Connect 분산
3-Tier 방식은 사용자의 ip가
남지않고 미들웨어 ip가 남으므로 문제가 될수 있다. 누가
접속했는지 찾기가 어려움 ip로 되지 않으니 1인 1계정으로 구분함
MTBT 장애와 장애시간 : 길수록
좋음
MTTR 장애복구시간 : 짧을수록
좋음
오프라인 백업 –db 내리고 백업,
운영중에는 hot 백업