티스토리 뷰

ORACLE/ADMIN

Oracle User 유저 생성

공부하는알파카 2020. 7. 19. 14:08

스키마와 유저

• 유저

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 redo log file, control file 다중화

Redo log file 리두 로그 파일은 데이터베이스의 모든 변경사항을 기록하는 파일이다. 따라서 리두 로그 파일은 장애 발생 시 반드시 필요하기 때문에 복사본을 가지고 있다. 이 복사본을 멤버라고

myalpaca.tistory.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함