[ORACLE] 테이블 생선 필요 권한과 부여

privatekim·2024년 6월 24일
0

ORACLE

목록 보기
18/38

테이블 생성

테이블을 생성하기 위해 몇가지 고려해야할 사항이 있다.

  1. 테이블 이름, 칼럼이름, 유저이름, 객체이름, 제약조건 이름은 문자로 시작한다.

  2. 한글을 사용할 수 있지만, 데이터가 언어에 종속되기 때문에 타 지역에서 한글이 깨질 수 있다. 보편적으로 영어 사용

  3. 문자의 길이는 1~30 byte

  4. 문자, 숫자, 특수문자(_,#,$) 만 가능하다.

  5. 대소문자 구분 X (test, TEST 같다.) 하지만 딕셔너리 테이블에는 대문자로 저장된다. 따라서 조회할 때 대문자로 조회하는 것이 좋다.

  6. 소문자 emp 테이블이 있을 경우, 대문자 EMP 생성 X

  7. 동일한 유저가 소유한 객체이름은 중복되면 안된다.
    ex) insa.emp가 존재하는 경우 insa.emp의 뷰를 생성할 수 없다.

  8. 예약어는 사용할 수 없다.

필요 권한

테이블 생성을 위해 2가지 권한이 필요하다.

  1. CREATE TABLE의 시스템 권한.
  2. 테이블을 저장할 수 있는 테이블 스페이스에 대한 권한(QAOTA)
SELECT * FROM user_sys_privs;

위 코드를 통해 우리는 insa 계정에 부여된 시스템 권한을 확인할 수 있다.

SELECT * FROM user_ts_quotas;

위 코드를 통해 우리는 insa 계정에 부여된 quota정보에 대해 확인할 수 있다.

즉, 현재 insa는 필요한 quota의 값은 문제가 없지만, CREATE TABLE에 대한 시스템 원한이 없기 때문에 문제가 생길 것이다.

실제로 실행시켜보면 다음과 같이 오류가 나타나능 것을 확인할 수 있다.

CREATE TABLE 권한 부여

GRANT CREATE TABLE TO insa;

정상적으로 권한이 부여가 된것을 확인한 후 다음 코드를 실행하면 정상적으로 TEST테이블이 생성된 것을 확인할 수 있다.

CREATE TALBE test(id number, name varchar2(20), day date);

TABLESPACE 지정

하지만, 생성된 test 테이블에 대해 TABLESPACE를 지정하지 않았다.
이런 경우 해당 계정의 DEFAULT TABLESPACE에 저장되는데 이는 다음 코드를 통해 확인할 수 있다.

select * from user_users;

해당 코드를 통해 유저의 전반적인 내용을 확인할 수 있으며 아래 사진의 DEFAULT_TABLESPACE를 통해 현재 DEFAULT TABLESPACE가 USERS임을 확인할 수 있다.

다만, 계정 생성시, DEFAULT_TABLESPACE를 생략하게 된다면 자동으로 TABLESPACE를 SYSTEM으로 지정하기 때문에 항상 지정하는 습관을 가지느 것이 중요하다.

CREATE TABLE test1(id number, name varchar2(20), day date) 
TABLESPACE users;

우리는 user_tables를 통해 현재 유저가 가진 테이블의 정보를 조호할 수 있다.

0개의 댓글