사용자 - 관리자 : sys , system DB처리, 장애처리 용도로 사용
- 사용자 : scott 등.. 작업을 수행하는 용도로 사용
새로운 사용자를 생성하는 순서
1) 생성할 사용자의 default tablespace 를 결정하고 해당 tablespace 를 생성
2) 생성할 사용자의 temporary tablespace 를 결정하고 해당 tablespace 를 생성
3) 사용자를 생성
4) 적절한 프로파일과 권한 , 롤 등을 생성한 후 할당
실습 1. 사용자 생성하기
웹하드 서비스를 위한 계정 생성
default tablespace 로 ts_webhard 라는 tablespace를 생성 ( 웹하드 관련 테이블은 모두 이곳에 저장 )
ts_web_idx tablespace 에 웹하드 관련 인덱스 저장
계정 명을 webuser , 암호는 webpwd
권한은 일반적인 사용자 권한 전부 부여
정렬 작업등을 위한 temporary tablespace 는 temp_web 으로 결정
실습시작
(1) webuser 의 default tablespace 생성
sqlplus / as sysdba
SYS> create tablespace ts_webhard
2 datafile '/app/oracle/oradata/testdb/ts_webhard01.dbf' size 100M ;
SYS> create tablespace ts_web_idx
2 datafile '/app/oracle/oradata/testdb/ts_web_idx' size 10M ;
SYS> select tablespace_name , bytes /1024/1024 MB , file_name
2 from dab_data_files ; <--생성 확인
(2) temporary tablespace 생성
SYS> create temporary tablespace temp_web
2 tempfile '/app/oracle/oradata/testdb/temp_web01.dbf' size 10M ;
(3) 사용자 생성
SYS> create user webuser
2 identified by webpwd <-- 암호 지정부분
3 default tablespace ts_webhard <-- default tablespace 를 지정하는 부분
4 temporary tablespace temp_web <-- temporary tablespace 를 지정하는 부분
5 quota unlimited on ts_webhard <-- 할당량을 지정하는데 무제한으로 설정
6 quota 0m on system ; <-- system tablespace 를 사용못하게 설정
(4) 권한 설정
SYS> grant resource , connect to webuser ;
SYS> conn webuser/webpwd <-- 접속 되는지 확인
사용자 정보 확인하기
SYS> select username , default_tablespace "Default TS" , temporary_tablespace "Temp TS"
2 from dba_users
3 where username='WEBUSER" ;
Profile 관리하기
- Failed_login_attempts : 설정된 횟수만큼 login 을 시도한 후 실패 시 계정 잠금
- Password_lock_time : 위 1번에서 계정이 잠기면 며칠 동안 잠글 것인지 기간을 정하는 파라미터
- Password_life_time : 동일한 암호를 며칠간 사용할 것인지 설정하는 파라미터
- Password_grace_time : 위 3번항목에서 만료되어도 이 파라미터에서 지정된 값 만큼 암호를 변경할 기간을 허용
- Password_reuse_time : 동일한 암호를 다시 사용할 수 없도록 설정하는 기간, 같은 암호 사용 못하게 할때 쓰는 파라미터
- Password_reuse_max : 동일한 암호를 위 5번 설정을 피해 재사용할 경우 최대 사용 가능한 횟수를 지정하는 파라미터
- Password_verify_function : 암호를 복잡하게 만들기 위해 특정함수를 적용시켜 사용자가 입력한 암호가 암호로 적합한지 점검
- verify_function 함수 사용시 주의사항
- 암호는 최소 4글자 이상
- 암호는 사용자 계정과 달라야함
- 암호는 하나의 특수문자나 , 알파벳, 숫자가 포함되어야 함
- 암호는 이전 암호와 3글자 이상 달라야 함
Resource profile 관련 파라미터
- CPU_PER_SESSION : SESSION 이란 1명의 접속을 의미, 하나의 SESSION 이 CPU를 연속적으로 사용할 수 있는 최대시간을 설정
- SESSIONS_PER_USER : 하나의 사용자 계정으로 몇 명의 사용자가 동시에 접속할 수 있는지 설정하는 파라미터
- CONNECT_TIME : 하루동안 DB Server 에 접속할 수 있는 총 시간
- IDLE_TIME : 연속적으로 휴면시간이 이 값을 넘으면 접속을 해제, 접속 해제시 commit 안된 작업은 전부 rollback 됨
- LOGICAL_READS_PER_SESSION : 한 session 에서 사용 가능한 최대 block수 지정
- PRIVATE_SGA : MTS / shared server 일 경우 해당 session 의 SGA 사용량을 bytes 단위로 설정
- CPU_PER_CALL : 하나의 call 당 cpu 를 점유할 수 있는 시간 1/100초 단위
- LOGICAL_READS_PER_CALL : 하나의 call당 읽을 수 있는 block 의 개수 지정
실습 3. Resource 관련 profile 만들기
- 조건 1 : 1명당 연속적으로 cpu를 사용할 수 있는 시간 10초 제한
- 조건 2 : 하루 중 8시간만 db에 접속 가능하게 할 것
- 조건 3 : 10분 동안 사용하지 않으면 강제로 접속 끊음
SYS> create profile re_sample_prof limit
2 cpu_per_session 1000 <-- 1명당 사용할수 있는시간 10초 제한 1/100초 단위임
3 connect_time 480 <-- 60*8 8시간만 db에 접속 가능하게함
4 idle_time 10 ; <-- 10분 사용제한
사용자에게 profile 할당하기
1. 현재 사용자가 적용받고 있는 profile 확인하기
SYS> select username, profile
2 from dba_users
3 where username= "WEBUSER" ;
USERNAME PROFILE
---------- ---------
WERBUSER DEFAULT <--현재 아무profile 도 없음
2. 해당 profile 에 어떤 내용이 있는지 확인
- 위에서 만든 sample_prof 내용 조회
SYS> select * from dba_profiles
2 where profile="SAMPLE_PROF" ;
여러개 쭉 나오고 아래와 같은 옵션을 설정한 것도 나타남
privilege ( 권한 ) 관리하기
profile 은 사용자가 어떤 것들을 하지 못하게 제한하는 것이 목적
privilege 는 사용자에게 어떤 것들을 할 수 있게 허락해주는 것이 목적
- system 관련 privilege : system 전체에 영향을 주는 권한들을 모아놓은 것
- object 관련 privilege : 특정 object 에 관련된 privilege
SYSTEM 관련 주요 privilege |
||
대분류 | privilege | 설명 |
Index |
Create any index |
소유자에 상관없이 모든 테이블에 인덱스를 생성할 수 있는 권한 |
Drop any index |
소유자에 상관없이 모든 인덱스를 삭제할 수 있는 권한 |
|
Alter any index |
소유자에 상관없이 모든 인덱스를 수정할 수 있는 권한 |
|
table |
create table |
자신의 테이블을 생성할 수 있는 권한 |
create any table |
소유자에 상관없이 다른 user 이름으로 테이블을 생성할 수 있는 권한 |
|
alter any table |
소유자에 상관없이 모든 테이블의 구조를 수정할 수 있는 권한 |
|
drop any table |
소유자에 상관없이 모든 사용자의 테이블을 삭제할 수 있는 권한 |
|
update any table |
소유자에 상관없이 모든 사용자의 테이블을 업데이트할 수 있는 권한 |
|
delete any table |
소유자에 상관없이 모든 사용자의 테이블의 데이터를 삭제 할 수 있는 권한 |
|
insert any table |
소유자에 상관없이 모든 사용자의 테이블의 데이터를 삽입 할 수 있는 권한 |
|
session |
create session |
서버에 접속할 수 있는 권한 |
alter session |
접속 상태에서 환경값을 변경할 수 있는 권한 |
|
restricted session |
restricted 모드로 open 된 db에 접속할 수 있는 권한 |
|
tablespace |
create tablespace |
tablespace를 만들 수 있는 권한 |
alter tablespace |
tablespace를 수정할 수 있는 권한 |
|
drop tablespace |
tablespace를 삭제할 수 있는 권한 |
|
unlimited tablespace |
tablespace 사용 용량을 무제한으로 허용하는 권한, 즉 quota 옵션적용을 받지않음 |
SYSOPER /SYSDBA privilege |
|
privilege |
할 수 있는 일 |
SYSOPER |
startup / shutdown |
alter database mount / open |
|
alter database backup control file to .... |
|
recover database |
|
alter database archivelog |
|
restricted session |
|
SYSDBA |
SYSOPER privilege with admin option |
create database |
|
alter tablespace ... begin backup / end backup |
|
recover database until |
SYSTEM 관련 권한 할당하기 / 해제하기
- scott 사용자에게 create table , create session 권한을 할당
SYS> grant create table, create session to scott ;
- scott 사용자에게 create table 권한을 해제
SYS> revoke create table from scott ;
사용자가 가지고 있는 권한 조회
- scott 사용자가 가지고 있는 모든 권한 조회
SYS> select * from dba_sys_privs
2 where grantee = "SCOTT" ;
Object 관련 Privilege
주로 DML 과 연관이 많음. 즉 object 를 select , insert , update , delete 등을 할 수 있는 권한
object 권한 할당하기 / 해제하기 ( 실습 전에 webuser 계정으로 webtest 테이블을 생성하고 해야함 )
- scott 사용자에게 webuser 가 만든 webtest 테이블을 select 할 수 있도록 허용
SYS> grant select on webuser.webtest to scott ;
- scott 사용자에게 webuser 가 만든 webtest 테이블을 update 할 수 있도록 허용, 그리고 scott 사용자가 이 권한을 다른 사람에게 줄 수 있는 권한도 부여
SYS> grant update on webuser.webtest to scott with grant option ;
- scott 사용자가 가진 webuser의 webtest 테이블을 select 하는 권한을 해제
SYS> revoke select on webuser.webtest from scott ;
Role 관리하기
role 속에 여러가지 권한을 넣어두고 사용자에게 role 을 부여하면 여러가지 권한을 갖게됨
(1) role 생성하기
SYS> create role trole ;
(2) role 에 create session , create table 권한 할당
SYS> grant create session , create table to role ;
(3) 사용자에게 trole 할당
SYS> grant trole to scott ;
(4) 어떤 사용자가 어떤 role 을 사용하는지 확인
SYS> select * from dba_role_privs where grantee='SCOTT' ; <-- SCOTT 계정에 어떤 role 이 있는지 확인
(5) 어떤 role 에 어떤 권한이 있는지 확인
SYS> select * from dba_sys_privs where grantee = 'CONNECT' ; <--CONNECT 에 어떤 권한이 있는지 확인
'오라클 > 관리 실무' 카테고리의 다른 글
DBMS_JOB & DBMS_SCHEDULER (0) | 2014.10.27 |
---|---|
Oracle 저장구조 (0) | 2014.10.23 |
Tablespace 와 Data File 관리하기 (2) | 2014.10.21 |
Redo Log 관리하기 (0) | 2014.10.20 |
Control File 관리하기 (0) | 2014.10.20 |
ORACLE 시작하기 & 종료하기 (0) | 2014.10.20 |
Oracle Background Process (0) | 2014.10.17 |