Study/DB 14

오라클에서의 트랜잭션

오라클에서의 트랜잭션의 완료&복귀 DML (data manipulation language) : select, insert, delete, update 등 테이블에 대한 읽기/쓰기 연산으로 구성 DDL (data definition language) : create table, drop table 등 데이터베이스 스키마의 변경에 관한 명령 DCL (data control language) : grant, revoke 같은 권한 관련 명령어 DDL => 자동완료. 하나의 명령문 끝나면 자동으로 트랜잭션 완료된 것으로 처리. DDL문 성공적으로 실행 끝나면 복귀 불가능. (예로, drop table로 테이블 삭제했으면 백업한 데이터가 존재하지 않는 한 삭제된 테이블에 대한 복구 불가) DCL => DDL과 ..

Study/DB 2021.08.22

복구

복구 : 장애 이전의 일관된 상태로 복원하는 과정 트랜잭션 장애 : 트랜잭션 내의 논리적 오류나 잘못된 입력 데이터, 또는 시스템 내의 자원부족 등으로 인해 트랜잭션 중단될 때 발생 시스템 장애 : 정전이나 핟드웨어 결함으로 인해 작동 중단되는 경우. 주기억장치와 같은 휘발성 저장장치의 내용이 분실/손상 된다 미디어 장애 ; 디스크와 같은 비휘발성 저장장치의 일부/전체가 손상된 상태 데이터베이스 시스템이 장애로부터 ‘복구’되는 기본 원리 = 데이터의 ‘중복’ 백업 : 미디어 장애 대비해 주기적으로 데이터베이스의 내용을 DVD나 자기테이프 같은 저장장치에 백업 파일 만들어 보관. 디스크에 장애 발생하면 이 정보 이용해 데이터베이스를 가장 최근에 저장한 백업 파일로 복구 가능 복제 (mirroring) : ..

Study/DB 2021.08.22

동시성 제어

동시성 제어의 필요성 동시 실행되는 트랜잭션들은 각각에 정의된 명령들이 끼어들기 방식으로 실행되는데, 이런 끼어들기 방식에 의해 실행되는 순서를 ‘스케줄’ 이라고 함. 트랜잭션의 스케줄은 전적으로 운영체제의 권한이고, 사용자는 어떤 스케줄로 트랜잭션들이 실행되는지 미리 예측 거의 불가능. 갱신 분실 : update 결과가 흔적도 없이 사라짐. 갱신 분실이 발생하는 원인은 두 트랜잭션이 같은 값을 읽고 독립적인 연산을 한 후 서로 간의 연산 결과에 관계없이 그 결과를 독립적으로 저장했기 때문 연쇄 복귀 : 트랜잭션 연산 성공적으로 끝났는데도 다른 트랜잭션 때문에 실패한 상황. 만약, T3과 T4 실행중에, T3이 예기치 못한 상황에 의해 실패해 처음 상태로 복귀하게 된다면, T3의 x값은 이전의 값으로 돌..

Study/DB 2021.08.22

트랜잭션

트랜잭션이란? 논리적인 작업단위를 구성하는 연산들의 집합 트랜잭션을 정의하는 것은 전적으로 개발자 의무! 정의된 트랜잭션들에 대해 문제가 발생하지 못하게 방지하는 것은 DBMS의 몫 트랜잭션이 지켜야 할 조건 : ACID 특성 - 원자성 (Atomicity) : 트랜잭션이 시작되면 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지, 아니면 실행 전 상태로 되돌아가야함 ‘all or nothing’ 중간에 실패할 거 같으면 실행 전으로 돌아가야함! - 일관성 (Consistency) : 트랜잭션이 시작되기 전에 데이터베이스 내용이 일관된 상태라면 트랜잭션이 종료된 후에도 데이터베이스의 내용이 일관된 상태로 유지돼야함 (예-출금 후에도 두 계좌 잔액 동일) *일관된 상태라는 건 어떻게 판단? DBMS ..

Study/DB 2021.08.22

무결성과 보안

데이터베이스의 관리자는 일반 사용자에 일부/모든 권한 부여/회수 가능. 또한, 객체를 생성한 사용자는 해당 객체에 대한 모든 권한 가짐. 데이터베이스 관리자 : DBMS 내의 모든 객체에 대한 모든 권한 가짐. 모든 권한이란 객체에 대한 연산(삽입, 삭제, 수정 등)뿐 아니라, 객체의 제거(drop table), 변경(alter table)도 포함. 또한, 다른 사용자에 해당 객체에 대한 권한 부여/회수 가능함 객체 소유자 : 특정 사용자가 객체 생성했으면 그 사용자가 해당 객체의 소유자 됨. 소유자는 생성한 테이블에 대해 관지라와 같이 모든 권한 가짐. 차이점은, 객체 소유자는 자신이 생성한 객체에 한정해 모든 권한 가짐. 모든 권한이란, 해당 객체에 대한 권한의 부여/회수도 포함됨 기타 사용자 : 객..

Study/DB 2021.08.22

오라클 실습

오라클 인스톨하고, 테이블 스페이스 및 사용자 계정 생성하기 1. 컴퓨터에 오라클을 인스톨 2. 인스톨 후 SQL*Plus로 창을 띄어 sys/각자의 패스워드로 관리자 계정으로 접속 3. 다음과 같이 테이블스페이스를 생성 - 적당한 위치에 테이터 파일을 생성할 빈 폴드를 만들기(폴드명은 my_data) - 테이블스페이스명은 my_space - data block file(.dbf)명은 본인의 영문명_data(예 : yukim_data) - size는 20M - 데이터파일이 생성된 창을 스크린 캡쳐 4. 다음과 같이 사용자 계정을 생성 - 사용자 계정: 자신의 영문명 - 비밀번호 : 자신이 임의로 결정 (반드시 기억해둬야 함) - 테이블스페이스 : 3에서 생성한 my_space - quota : unlim..

Study/DB 2021.08.22

SQL 실습 시 주의사항

create.sql을 실행 후, 혹은 insert 실행후 select로 확인을 하면 레코드가 해당 테이블에 삽입이 된 것 처럼 보이지만, 실은 이는 임시 테이블에 저장되어 있고, 실제 테이블에는 아직 저장되어 있지 않은 상태입니다. 이 상태에서 그냥 SQL*Plus 창을 닫아버리면 레코드들은 해당 테이블에 삽입되지 않은채 종료됩니다. 따라서, 레코드 삽입을 테이블에 반영하고자 할 땐 반드시 SQL>exit 혹은 SQL>quit 명령으로 SQL*Plus 창을 닫아야만 레코드가 테이블에 삽입됩니다. 또한, SQL 사용 중에 지금까지 사용한 SQL 결과를 테이블에 반영할 경우에는 SQL>commit; 명령을 사용하고, 반영하고 싶지 않을 경우에는 SQL>rollback; 명령을 사용하면 됩니다.

Study/DB 2021.08.22

SQL 실습2

1. 첨부된 bank.sql을 사용자 계정에서 실행한다. 2. client 테이블에 (‘본인의주민번호(ssn)’, ‘본인의이름’, ‘서울’, '본인의전화번호')을 삽입하고 deposit 테이블에 ('112', '본인의주민번호(ssn)', 150000, '성남지점')을 삽입한다. 3. 교재 200~202쪽 문제 5번에 제시된 20개의 질문을 SQL로 작성하시오. (수정 : 4번 문제에서 지점장 이름은 고소영 대신 고희경으로 수정해서 푸시오.) (수정 : 6번 문제에서 고객의 이름 김광식 대신 김기식으로 수정해서 푸시오.) 1) 모든 고객의 계좌번호, 이름, 그리고 예금잔액을 검색하라 2) 이름이 '박지성' 인 고객의 전화번호와 주민등록 번호를 검색하라 3 ) 지점이름이 '성남 지점'인 지점을 통해 개설된 ..

Study/DB 2021.08.22

SQL 실습

1. 다운받은 create.sql을 지난 시간에 생성한 각자의 사용자 계정에서 실행한다. (개별적으로 실습을 하다가 테이블 레코드가 변경되었을 수도 있으니 반드시 create.sql을 다시 실행할 것) 2. student 테이블에 (‘본인의학번’, ‘본인의주민번호’, ‘본인의이름’, 본인의학년, ‘서울’, '920')을 삽입 3. 아래의 문제를 SQL로 작성한다. 1. 과목명에 ‘구조’가 들어 있는 과목번호와 과목명을 찾아라. 2. 2012년도 1학기에 강의가 없는 교수의 이름을 찾아라. 3. 2012년도 1학기에 한 과목도 수강하지 않은 학생의 학번과 이름, 학과명을 찾아라. 4. 학과별 학생 수를 찾아라. (학과명, 학생수) 5. 학번별 수강과목 수를 찾아라. (학번, 수강과목수) 6. 가장 최근에 ..

Study/DB 2021.08.22

SQL

질의어와 SQL : Structured Query Language 표준 질의어로 채택돼 널리 쓰이는 관계형 질의언어임 - 1986년 ANSI & ISO에서 표준 질의어로 채택 - 1992년 SQL2(SQL-92) 발표 - 2003년 SQL3 발표(최신) 관계대수/관계해석은 확실한 이론적 배경을 제공하나, 상용으로 쓰기엔 어렵고 적절치 않음 -> SQL은 자연어와 유사하고 비절차적 언어이므로 사용하기 용이함 *비절차적 언어란? 절차적인 프로그래밍 언어 SQL의 구성 : DDL & DML SQL은 크게 DDL와 DML로 구성됨 - 데이터 정의언어 DDL : 데이터 저장 구조를 명시하는 언어. 테이블 스키마의 정의, 수정, 삭제 - 데이터 조작언어 DML : 사용자가 데이터 접근하고 조작할 수 있게 하는 언어..

Study/DB 2021.08.22