티스토리 뷰
스키마와 유저
• 유저
DB 안에서 어떤 권한을 가진 객체이다.
• 스키마
유저가 생성한(소유한) 모든 객체들의 집합이다.
권한
• 권한
- 시스템과 객체의 보안을 위해 존재한다.
- 객체 권한이 아닌 것은 다 시스템 권한이라고 할 수 있다.
• 시스템 권한
- 유저가 특정 데이터베이스에서 작업을 수행할 수 있는 권한이다.
- DBA가 권한을 부여한다.
- WITH ADMIN OPTION (이 옵션 가진 유저는 다른 디비 유저의 권한 취소가 가능하다. 연쇄 취소 X)
- select_catalog_role(데이터딕셔너리 select 권한을 가진 role)
- ANY 키워드 ex) grant select any table to demo;
• 객체 권한
- 유저가 특정 객체에 대해 특정 작업을 수행할 수 있는 권한이다.
- 객체의 소유자, 관리자가 권한을 부여한다.
- WITH GRANT OPTION(유저는 자신이 부여한 권한만 취소가 가능하다. 연쇄취소 O)
- ON 키워드 ex) grant select on scott.emp to demo;
유저 생성 명령어
1
2
3
4
5
6
7
8
|
CREATE USER [ username ]
IDENTIFIED [ BY password | EXTERNALLY ] --패스워드 또는 OS 인증방식
[ DEFAULT TABLESPACE tablespace ] --기본 테이블스페이스 지정
[ TEMPORARY TABLESPACE tablespace ] --임시 테이블스페이스 지정
[ QUOTA { int [K|M] | UNLIMITED } ON tablespace ] --quota 할당
[ PROFILE DEFAULT | profile ] --자원 제어, 암호 처리 방식 지정
[ ACCOUNT { UNLOCK | LOCK } ] --계정을 잠그거나 잠그지 않도록 설정
[ PASSWORD EXPIRE ]; --다음 로그인 시 패스워드 재설정하도록 설정
|
유저 생성
OS 환경 : Oracle Linux 6.3
DB 환경 : Oracle Database 12.1.0.2
1. hr, sh, oe user 생성하고 권한(connect, resource) 부여
create user hr
identified by hr
default tablespace users --default tablespace 지정
temporary tablespace temp; --temporary tablespace 지정
create user sh identified by sh;
create user oe identified by oe;
HR, SH, OE 유저에게 지정된 테이블스페이스를 확인한다.
select username, default_tablespace, temporary_tablespace
from dba_users
where username in ('HR','SH','OE');
생성한 유저들에게 connect, resource 권한을 부여한다.
grant connect, resource to hr, sh, oe;
--connect: 접속 권한
--resource: 객체(생성, 수정, 삭제) + 데이터(입력, 수정, 조회, 삭제) 권한
HR 유저로 접속하여 현재 가지고 있는 권한을 확인한다.
select * from session_privs;
*만약 여기서 profile 관련 에러가 발생한다면,
SYSTEM 계정으로 접속하여 @?/sqlplus/admin/pupbld.sql 를 실행한다.
이제 HR 유저로 접속하여 테이블을 생성해보자.
create table emp_test(
empno number,
ename varchar2(20),
hiredate date,
salary number,
deptno number
);
테이블이 잘 만들어졌는지 확인한다.
select table_name, tablespace_name
from user_tables
where table_name = 'EMP_TEST';
테이블에 데이터를 삽입하려 했는데 오류가 발생했다.
USERS 테이블스페이스 사용에 대한 권한이 없어서 발생하는 오류이다. 관리자 계정으로 접속하여 권한을 부여하자!
grant unlimited tablespace to hr;
--모든 테이블스페이스에 할당량(QUOTA)을 줄 수 있는 권한이다.
다시 HR 계정으로 돌아와서 세개의 행을 삽입하자.
insert into emp_test
values(1004, 'SUMIN', to_date('1995-04-07','yyyy-mm-dd'), 12000, 20);
insert into emp_test
values(1234, 'ILHAN', to_date('1995-05-08','yyyy-mm-dd'), 10000,10);
insert into emp_test
values(1111, 'HYOSUB', trunc(sysdate), 9000, 30);
데이터가 잘 삽입되었는지 확인해본다.
select * from emp_test;
redo log file과 controlfile을 설정하러 가보자..!
'ORACLE > ADMIN' 카테고리의 다른 글
Oracle Listener 구성(정적등록vs동적등록) (0) | 2020.07.28 |
---|---|
Oracle undo 언두 관리 (0) | 2020.07.21 |
Oracle redo log file, control file 다중화 (0) | 2020.07.20 |
Oracle Tablespace 테이블스페이스 생성 (0) | 2020.07.18 |
Oracle Database 데이터베이스 수동 생성 (5) | 2020.07.17 |