--db사용자 추가및 테스트
--티베로 테스트 테이블 스페이스 생성
CREATE TABLESPACE EXAM_TBL
DATAFILE '/tibero_naqs/tbdata/exam_tbl.tbf' SIZE 100M AUTOEXTEND OFF
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
CREATE TABLESPACE EXAM_IDX
DATAFILE '/tibero_naqs/tbdata/exam_idx.tbf' SIZE 100M AUTOEXTEND OFF
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
--사용자 추가
CREATE USER EXAM
IDENTIFIED BY EXAM
DEFAULT TABLESPACE EXAM_TBL;
--사용자 삭제
DROP USER [유저명] cascade;
DROP USER EXAM cascade;
--연결권한 설정
GRANT RESOURCE,CONNECT TO EXAM;
GRANT SELECT ANY TABLE TO EXAM;
--권한제거
REVOKE DBA FROM EXAM;
--DBA에 권한 등록 조회
SELECT *
FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'EXAM';
--통계데이터 생성
select
'EXEC DBMS_STATS.GATHER_SCHEMA_STATS (ownname => ''' || username || ''',method_opt => ''FOR ALL COLUMNS SIZE 10'',cascade => true, no_invalidate => false);'
from dba_users
where username in ('EXAM')
;
select
'EXEC DBMS_STATS.DELETE_SCHEMA_STATS (ownname => ''' || username || ''',no_invalidate => false);'
from dba_users
where username in ('EXAM')
;
EXEC DBMS_STATS.DELETE_SCHEMA_STATS(ownname => 'EXAM', no_invalidate =>false);
EXEC DBMS_STATS.GATHER_SCHEMA_STATS (ownname => 'EXAM',method_opt => 'FOR ALL COLUMNS SIZE 10',cascade => true, no_invalidate => false);
-- 기존권한 조회해서 똑같이 권한설정
SELECT 'GRANT '|| PRIVILEGE || ' TO EXAM;' AS GRANT1
FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'TIBERO';
begin
for X in (
select 'GRANT '|| PRIVILEGE || ' TO EXAM;' AS GRANT1
FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'TIBERO'
)
loop
execute immediate x.GRANT1;
end loop;
end;
GRANT DROP USER TO EXAM;
GRANT LOCK ANY TABLE TO EXAM;
GRANT SELECT ANY TABLE TO EXAM;
GRANT INSERT ANY TABLE TO EXAM;
GRANT UPDATE ANY TABLE TO EXAM;
GRANT DELETE ANY TABLE TO EXAM;
GRANT SYSDBA TO EXAM;
GRANT CREATE VIEW TO EXAM;
GRANT SELECT ANY SEQUENCE TO EXAM;
GRANT GRANT ANY ROLE TO EXAM;
GRANT EXECUTE ANY PROCEDURE TO EXAM;
GRANT DROP ANY TRIGGER TO EXAM;
GRANT GRANT ANY PRIVILEGE TO EXAM;
GRANT GRANT ANY OBJECT PRIVILEGE TO EXAM;
GRANT EXECUTE ANY LIBRARY TO EXAM;
GRANT CREATE ANY TABLE TO EXAM;
-- 다른 스키마의 권한을 테이블별로 사용할수 있게 준다.
GRANT ALL ON SMARTSTOCK_D.TD_FARM TO SMARTSTOCK;
--시스템 개인 및 개체 개인의 두 가지 종류의 권한이 있습니다.
GRANT ALL PRIVILEGES TO user;
--모든 시스템 권한을 사용자에게 부여하며 매우 신중하게 사용해야합니다!
GRANT ALL ON table TO user;
--SYNONYM 설정
(1) 문법
CREATE [PUBLIC] SYNONYM synonym이름
FOR [schema. ] 대상객체 ;
SYNONYM도 스키마 오브젝트이므로 만든 사람만 사용할 수 있다. 즉 SCOTT이 어떤 SYNONYM을 생성하게 되면 SCOTT만 사용할 수 있다는 뜻이다.
그래서 다른 사용자도 다 쓸 수 있게 생성하려면 PUBLIC이란 키워드를 사용해서 생성해야만 한다.
그리고 동의어를 생성하려면 CREATE SYNONYM 이란 권한이 필요하므로 아래와 같은 작업으로 권한을 먼저 할당해야 한다.
GRANT CREATE SYNONYM TO EXAM;
GRANT CREATE PUBLIC SYNONYM TO EXAM;
GRANT DROP PUBLIC SYNONYM TO EXAM;
(2) 생성 예
1. EXAM 사용자의 emp2 테이블의 동의어를 e2로 생성하세요.
CREATE SYNONYM e2 FOR emp2 ;
2. Scott 사용자의 department 테이블의 동의어를 d2로 생성하되 모든 사용자들이 사용할 수 있도록 생성하세요.
CREATE PUBLIC SYNONYM d2 FOR department ;
(3) SYNONYM 조회하기
SELECT *
FROM user_synonyms ;
SELECT *
FROM DBA_SYNONYMS;
(4) SYNONYM 삭제하기
DROP SYNONYM E2;
GRANT와 REVOKE 는 권한과 관련된 예약어이다.
GRANT 는 권한을 부여할 때 사용하고 REVOKE는 부여된 권한을 뺏을때 사용한다.
예를들어 DBA가 사용자 계정을 생성 할 때 'CREATE USER' 라는 명령어를 사용한다.
하지만 이렇게 생성된 사용자는 DB에 접속하지 못한다. 접속이 가능하게 하려면 'GRANT'명령어로 'CREATE 'SESSION' 권한(Privilege)을 부여하면 그제서야 그 사용자는 디비에 접근이 가능하다.
SYSTEM PRIVILEGE
DBA만 부여 할 수 있는 권한을 SYSTEM PRIVILEGE 라고 한다.
대표적인 SYSTEM PRIVILEGE는 'CREATE SESSION', 'CREATE TABLE', 'CREATE SEQUENCE', 'CREATE VIEW', 'CREATE PROCEDURE' 가 있다.
유저 생성
CREATE USER [유저명] IDENTIFIED BY [비밀번호];
ex) CREATE USER SHIINATSU IDENTIFIED BY *******;
-> 'SHIINATSU' 라는 유저를 생성, 비밀번호는 '*******'
※ 유저 패스워드 변경
ALTER USER [유저명] IDENTIFIED BY [변경할 비밀번호];
ex) ALTER USER SHIINATSU IDENTIFIED BY #######;
-> 'SHIINATSU' 라는 유저의 비밀번호를 '#######'로 변경
※ 유저 삭제
DROP USER [유저명];
ex) DROP USER SHIINATSU;
-> 'SHIINATSU' 라는 유저를 삭제
※ 시스템 권한
GRANT [권한명|롤|ALL] TO [유저명|롤|PUBLIC]
[WITH ADMIN OPTION|WITH GRANT OPTION]
ex) GRANT CREATE SESSION TO SHIINATSU;
-> 'SHIINATSU' 라는 유저에게 DB에 연결할 수 있는 권한부여
ex) GRANT CREATE TABLE TO SHIINATSU;
-> 'SHIINATSU' 라는 유저에게 테이블을 생성할 수 있는 권한부여
ex) GRANT CREATE SESSION, CREATE TABLE TO SHIINATSU;
-> 권한을 동시에 여러개 줄 때는 콤마(,)로 구분
WITH ADMIN OPTION : (A=>B 권한부여, B=>C 권한부여) A=>B 권한제거시 C의 권한은 유지
WITH GRANT OPTION : (A=>B 권한부여, B=>C 권한부여) A=>B 권한제거시 C의 권한도 같이제거
※ OBJECT 권한 : 특정 객체에 조작을 할 수 있는 권한
GRANT [권한명|ALL] ON [객체명|PUBLIC] TO [유저명];
ex) GRANT ALL ON [pakage_test] TO SHIINATSU;
-> [pakage_test]의 모든 권한을 'SHIINATSU' 유저에게 부여
※ 권한 제거(REVOKE) : 부여한 권한을 제거
REVOKE [권한명|ALL] ON [객체명] FROM [유저명|롤|PUBLIC];
ex) REVOKE CREATE SESSION FROM SHIINATSU;
-> 'SHIINATSU' 유저의 DB 연결 권한을 제거
'데이터베이스 > 티베로' 카테고리의 다른 글
시퀀스 현재값 변경하기 (0) | 2021.09.10 |
---|---|
Transaction Lock 및 오래된 SESSION 삭제 (0) | 2021.09.10 |
티베로 통계자료 생성 (0) | 2021.09.10 |
테이블 스페이스 계산 (0) | 2021.09.10 |
테이블명 변경 (0) | 2021.09.09 |
댓글