Acorn Academy 11/22 시퀀스, 인덱스, 사용자 관리와 권한

Bae Seong Jun·2023년 11월 22일

Acorn academy

목록 보기
4/70

시퀀스 (중요)

  • 오라클 객체로서 테이블의 특정 컬럼값을 넘버링(numbering)하기 위해서 사용된다.
CREATE SEQUENCE 시퀀스명
[ START WITH n]
[ INCREMENT BY n]
[ MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE ] 
[ CYCLE | NOCYCLE ]
[ CACHE n | NOCACHE ]

START WITH n

INCREMENT BY n

  • 음수값 설정도 가능하고 생략시 1씩 증가된다.

MAXVALUE n

MINVALUE n

  • 시퀀스가 가질수 있는 최소값을 지정한다. CYCLE인 경우에는 새로 시작하는 값 역할을 한
    다.

CYCLE 옵션

  • 지정된 시퀀스 값이 최대값까지 증가가 완료되면 START WITH값부터 다시 시작하는 것이
    아니고 MINVALUE 값부터 다시 시작된다. NOCYCLE은 증가가 완료되게 되면 에러가 발
    생된다.

CACHE 옵션

  • db 사용시 nocache 가급적 권장
  • 궁금점 : 사이클 on, max,minvalue 비활성화시 나타나는 현상?
  • cache 생략시 기본 상태?

CURRVAL

  • 현재 시퀀스 값을 구한다.
  • 현재 값 확인용 구문

NEXTVAL (중요)
(중요) create sequence 시퀀스이름. NEXTVAL

SELECT dept_deptno_seq.NEXTVAL, dept_deptno_seq.CURRVAL
 FROM dual;
  • 만약에 increment 값이 음수고 cycle 옵션이 있다면, max와 min이 반대가된다.
  • 한마디로 cycle중 값이 min에 다다르면 max부터 시작
  • USER_SEQUENCES 데이터 사전 에 등록됨

    시퀀스 수정

  • 시퀀스 수정은 ALTER SEQUENCE문을 사용하여 증가치,최대값,최소값,CYCLE여부,캐시값
    을 변경할 수 있다. 시퀀스가 변경되면 다음 시퀀스 번호값부터 변경사항이 적용되고
    START WITH옵션은 변경이 불가능하기 때문에 필요시 시퀀스를 삭제하고 재 생성해야 된
    다.
ALTER SEQUENCE 시퀀스명
[ INCREMENT BY n]
[ MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE ] 
[ CYCLE | NOCYCLE ]
[ CACHE n | NOCACHE ]

테이블에 시퀀스 값 저장 (자주 쓰임)

INSERT문 사용시 같이 사용하는 형태로 쓰인다.

INSERT INTO DEPT06 (DEPTNO, DNAME, LOC)
VALUES (DEPT_DEPTNO_SEQ. NEXTVAL, '개발', '서울');

시퀀스 삭제

DROP SEQUENCE 시퀀스명;

동의어 synonym

동의어는 db 객체에 대한 별칭을 뜻한다.
다른객체에 접근할 때 스키마.객체 형식으로 접근한다. 이 스키마.객체 형식을 별칭으로 대체하는 것을 시노님이라고한다.

CREATE [PUBLIC] SYNONYM 동의어
FOR 스키마.객체;
  • public는 모든 사용자가 사용할 수 있고 private는 동의어를 만든 사용자만 사용이 가능하다.
-- sys 계정
-- tester 계정 생성 및 권한부여
create user tester identified by tester;
alter user tester identified by tester;
grant connect, resource to tester;
  • oracle sql developer에서 접속정보 삭제는 db의 사용자 계정을 삭제하지는 않는다.

  • sys -> 다른 사용자 계정에서 삭제하면 계정이 삭제된다.

  • tester 계정에서 scott의 컬럼에 접근하는게 안된다.

select * from scott.emp;    <-- 오류
  • 접근권한 grant가 필요
-- scott 계정에서 (접근할 컬럼이 있는 계정에서)
GRANT
select on dept
to tester;

select 권한만 부여한 것. insert시 insufficient privileges 오류메세지 발생 (권한부족)

  • 시노님 생성 권한 sys -> scott에게 부여해야 시노님 생성이 가능하다.
-- SYS
GRANT create synonym
TO tester;
  • 시노님은 생성한 계정 내에서 사용가능하다.

인덱스 (가볍게)

  • 읽어보기

사용자관리 (간단하게 보고 넘어가기)(데이터베이스 관리자 배워야할 내용)

(oracle dba 자격시험 에 필요 따로 책이 있을 정도임)

  • 개념만

  • 다수의 사용자들이 데이터베이스에 저장된 데이터를 공유해서 사용한다.

  • 따라서 보안을 위해서 오라클 db는 인증과 권한을 사용하여 개별 사용자들의 db 접근 및 사용에 적절한 보안을 유지시킨다.

  • 인증 : 사용자 계정을 생성, 암호를 변경, 디스크 공간 할당 등 시스템 수준에서 db 접근 및 사용을 관리하는 것을 의미한다.

  • 권한 : db 객체에 대한 사용자들의 접근 및 사용을 관리하는 개념

  • 계정: 사용자 (sys가 추가) => 권한부여 (sys가 부여 grant, 회수도 가능 revoke )

CREATE USER 계정
IDENTIFIED BY 비밀번호;
  • 롤(role) : 권한의 묶음

ex) cott => tester 권한부여
grant select on dept to tester
grant insert ...
grant update ...
grant delete ...

user_grant 롤생성 <= grant select on dept to tester
grant insert ...
grant update ...
grant delete ...

grant user_rant to tester;
grant user_rant to tester2;

권한

권한의 종류

  1. 시스템 권한
  • DBA가 권한을 부여 (SYS)

  • DB에 특별한 작업을 수행하는 것을 가능하게 해준다.

  • 접속, 사용자생성, 테이블생성, 뷰생성 등

    CREATE USER 새롭게 사용자를 생성하는 시스템 권한
    DROP USER 사용자를 삭제하는 시스템 권한
    DROP ANY TABLE 임의의 테이블을 삭제할 수 있는 시스템 권한
    QUERY REWRITE 함수 기반 인덱스를 생성하는 시스템 권한
    BACKUP ANY TABLE 임의의 테이블을 백업할 수 있는 시스템 권한

  1. 객체 권한
  • 객체 수준에서의 권한

  • 객체의 소유자가 권한을 부여 (객체란 테이블과 같은 것들)

  • select,insert,update,delete 같은 작업을 수행하는 것을 가능하게 해준다.

    CREATE SESSION 데이터베이스에 접속할 수 있는 시스템 권한
    CREATE TABLE 사용자가 테이블을 생성할 수 있는 시스템 권한
    CREATE SEQUENCE 사용자가 시퀀스를 생성할 수 있는 시스템 권한
    CREATE VIEW 사용자가 뷰를 생성할 수 있는 시스템 권한
    CREATE PROCEDURE 사용자가 PL/SQL의 프로시저를 생성할 수 있는 시스템 권한

권한 할당 문법

GRANT 시스템권한[,시스템권한]
TO 사용자계정|role|PUBLIC;
  • 해당 유저가 가진 권한을 알고싶을 때 : select * from session_privs;

권한 회수 문법

REVOKE 시스템권한[,시스템권한]
FROM 사용자계정|role|PUBLIC;

< 계정 생성 및 테이블 생성 >
1. user01 계정 생성 + 디벨로퍼에서 접속정보 저장
2. sys에서 user01에 접속권한 부여
3. sys에서 user01에 테이블 생성 권한 부여
4. sys에서 user01에 테이블저장공간을 사용할 권한을 부여

create user user01 identified by user01;

grant create session to user01;

grant create table to user01;

grant unlimited tablespace to user01;

객체 권한

  • 객체 권한은 특정 테이블,뷰,시퀀스,프로시저 등에 DML문을 수행할 수 있는 권리로서 사용
    자는 자신의 스키마에 저장된 모든 객체에 대하여 권한을 갖는다. 따라서 다른 사용자 또는
    롤(role)에게 자신이 소유한 객체에 대해서 DML문을 실행할 수 있는 권한을 부여하거나 회
    수 할 수 있다.

ALTER 테이블,시퀀스 객체를 수정할 수 있는 객체 권한
DELETE 테이블,뷰 객체에서 데이터를 삭제할 수 있는 객체 권한
INSERT 테이블,뷰 객체에서 데이터를 삽입할 수 있는 객체 권한
UPDATE 테이블,뷰 객체에서 데이터를 수정할 수 있는 객체 권한
SELECT 테이블,뷰,시퀀스 객체에서 데이터를 조회할 수 있는 객체 권한
REFERENCES 테이블의 참조 제약조건을 설정할 수 있는 객체 권한
EXECUTE PL/SQL의 프로시저를 실행할 수 있는 객체 권한

객체 권한 부여

GRANT 객체권한[(컬럼)]
ON 객체명
TO 사용자계정|role|PUBLIC
[WITH GRANT OPTION];

with admin option

  • 권한의 연쇄적 회수가 되지 않음.

WITH GRANT OPTION 과 객체 권한

  • 권한의 연쇄적 회수가 됨.

권한 관련 데이터 사전
USER_TAB_PRIVS_MADE는 현재 사용자가 다른 사용자에게 부여한 권한 정보를 알고자 할 때 사용된다.
USER_TAB_PRIVS_RECD 만일 자신에게 부여된 사용자 권한을 알고 싶을 때 사용

객체 권한 회수

REVOE 객체권한, ...]
ON 객체명
FROM 사용자계정|role|PUBLIC
[CASCADE CONSTRAINTS];

롤 (role)

롤(role)은 사용자에게 보다 효율적으로 권한을 부여할 수 있도록 여러 개의 권한을 묶어 놓은 것이라고 생각하면 된다.

  • 기본적으로 제공되는 사전 정의된(Built-in)롤과 사용자가 필요에 의해서 정의한 롤로 구분된다

사전 정의된 롤 종류

CONNECT : CREATE SESSION

RESOURCE :
CREATE TABLE,TABLESPACE, CREATE PROCEDURE,
CREATE SEQUENCE,CREATE TRIGGER,CREATE TYPE,
CREATE CLUSTER, CREATE INDEXTYPE,
CREATE OPERATOR

DBA : 대부분의 시스템 권한과 일부 롤을 포함하며 일반 사용자에게 롤을
부여해서는 안된다.

  • DBA_ROLES 데이터 사전을 사용해 사전 정의된 롤을 확인할 수 있다.
SELECT role
FROM dba_roles

사용자 롤 생성 및 사용

  1. 사용자 생성 sys
  2. 사용자 롤 생성 sys
  3. 사용자 롤에 권한 부여 sys
  4. 사용자에 롤 부여 sys
    ex)
create user user03 identified by user03;
create role clerk;
grant create session, create table, unlimited tablespace to clerk;
grant select on scott.dept to clerk;
grant clerk to user03;

롤을 부여하고, 그 후에 롤에 다른 권한을 추가한다면
그 롤을 부여받은 사용자는 나중에 롤에 추가된 권한도 유동적으로 부여받는다.


프로그램

IDE : 개발환경 - 개발프로그램(EX.한글, 엑셀) - ECLIPSE
어플리케이션 작성용 ECLIPSE
웹 작성용 ECLIPSE
어플리케이션 프로그램 - 계산기, 디벨로퍼, 메모장 ... 등등 : JAVA
-> 어플리케이션 프로그램개발환경 ECLIPSE
웹 프로그래밍 - 브라우저(크롬,엣지)에서 동작 -> 웹프로그램개발 ECLIPSE
백단프로그램밍 - 서버에서 동작(DB, 서블릿, JSP, 스프링, 스프링부트...)
프론트프로그래밍 - 실제 브라우저에서 실행(HTML, CSS, JS, JQUERY, VUE, REACT...)

HTML, CSS -> JAVA -> JS (순서로 진도)


설치하는 법에 익숙해져야함


웹 프로그램 개발환경을 위한 환경설정
1. jdk 11 설치
2. 환경변수 설정
3. 웹개발용 eclipse 설치

  • 워크스페이스 설정, 한글 설정(windows ->preference->general->workspace->utf-8)
    (windows ->preference-> web -> CSS files -> encoding을 맨 위에 utf-8들어가있는 선택지
    (html도)
    (jsp files도)
  • jdk 11로 설정
  • tomcat 테스트 서버 설치
  • tomcat 테스트 서버 설정
  • tomcat 테스트 서버 가동테스트
  • 테스트 프로젝트 생성 후 html동작 테스트
  • 백업과 import

어클리케이션 프로그램 개발환경을 위한 환경설정 java
1. jdk 11 설치
2. 환경변수 설정
3. 어플리케이션 개발용 eclipse 설치

  • jdk 11로 설정
  • 프로젝트 생성 후 테스트
  • 백업과 import
profile
코딩 프로?

0개의 댓글