계정생성
- 관리자 계정만 가능하다. (관리자 권한을 부여받은 계정도 가능)
8i,9i,10g,11g,12c ~ 21c
- 계정 생성
- create user c##계정명 identified by 비번;
- c##이 붙지 않은 계정을 사용. (_ORACLE_SCRIPT 활성화)
- alter session set "_ORACLE_SCRIPT" = tru; (접속할 때마다 사용)
- create user 계정명 identified by 비번;
- 생성된 계정에 권한 부여
- 권한 조회 : DBA_ROLE_PRIVS, DBA_SYS_PRIVS
- DBA_ROLE_PRIVS : 접속 권한
- DBA_SYS_PRIVS : 쿼리 사용 권한
- grant : 권한 부여
- dba : DBA권한
- connect : DB접속 권한
- resource : DB사용 권한
- create view : view생성권한
- create synonym - synonym 생성 권한
- 테이블 스페이스에 대한 사용권한 부여
- alter user 계정명 default tablespace users quota unlimited on users;
- 사용
- 계정삭제
백업
- 모든 계정은 계정이 가진 객체를 백업할 수 있다.
- exp.exe 사용.
- dos에서 사용.
- 백업은 정기백업 비정기 백업을 수행한다.
- 사용법 )
- 테이블만 백업
- exp userid=계정명/비번 tables=백업할테이블명,,,,, file=백업파일의파일명
- 모든객체 백업
- exp userid=계정명/비번 full=y file=백업파일의파일명
복원
- imp.exe 사용.
- 백업파일을 사용하여 DBMS에서 사용할 객체를 복원하는것.
- 같은 이름의 객체가 존재하면 복원되지 않는다.
- 사용법 )
- imp -help
- 특정 테이블만 복원
- imp userid=계정명/비번 tables=복원할테이블명,,,, file=백업파일의경로
- 모든 객체 복원
- imp userid=계정명/비번 full=y file=백업파일의경로
synonym( 동의어 )
- 테이블 명을 원래의 이름과 함께 다양한 이름으로 사용해야 할 때.
- alias와는 다르다 (alias는 해당 select에서만 alias명으로만 사용가능)
- create synonym 권한이 부여된 계정만 synonym을 생성할 수 있다.
- dba_sys_privs에서 부여된 권한을 확인 할 수 있다.
- user_synonyms DD에서 생성된 synonym을 확인 할 수 있다.
- public synonym을 생성하면 다른 계정에서도 synonym을 사용할 수 있다.
- 문법 )
- create (public) synonym 시노님명 for 테이블명;
- 사용 )
- select 컬럼명 ,,,, from 시노님명;
insert into 시노님명(컬럼명,,,) values(,,,,);
- 삭제 )
- 권한부여 ( 관리자 ) - public 생략 가능
- grant create (public) synonym to 계정명;
- 권한회수 ( 관리자 ) - public 생략 가능
- revoke create (public) synonym from 계정명;
view
- 실제 테이블에서 도출되는 가상의 테이블
- 보안성이 향상되고 사용자편의성이 향상된다.
- 보안성 : 뷰를 통한 데이터베이스 접근
- 사용자편의성 : 자주 사용되는 조건으로 view를 만들고 접근.
- 조인을 한 상태로 view를 만들고 접근.
- 쿼리문이 단순해지는 효과를 가지게 된다.
- create view 권한이 있는 사용자만 생성할 수 있다.
- 단순 view와 복합 view 두 가지로 생성할 수 있다.
- 단순 view
- 테이블 하나에서 도출된 view
- 함수, 연산식을 사용하지 않고 생성한 view
- DML이 가능 (insert, update, delete, select)
- 복합 view
- 테이블 여러개에서 도출된 view
- 함수, 연산식을 사용하여 생성한 view
- DML이 불가능 (select 가능, insert 불가능, update,delete - 상황에 따라 다름)
- 문법 )
- 권한부여 - 관리자
- grant create view to 계정명;
- 권한회수 - 관리자
- revoke create view from 계정명;
- 생성 )
- create view 뷰명 ( 컬럼명,,,,, ) as (select 컬럼명,,,,) option;
- 뷰의 컬럼명은 생략 가능하다.
- select 컬럼명 : Subquery에서 조회된 결과로 view가 도출
- create : View가 존재하지 않는 경우에만 생성된다.
- create or replace : view가 없다면 생성하고 있다면 치환한다.
- option
- with read only : 읽기전용
- with check option : view에 의해 검색된 레코드에 대해서만 DML이 가능
- 삭제 )
- 검색 )
- user_veiws DD에서 view를 확인할 수 있다.
index
- 레코드의 양이 많을 때 빠른 검색을 하기위해서 제공하는 객체( CPU Cost와 IO Cost가 줄어든다.)
- 자동 인덱스와 수동인덱스 두 가지를 제공.
- 자동 인덱스 : 테이블을 생성할 때 PK나 Unique를 설정하면 자동생성되는 index
- 수동 인덱스 : 개발자가 필요에 의해 생성하는 인덱스 (unique, non-unique index, bitmap index, composite index)
- 모든 계정은 인덱스를 생성하고, 사용할 수 있다.
- user_indexs DD에서 index를 확인할 수 있다.
- 인덱스는 시간이 지날수록 테이블의 레코드와 차이가 생긴다.(rebuild 해야한다.)
- 모든 레코드는 레코드를 식별하기 위한 주소(rowid)를 가진다.
- rowid ( AAASC WAA HAAAAHT AAA )
- AAASC : 데이터객체번호
- WAA : 파일번호
- HAAAAHT : 블록번호
- AAA : 레코드번호
- 인덱스 생성 )
- 문법 )
- create (인덱스종류) index 인덱스명 on 테이블명 (컬럼명,,,,);
- 컬럼명 : Unique, non-unique, bitmap 인덱스는 하나의 컬럼으로 구성되고.
Composite index는 여러 개의 컬럼으로 구성된다.
- 인덱스로 설정하면 좋은 컬럼.
where절에서 자주 사용되는 컬럼
자주 변경되지 않는 컬럼
- 인덱스 삭제 )
- 인덱스 rebuild )
- alter index 인덱스명 rebuild;
- 인덱스는 실제 테이블에서 도출된 객체이긴 하나, 테이블과는 별개의 동작을 수행한다.
시간이 지날수록 테이블은 변경되나 인덱스는 변경되지않는다.
- 일정 주기로 idnex를 rebuild하여 테이블과 인덱스간의 격차를 줄여야한다.
- b-tree-index

- num이 99번인 레코드를 검색
- where num = 99;
- 인덱스를 사용하지 않으면 full_scan을 하여 검색을 수행.
full-scan : 컬러의 모든 값을 위에서 아래로 진행하면서
순차적인 검색을 수행하는 것을 말한다.
- 99를 찾기위해 99번 비교하게 된다.
CPU Cost, IO Cost가 증가
- 인덱스 사용

- 레코드의 수가 적으면 full-scan이 더 빠른 검색을 수행한다.
- index를 사용하지 않고 검색
- index를 사용하여 검색