IT/오라클

사용자 생성 및 권한 설정

Beautifulkim 2018. 4. 11. 11:06

-- quota 할당량은 무제한

create user user03 identified by "oracle" 

default tablespace myts 

quota Unlimited on myts;


--사용자 설정 권한 부여

GRANT CONNECT , RESUMABLE TO USER03;


-- 이것은 테이블 스키마

CREATE TABLE T100 (

    C NUMBER(6)

);


GRANT INSERT ON T100 TO USER03;

 -- 타인의 테이블에 데이터 삽입, 여기서 SYSTEM은 타인의 아이디

-- INSERT INTO 사용자명.T100.VALUES(1); : 사용자명을 스키마라고 칭함

INSERT INTO SYSTEM.T100.VALUES(1);

DESC SYSTEM.T100;

-- SELECT 권한 부여

GRANT SELECT ON T100 TO USER03;


SELECT * FROM T100;

SELECT * FROM SYSTEM.T100;

-- 커밋을 안하면 상대방이 삽입하였던 값을 상대방은 볼수 없다.

COMMIT;

-- USER03이 값을 업데이트 할수 있는 조장에게 모든 권한 요청(CMD 창)

GRANT ALL ON T100 TO USER03;-- 특정사용자에게만 all 권한 부여

GRANT ALL ON T100 TO TO PUBLIC; -- 모든 사용자에게 ALL 권한 부여

-- 모든 권한 삭제

-- 모든 사용자에게 권한 삭제

REVOKE ALL ON T100 FROM PUBLIC;

-- (X) 요렇게 권한은 안됨

REVOKE ALL ON T100 FROM USER03;


-- 도스창에서 c테이블에 1 증가시킴

update system.t100 set c=c+1;

select * from system.t100;-- 도스창에서 결과 확인하고

select * from t100;-- 이 창에서 조장도 결과확인

commit; -- 트랜젝션 종료


-- USER03 사용자 삭제 : system권한에서

DROP USER USER03 CASCADE;


-- 도스창에서 user03에 대한 비번 변경하기

alter user user03 identified by "oracle03"

-- 도스창 접속해제

disconn;

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

-- 접속중인 세션보기

select sid, serial#, username from v$session;

-- USER03 세션 강제해제 ( 'SID, SERIAL#' 입력 )

alter system kill session '142,61';


DROP USER USER03 CASCADE;

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

-- autocommit 설정

set autocommit on;

-- autocommit 해제

set autocommit off;

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

-- 데이터 딕셔너리 ( 자료사전 )


-- DESC 명령어로 데이터 딕셔너리 뷰 USER_TABLES의 구조

desc user_tables;


select table_name 

from user_tables 

order by table_name desc;


-- limit 1. 한계(점), 한도   2. (허용 한도에 대한) 제한, 허용치 

-- 컬럼값 = limit

-- 인라인뷰는 SQL 문 내부에 뷰를 정의하고 이를 테이블처럼 사용함.

/*

SELECT ROWID, ROWNUM, EMPNO, ENAME, HIREDATE

FROM EMP;


SELECT EMPNO, ENAME, HIREDATE

FROM EMP

ORDER BY HIREDATE;


SELECT ROWNUM, EMPNO, ENAME, HIREDATE

FROM EMP

ORDER BY HIREDATE;


CREATE OR REPLACE VIEW VIEW_HIRE

AS

SELECT EMPNO, ENAME, HIREDATE

FROM EMP

ORDER BY HIREDATE;


SELECT ROWNUM, EMPNO, ENAME, HIREDATE

FROM VIEW_HIRE;


SELECT ROWNUM, EMPNO, ENAME, HIREDATE

FROM VIEW_HIRE

WHERE ROWNUM<=5;


SELECT ROWNUM, EMPNO, ENAME, HIREDATE

FROM ( SELECT EMPNO, ENAME, HIREDATE

FROM EMP

ORDER BY HIREDATE)

WHERE ROWNUM<=5;

*/


/*

    인라인 뷰를 사용하여 

    급여를 많이 받는 순서대로 

    3명만 출력하는 뷰(SAL_TOP5_VIEW)를 작성하시오.

*/

-- 뷰를 생성할 때 ROWNUM과 같은 가상 컬럼을 사용하려면

-- 사용자가 반드시 별명을 따로 설정해야 한다.

select ename, sal from emp order by sal desc;

select rownum, ename, sal from (select ename, sal from emp order by sal desc)

where rownum<=3;

-- rownum 은 오라클이 만든 가상 컬럼이므로 뷰에 올수 없음. 따라서 가상의 별명을 지정해야함

create or replace view SAL_TOP5_VIEW

as

select rownum "급여 순위", ename, sal

from (select ename, sal from emp order by sal desc)

where rownum<=3;


select * from sal_top5_view;-- 뷰(sal_top5_view)로 검색

-- 14장 28 페이지 참조