--- **** SYS 또는 SYSTEM 에서 아래와 같은 작업을 한다. 시작 **** --- => 위의 데이터베이스를 local_sys로 바꿈
show user;
-- USER이(가) "SYS"입니다.
-- orauser1 이라는 오라클 일반사용자 계정을 생성합니다. 암호는 gclass 라고 하겠습니다.
alter session set "_ORACLE_SCRIPT"=true;
-- Session이(가) 변경되었습니다.
create user orauser1 identified by gclass default tablespace users;
-- User ORAUSER1이(가) 생성되었습니다.
-- orauser1 계정의 암호를 abcd 로 변경한 것임.
alter user orauser1 identified by abcd;
-- User ORAUSER1이(가) 생성되었습니다.
alter user orauser1 identified by gclass;
-- User ORAUSER1이(가) 변경되었습니다.
/*
왼쪽에 접속
+ 새접속
Name: local_orauser1
사용자 이름:orauser1
비번:멋대로
테스트 누르기
--> 유저명/암호가 맞지 않아 로그온할 수 없음.
암호를 gclass로 입력 후 테스트 누르기
--> 사용자 ~는 create session 권한을 가지고있지 않음:로그온할 수 없음
--> 왜? 오라클 서버에 접속할 수 있는 권한이 없어서
grant 하고 권한 주고 다시 해보면 된다.
*/

이렇게 뜰 텐데, 밑에서 권한을 부여해주고 나서 다시 한번 만들자
-- 생성되어진 오라클 일반사용자 계정인 orauser1 에게 오라클서버에 접속이 되어지고,
-- 접속이 되어진 후 테이블 등을 생성할 수 있도록 권한을 부여해주겠다.
grant connect, resource, unlimited tablespace to orauser1;
-- Grant을(를) 성공했습니다.
--- **** SYS 또는 SYSTEM 에서 작업을 하는 것 끝 **** ---

성공이 뜨면 저장 후 접속한다!
--- **** HR에서 아래와 같은 작업을 한다. **** ---
show user;
-- USER이(가) "HR"입니다.
select *
from HR.employees; -- 이게 원칙이지만, 현재 오라클 서버에 접속된 사용자가 HR 이므로 HR.employees 대신에 employees 을 쓰면 HR.employees 으로 인식해준다.
select *
from employees;
-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 select 할 수 있도록 권한을 부여하겠습니다.
grant select on employees to orauser1;
-- Grant을(를) 성공했습니다.
-- orauser1 에게 HR이 자신의 소유인 departments 테이블에 대해 select 할 수 있도록 권한을 부여하겠습니다.
grant select on departments to orauser1;
-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 update 할 수 있도록 권한을 부여하겠습니다. - auto 커밋 grant
grant update on employees to orauser1;
-- Grant을(를) 성공했습니다.
-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 delete 할 수 있도록 권한을 부여하겠습니다. - auto 커밋 grant
grant delete on employees to orauser1;
-- Grant을(를) 성공했습니다.
select *
from employees
where employee_id = 100;
select *
from employees
where department_id is null;
--아직 local_arauser1 에서 커밋 안해서 제대로 보임(select는 커밋 안 해도 보임, 나머지 dml은 안 됨)
update employees set salary = 22222
where employee_id = 100; -- local_arauser1 에서 커밋 안 해서 락이 걸린 상태
update employees set salary = 7777
where department_id is null;
-- local_arauser1 에서 커밋 안 해서 락이 걸린 상태 (해당행)
-- !!!!!!!!! 꼭 local_arauser1 에서 업데이트,딜리트 할때 커밋해야만 한다 !!!!!!!!!!
-- 반드시 해야함 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 select 권한을 회수하겠습니다.
revoke select on employees from orauser1;
-- Revoke을(를) 성공했습니다.
revoke select on departments from orauser1;
-- 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, update, delete 권한을 한꺼번에 주겠습니다.
grant select, update, delete on employees to orauser1;
-- grant 을(를) 성공했습니다.
rollback;
--롤백 완료.
-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 select, update, delete 권한을 회수하겠습니다.
revoke select, update, delete on employees from orauser1;
-- Revoke을(를) 성공했습니다.
-- 오라클을 설치한지 6개월이 지나면 자동적으로 HR의 암호가 만료가 되어진다.
-- 그래서 아래와 같이 암호를 갱신해주면 됩니다.
show user;
-- USER이(가) "HR"입니다.
alter user hr identified by gclass;
-- User HR이(가) 변경되었습니다.
show user;
-- USER이(가) "SYS"입니다.
alter user hr identified by gclass;
-- User HR이(가) 변경되었습니다.
show user;
-- USER이(가) "HR"입니다.