2024.02.27

김무영·2024년 2월 27일

계정생성

  • 관리자 계정만 가능하다. (관리자 권한을 부여받은 계정도 가능)
    8i,9i,10g,11g,12c ~ 21c
    1. 계정 생성
    • create user c##계정명 identified by 비번;
    • c##이 붙지 않은 계정을 사용. (_ORACLE_SCRIPT 활성화)
      • alter session set "_ORACLE_SCRIPT" = tru; (접속할 때마다 사용)
      • create user 계정명 identified by 비번;
    1. 생성된 계정에 권한 부여
    • 권한 조회 : 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 생성 권한
    1. 테이블 스페이스에 대한 사용권한 부여
    • alter user 계정명 default tablespace users quota unlimited on users;
    1. 사용
    1. 계정삭제
    • 객체가 없는 계정
      • drop user 계정명;
    • 객체가 있는 계정
      • drop user 계정명 cascade;

백업

  • 모든 계정은 계정이 가진 객체를 백업할 수 있다.
  • 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가 도출
        • 단순view , 복합 view
      • create : View가 존재하지 않는 경우에만 생성된다.
        • create or replace : view가 없다면 생성하고 있다면 치환한다.
      • option
        • with read only : 읽기전용
        • with check option : view에 의해 검색된 레코드에 대해서만 DML이 가능
  • 삭제 )
    • drop view 뷰명;
  • 검색 )
    • user_veiws DD에서 view를 확인할 수 있다.

index

  • 레코드의 양이 많을 때 빠른 검색을 하기위해서 제공하는 객체( CPU Cost와 IO Cost가 줄어든다.)
  • 자동 인덱스와 수동인덱스 두 가지를 제공.
    • 자동 인덱스 : 테이블을 생성할 때 PK나 Unique를 설정하면 자동생성되는 index
      • 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절에서 자주 사용되는 컬럼
          자주 변경되지 않는 컬럼
  • 인덱스 삭제 )
    • drop index 인덱스명
  • 인덱스 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를 사용하여 검색

0개의 댓글