2014. 10. 27. 16:18

1 사용자 생성하기


[oracle@localhost ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.2.0 Production on Thu Oct 23 13:48:59 2014


Copyright (c) 1982, 2010, Oracle.  All rights reserved.



Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production

With the Partitioning option


SYS>set line 200


SYS>col tablespace_name for a10

SYS>col file_name for a50

SYS>select tablespace_name, bytes/1024/1024 MB, file_name

  2  from dba_data_files;


TABLESPACE         MB FILE_NAME

---------- ---------- --------------------------------------------------

EXAMPLE       345.625 /home/oracle/disk4/example01.dbf

USERS               5 /home/oracle/disk5/users01.dbf

UNDOTBS1          310 /home/oracle/disk5/undo01.dbf

SYSAUX            510 /home/oracle/disk4/sysaux01.dbf

SYSTEM            710 /home/oracle/disk4/system01.dbf

HAKSA                 /app/oracle/product/11g/dbs/MISSING00006

HAKSA                 /app/oracle/product/11g/dbs/MISSING00007


7 rows selected.


SYS>SYS>create tablespace ts_webhard

  2  datafile '/app/oracle/oradata/testdb/ts_web01.dbf' size 100M;


Tablespace created.


SYS>create tablespace ts_web_idx

  2  datafile '/app/oracle/oradata/testdb/ts_web_idx01.dbf' size 100M;


Tablespace created.



SYS>select tablespace_name, bytes/1024/1024 MB, file_name
  2  from dba_data_files;

TABLESPACE         MB FILE_NAME
---------- ---------- --------------------------------------------------
EXAMPLE       345.625 /home/oracle/disk4/example01.dbf
USERS               5 /home/oracle/disk5/users01.dbf
UNDOTBS1          310 /home/oracle/disk5/undo01.dbf
SYSAUX            510 /home/oracle/disk4/sysaux01.dbf
SYSTEM            710 /home/oracle/disk4/system01.dbf
HAKSA                 /app/oracle/product/11g/dbs/MISSING00006
HAKSA                 /app/oracle/product/11g/dbs/MISSING00007
TS_WEBHARD        100 /app/oracle/oradata/testdb/ts_web01.dbf
TS_WEB_IDX        100 /app/oracle/oradata/testdb/ts_web_idx01.dbf

9 rows selected.


SYS>create temporary tablespace temp_web
  2  tempfile '/app/oracle/oradata/testdb/temp_web01.dbf' size 100M;

Tablespace created.


SYS>  1  create user webuser
  2  identified by webpwd
  3  default tablespace ts_webhard
  4  temporary tablespace temp_web
  5  quota unlimited on ts_webhard
  6 quota 0m on system

User created.

SYS>grant resource, connect to webuser;

Grant succeeded.

SYS>conn webuser/webpwd;
Connected.

WEBUSER>


2 사용자 정보 확인하기

default tablespace 와 temporary tablespace 정보 확인하기

SYS>set line 200

SYS>col default_tablespace for a10

SYS>col temporary_tablespace for a10

SYS>select username, default_tablespace "Defautlt TS", temporary_tablespace "Temp TS"

  2  from dba_users

  3  where username='WEBUSER';


USERNAME                       Defautlt TS                    Temp TS

------------------------------ ------------------------------ ------------------------------

WEBUSER                        TS_WEBHARD                     TEMP_WEB


3 password 관련 profile 생성하기


조건

로그인 시도 5회 실패시 계정을 5일 동안 사용 못하게 할 것

계정의 암호는 10일에 한 번씩 변경하게 할 것

동일한 암호는 10일 동안 사용 못하게 할 것


SYS>create profile sample_prof limit

  2  failed_login_attempts 5

  3  password_lock_time 5

  4  password_life_time 10

  5  password_reuse_time 10;


Profile created.


4 resource 관련 profile 만들기 


조건

1명당 연속적으로  cpu를 사용할 수 있는 시간을 10초로 제한할 것

하루 중 8시간만 db에 접속 가능하게 할 것

10분 동안 사용하지 않으면 강제로 접속을 끊을 것


profile을 9i 이상 버전에서 즉시 적용시키기 위해서 입력하는 명령어

SYS>alter system set resource_limit=true;


System altered.


SYS>create profile re_sample_prof limit
  2  cpu_per_session 1000
  3  connect_time 480
  4  idle_time 10;

Profile created.

사용자에게   profile 할당하기
2,4번에서 만든 profile을 webhard에게 설정함

SYS>set pages 50

현재 모든 사용자가 적용받고 있는 profile 확인하기
SYS>select username "사용자명", profile "적용프로파일"
  2  from dba_users
  3  where username='WEBUSER';

사용자명                     적용프로파일
------------------------------ ------------------------------
WEBUSER                        DEFAULT

해당 profile에 어떤 내용이 있는지 확인하기

SYS>select * from dba_profiles
  2  where profile='SAMPLE_PROF';

PROFILE       RESOURCE_NAME                  RESOURCE LIMIT
------------- ------------------------------ -------- ----------
SAMPLE_PROF   COMPOSITE_LIMIT                KERNEL   DEFAULT
SAMPLE_PROF   SESSIONS_PER_USER              KERNEL   DEFAULT
SAMPLE_PROF   CPU_PER_SESSION                KERNEL   DEFAULT
SAMPLE_PROF   CPU_PER_CALL                   KERNEL   DEFAULT
SAMPLE_PROF   LOGICAL_READS_PER_SESSION      KERNEL   DEFAULT
SAMPLE_PROF   LOGICAL_READS_PER_CALL         KERNEL   DEFAULT
SAMPLE_PROF   IDLE_TIME                      KERNEL   DEFAULT
SAMPLE_PROF   CONNECT_TIME                   KERNEL   DEFAULT
SAMPLE_PROF   PRIVATE_SGA                    KERNEL   DEFAULT
SAMPLE_PROF   FAILED_LOGIN_ATTEMPTS          PASSWORD 5
SAMPLE_PROF   PASSWORD_LIFE_TIME             PASSWORD 10
SAMPLE_PROF   PASSWORD_REUSE_TIME            PASSWORD 10
SAMPLE_PROF   PASSWORD_REUSE_MAX             PASSWORD DEFAULT
SAMPLE_PROF   PASSWORD_VERIFY_FUNCTION       PASSWORD DEFAULT
SAMPLE_PROF   PASSWORD_LOCK_TIME             PASSWORD 5
SAMPLE_PROF   PASSWORD_GRACE_TIME            PASSWORD DEFAULT

16 rows selected.

SYS>col profile for a16
SYS>select * from dba_profiles
  2  where profile='RE_SAMPLE_PROF';

PROFILE          RESOURCE_NAME                  RESOURCE LIMIT
---------------- ------------------------------ -------- ----------
RE_SAMPLE_PROF   COMPOSITE_LIMIT                KERNEL   DEFAULT
RE_SAMPLE_PROF   SESSIONS_PER_USER              KERNEL   DEFAULT
RE_SAMPLE_PROF   CPU_PER_SESSION                KERNEL   1000
RE_SAMPLE_PROF   CPU_PER_CALL                   KERNEL   DEFAULT
RE_SAMPLE_PROF   LOGICAL_READS_PER_SESSION      KERNEL   DEFAULT
RE_SAMPLE_PROF   LOGICAL_READS_PER_CALL         KERNEL   DEFAULT
RE_SAMPLE_PROF   IDLE_TIME                      KERNEL   10
RE_SAMPLE_PROF   CONNECT_TIME                   KERNEL   480
RE_SAMPLE_PROF   PRIVATE_SGA                    KERNEL   DEFAULT
RE_SAMPLE_PROF   FAILED_LOGIN_ATTEMPTS          PASSWORD DEFAULT
RE_SAMPLE_PROF   PASSWORD_LIFE_TIME             PASSWORD DEFAULT
RE_SAMPLE_PROF   PASSWORD_REUSE_TIME            PASSWORD DEFAULT
RE_SAMPLE_PROF   PASSWORD_REUSE_MAX             PASSWORD DEFAULT
RE_SAMPLE_PROF   PASSWORD_VERIFY_FUNCTION       PASSWORD DEFAULT
RE_SAMPLE_PROF   PASSWORD_LOCK_TIME             PASSWORD DEFAULT
RE_SAMPLE_PROF   PASSWORD_GRACE_TIME            PASSWORD DEFAULT

16 rows selected.

사용자에게 profile 적용시키고 확인하기
SYS>alter user webuser profile sample_prof;

User altered.


SYS>select username, profile
  2  from dba_users
  3  where username='WEBUSER';

USERNAME                       PROFILE
------------------------------ ----------------
WEBUSER                        SAMPLE_PROF


SYS>alter user webuser profile re_sample_prof;

User altered.

SYS>select username, profile
  2  from dba_users
  3  where username='WEBUSER';

USERNAME                       PROFILE
------------------------------ ----------------
WEBUSER                        RE_SAMPLE_PROF

여러 개의 프로파일을 적용시킬 수 없으므로, 
프로파일을 만들 때 원하는 파라미터를 모두 넣고 한꺼번에 만든 후 적용을 시켜야 한다. 

사용 안하는 profile 삭제하기 
SYS>drop profile re_sample_prof;
drop profile re_sample_prof
*
ERROR at line 1:
ORA-02382: profile RE_SAMPLE_PROF has users assigned, cannot drop without CASCADE

* 현재 사용자에게 할당되어 있는 profile 은 기본적으로 삭제가 안됨
cascade 옵션을 사용하면 할당되어 있더라도 삭제 가능
삭제가 되면 해당 프로파일을 사용하던 사용자는 default profile을 사용하게 됨

SYS>drop profile re_sample_prof cascade;

Profile dropped.

SYS>select username, profile
  2  from dba_users
  3  where username='WEBUSER';

USERNAME                       PROFILE
------------------------------ ----------------
WEBUSER                        DEFAULT


권한 관리하기 


-system 관련 주요 권한


- sysoper / sysdba 권한


-  system 관련 권한 할당하기 / 해제하기

scott 사용자에게 create table, create session 권한을 할당

SYS>grant create table, create session to scott;


Grant succeeded.


scott 사용자에게 create table 권한 해제

SYS>revoke create table from scott;

Revoke succeeded.


- 사용자가 가지고 있는 권한 조회

SYS>select * from dba_sys_privs

  2  where grantee='SCOTT';


GRANTEE                        PRIVILEGE                                ADM

------------------------------ ---------------------------------------- ---

SCOTT                          UNLIMITED TABLESPACE                 NO

SCOTT                          CREATE SESSION                           NO


-object 관련 권한(privilege)

주로 dml과 연관 많음 : object 를 select, insert, update, delete 등을 할 수 있는 권한을 말함


-object 권한 할당 / 해제하기

scott 사용자에게 webuser가 만든 webuser 테이블을  select 할 수 있도록 하기

WEBUSER>create table webtest

  2  ( no number,

  3  name varchar2(10));


Table created.


WEBUSER>insert into webtest values(1, 'sss');


1 row created.


WEBUSER>select * from webtest;


        NO NAME

---------- ----------

         1 sss



SCOTT>select * from webuser.webtest;

select * from webuser.webtest

                      *

ERROR at line 1:

ORA-00942: table or view does not exist



SYS>grant select on webuser.webtest to scott;

Grant succeeded.

SYS>conn scott;
Enter password:
Connected.
SCOTT>select * from webuser.webtest;

        NO NAME
---------- ----------
         1 sss

scott 사용자에게 webuser가 만든 webtest 테이블을 update 할 수 있도록 하기
또 scott 사용가가 이 권한을 다른 사람에게 줄 수 있는 권한도 주기

SCOTT>update webuser.webtest
  2  set no=101
  3  where name='sss';
update webuser.webtest
               *
ERROR at line 1:
ORA-01031: insufficient privileges

SCOTT>conn / as sysdba
Connected.
SYS>grant update on webuser.webtest to scott with grant option;

Grant succeeded.

SYS>conn scott/tiger

SCOTT>update webuser.webtest
  2  set no=101
  3  where name='sss';

1 row updated.

SCOTT>select * from webuser.webtest;

        NO NAME
---------- ----------
       101 sss


scott 사용자가 가지고 있는 webuser의 webtest 테이블을 select 하는 권한을 해제

SCOTT>conn / as sysdba
Connected.
SYS>revoke select on webuser.webtest from scott;

Revoke succeeded.

SYS>conn scott/tiger
Connected.
SCOTT>select * from webuser.webtest;
select * from webuser.webtest
                      *
ERROR at line 1:
ORA-01031: insufficient privileges

scott 계정이 hr 계정에게 업데이트 권한만 부여함
SCOTT>grant update on webuser.webtest to hr with grant option;

Grant succeeded.

hr 계정이 언락 되어 있다면 아래와 같은 작업은 넘어가도 됨
SCOTT>conn / as sysdba
Connected.

SYS>alter user hr identified by hr account unlock;

User altered.

SYS>conn hr/hr
Connected.

webuser의 webtest 테이블을 조회할 수 있는 권한을 hr은 가지고 있지 않으므로 권한 에러 뜸
HR>select * from webuser.webtest;
select * from webuser.webtest
                      *
ERROR at line 1:
ORA-01031: insufficient privileges

업데이트 권한을 scott에게서 부여 받았기 때문에 업데이트는 정상적으로 됨
HR>update webuser.webtest
  2  set no=3
  3  where name='sss';

1 row updated.

HR>conn scott/tiger
Connected.
SCOTT>select * from webuser.webtest;
select * from webuser.webtest
                      *
ERROR at line 1:
ORA-01031: insufficient privileges

with grant option의 옵션은 DBA가 scott 계정의 권한을 해지하면 scott가 권한을 주었던 hr의 계정도 해지된다. 

WEBUSER>conn / as sysdba
Connected.
SYS>revoke update on webuser.webtest from scott;

Revoke succeeded.

SYS>conn scott/tiger
Connected.
SCOTT>update webuser.webtest
  2  set no=5
  3  where name='sss';
update webuser.webtest
               *
ERROR at line 1:
ORA-00942: table or view does not exist


SCOTT>conn hr/hr
Connected.
HR>update webuser.webtest
  2  set no=5
  3  where name='sss';
update webuser.webtest
               *
ERROR at line 1:
ORA-00942: table or view does not exist


role 관리하기 

role: 권한의 그룹


role 생성하기

SYS>create role trole;

Role created.


role에 create session, create table 권한 할당하기

SYS>grant create session, create table to trole;

Grant succeeded.


scott 사용자에게 trole 할당하기

SYS>grant trole to scott;

Grant succeeded.


어떤 사용자가 어떤 role를 사용하는지 확인하기

SYS>SELECT * FROM dba_sys_privs

  2  WHERE grantee='SCOTT';


GRANTEE                        PRIVILEGE                                ADM

------------------------------ ---------------------------------------- ---

SCOTT                          UNLIMITED TABLESPACE                     NO

SCOTT                          CREATE SESSION                           NO


어떤 role에 어떤 권한이 있는지 확인하기
SYS>select * from dba_sys_privs
  2  where grantee='CONNECT';

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
CONNECT                        CREATE SESSION                           NO

SYS>select * from dba_sys_privs
  2  where grantee='RESOURCE';

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
RESOURCE                       CREATE TRIGGER                           NO
RESOURCE                       CREATE SEQUENCE                          NO
RESOURCE                       CREATE TYPE                              NO
RESOURCE                       CREATE PROCEDURE                         NO
RESOURCE                       CREATE CLUSTER                           NO
RESOURCE                       CREATE OPERATOR                          NO
RESOURCE                       CREATE INDEXTYPE                         NO
RESOURCE                       CREATE TABLE                             NO

8 rows selected.


'DB > oralce' 카테고리의 다른 글

oracle client 윈도우 설정  (0) 2014.10.28
dbms_job / dbms_scheduler  (0) 2014.10.27
control file 다중화 실습  (0) 2014.10.26
oracle의 시작단계  (0) 2014.10.26
3 oracle background processes  (0) 2014.10.24
Posted by 성장하는yw