SQL

오라클 계정 생성하기

에어팟맥스 2022. 7. 12. 20:24

------ ====== ***** 오라클 계정 생성하기 ***** ====== ------
   
   -- 오라클 계정 생성을 위해서 sys 또는 system 으로 연결하여 작업을 해야 한다.

 

* Oracle 11g 까지는 오라클 계정생성시 계정명앞에 c## 을 붙이는 것이 없었으나 
   Oracle 12 부터는 계정명앞에 c## 붙여야만 오라클 계정생성이 되어지도록 변경되었다.

 

 [SYS로 시작] --

   show user;
   -- USER이(가) "SYS"입니다.
   
   -- c##orauser1 이라는 오라클 일반사용자 계정을 생성한다. 암호는 aclass 이다.
   create user c##orauser1 identified by aclass default tablespace users;
   -- User C##ORAUSER1이(가) 생성되었습니다.
   
   grant create session to c##orauser1;
   -- Grant을(를) 성공했습니다.
   
   -- c##orauser1 이라는 오라클 일반사용자 계정을 삭제하기
   select *
   from dba_users;
   
   drop user c##orauser1;
   -- User C##ORAUSER1이(가) 삭제되었습니다.

 

-- *** Oracle 18C 에서 오라클 계정생성시 계정명앞에 c## 붙이는 것 없애기 *** --

    alter session set "_ORACLE_SCRIPT"=true;
    -- Session이(가) 변경되었습니다.
   
   -- orauser1 이라는 오라클 일반사용자 계정을 생성한다. 암호는 aclass 이다.
   create user orauser1 identified by aclass default tablespace users;
   -- User ORAUSER1이(가) 생성되었습니다.

 


   -------------------------------------------------------------------------------------
   -- DCL(Data Control Language) : 데이터 제어어 ==> grant, revoke     
   --                            : 자동 commit( Auto commit) 이므로 rollback 이 불가하다.
   -------------------------------------------------------------------------------------

 

   -- grant는 권한을 부여하는 명령어이고, revoke는 부여했던 권한을 뺏는 명령어이다.

   grant create session to orauser1; 
   -- Grant을(를) 성공했습니다.
   -- orauser1 이라는 오라클 사용자에게 오라클 서버에 접속이 가능하도록 하는 권한을 부여해주는 것이다.
   
   
   revoke create session from orauser1;
   -- Revoke을(를) 성공했습니다.
   -- orauser1 이라는 오라클 사용자에게 부여했던 오라클서버에 접속할 수 있는 권한을 취소하는 것이다.
   
   grant create table to orauser1;
   -- Grant을(를) 성공했습니다.
   
   drop user orauser1 cascade;
   -- User ORAUSER1이(가) 삭제되었습니다.

 

       데이터베이스에서 객체라 함은 ==> 테이블, 인덱스, 시퀀스, 프로시저, 함수 등을 말한다.
       orauser1 이라는 사용자 계정을 삭제하기 위한 전제조건은 orauser1 로 생성된 객체가 존재하지 않을 때이다.
       그런데 모든 객체를 제거하기에는 너무나 불편하다. 그래서 cascade 라는 옵션을 주면 
       orauser1 로 생성된 모든 객체를 먼저 제거하고나서 orauser1 이라는 사용자계정을 삭제한다.

   -- orauser1 이라는 오라클 일반사용자 계정을 생성한다. 암호는 aclass 이다.
   create user orauser1 identified by aclass default tablespace users;
   -- User ORAUSER1이(가) 생성되었습니다.
   
   -- 위에서 생성된 orauser1 이라는 오라클 일반사용자 계정에게 오라클서버에 접속이 되고, 테이블 등을 생성할 수 있는 여러가지 권한을 부여하기
   grant connect, resource, create view, unlimited tablespace to orauser1;
   -- Grant을(를) 성공했습니다.
   
   -- 오라클 계정 생성을 위해서 sys 또는 system 으로 연결하여 작업을 해야 한다. [SYS 끝] --

 

 


   ---- ===== ***** 다시 HR 로 복귀 ***** ===== -----

   show user;
   -- USER이(가) "HR"입니다.
   
   select *
   from HR.employees;
   
   select *
   from employees;
   -- 현재 오라클서버에 접속된 사용자가 HR 이므로 employees를 쓰면 자동적으로 HR.employees 로 인식한다.

  ---- ===== ***** 다시 SYS 로 복귀 ***** ===== -----

   show user;
   -- USER이(가) "SYS"입니다.
   
   select *
   from employees;
   -- SYS 인 상태로는 자동적으로 SYS.employees 로 인식함
   
   select *
   from HR.employees;
   -- 이렇게 하면 HR의 employees 로 인식함

Grant 하기

   -- orauser1 에게 HR 이 자신의 소유인 employees 테이블에 대해 select 할 수 있도록 권한을 부여한다.
   grant select on employees to orauser1;
   -- Grant을(를) 성공했습니다.
   
   
   -- orauser1 에게 HR 이 자신의 소유인 employees 테이블에 대해 update 할 수 있도록 권한을 부여한다.
   grant update on employees to orauser1;
   -- Grant을(를) 성공했습니다.
   
   
   -- orauser1 에게 HR 이 자신의 소유인 employees 테이블에 대해 delete 할 수 있도록 권한을 부여한다.
   grant delete on employees to orauser1;
   -- Grant을(를) 성공했습니다.

Revoke 하기

   -- orauser1 에게 HR 이 자신의 소유인 employees 테이블에 대해 delete 할 수 있도록 부여해준 권한을 회수한다.
   revoke delete on employees from orauser1;
   -- Revoke을(를) 성공했습니다.
   
   
   -- orauser1 에게 HR 이 자신의 소유인 employees 테이블에 대해 update 할 수 있도록 부여해준 권한을 회수한다.
   revoke update on employees from orauser1;
   -- Revoke을(를) 성공했습니다.
   
   -- orauser1 에게 HR 이 자신의 소유인 employees 테이블에 대해 select 할 수 있도록 부여해준 권한을 회수한다.
   revoke select on employees from orauser1;
   -- Revoke을(를) 성공했습니다.

한꺼번에 권한을 부여하고 한꺼번에 회수하기

   -- orauser1 에게 HR 이 자신의 소유인 employees 테이블에 대해 select, update, delete 할 수 있도록 권한을 부여한다.
   grant select, update, delete on employees to orauser1;
   -- Grant을(를) 성공했습니다.
   
   
   -- orauser1 에게 HR 이 자신의 소유인 employees 테이블에 대해 select, update, delete 할 수 있도록 부여해준 권한을 회수한다.
   revoke select, update, delete on employees from orauser1;
   -- Revoke을(를) 성공했습니다.