안녕하세요 Surmin 입니다.
이번에는 TOAD에 접속 시 스키마 브라우저에 어떻게하면 다른 테이블에 권한을 받은 테이블을 볼수 있게 할지 알아보는 시간을 가지겠습니다.
참고하시면 좋을 것 같습니다.
Test
# SYS(DBA 권한) 접속
-- MIS 사용자 생성 (테이블 소유자 역할)
CREATE USER mis IDENTIFIED BY "mis123";
GRANT CONNECT, RESOURCE TO mis;
GRANT CREATE SYNONYM TO mis;
GRANT UNLIMITED TABLESPACE TO mis;
-- atest 사용자 생성 (일반 사용자 - 권한 테스트용)
CREATE USER atest IDENTIFIED BY "a123";
GRANT CONNECT TO atest;
GRANT CREATE SYNONYM TO atest;
-- MIS 사용자로 접속
CONNECT mis/mis123;
-- 직원 테이블 생성
CREATE TABLE EMP (
EMPNO NUMBER(4) PRIMARY KEY,
ENAME VARCHAR2(30),
JOB VARCHAR2(30),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
);
-- 부서 테이블 생성
CREATE TABLE DEPT (
DEPTNO NUMBER(2) PRIMARY KEY,
DNAME VARCHAR2(30),
LOC VARCHAR2(30)
);
-- 프로젝트 테이블 생성
CREATE TABLE PROJECT (
PROJECT_ID NUMBER PRIMARY KEY,
PROJECT_NAME VARCHAR2(100),
START_DATE DATE,
END_DATE DATE,
BUDGET NUMBER(10,2)
);
-- 급여 테이블 생성 (민감 정보)
CREATE TABLE SALARY (
EMP_ID NUMBER PRIMARY KEY,
BASE_SALARY NUMBER(10,2),
BONUS NUMBER(10,2),
TAX NUMBER(10,2)
);
-- 샘플 데이터 입력
INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-02-1981','DD-MM-YYYY'), 1600, 300, 30);
INSERT INTO EMP VALUES (7521, 'WARD', 'SALESMAN', 7698, TO_DATE('22-02-1981','DD-MM-YYYY'), 1250, 500, 30);
INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER', 7839, TO_DATE('02-04-1981','DD-MM-YYYY'), 2975, NULL, 20);
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
INSERT INTO PROJECT VALUES (1, 'Oracle Migration', TO_DATE('01-01-2025','DD-MM-YYYY'), TO_DATE('30-06-2025','DD-MM-YYYY'), 500000);
INSERT INTO PROJECT VALUES (2, 'Web Development', TO_DATE('01-02-2025','DD-MM-YYYY'), TO_DATE('30-04-2025','DD-MM-YYYY'), 200000);
INSERT INTO SALARY VALUES (7369, 50000, 5000, 10000);
INSERT INTO SALARY VALUES (7499, 60000, 8000, 12000);
COMMIT;
#atest 사용자에게 선택적 권한 부여
## MIS 사용자가 ATEST 사용자에게 권한 부여
-- MIS 사용자로 접속 상태에서
CONNECT mis/mis123;
-- EMP 테이블: 모든 권한 부여
GRANT SELECT, INSERT, UPDATE, DELETE ON MIS.EMP TO ATEST;
-- DEPT 테이블: 읽기와 추가만 가능
GRANT SELECT, INSERT ON MIS.DEPT TO ATEST;
-- PROJECT 테이블: 읽기만 가능
GRANT SELECT ON MIS.PROJECT TO ATEST;
-- SALARY 테이블: 권한 없음 (접근 불가)
권한 부여 결과:
- EMP: SELECT, INSERT, UPDATE, DELETE (모든 DML 가능)
- DEPT: SELECT, INSERT (조회와 추가만)
- PROJECT: SELECT (조회만)
- SALARY: 권한 없음 (접근 불가)
테스트 시나리오 1: mis 사용자로 접속
- Session Browser 사용할려면 권한들이 필요하다고 나옴
- 간단하게 하기위해서는 DBA권한부여

#sys계정에서 mis계정한테 dba권한부여 후 정상적으로 보이는것을 확인
SQL> GRANT DBA TO MIS;
Grant succeeded.

DBA권한 있거나, 없거나 상관없이 Schema Browser는 출력확인
#sys에서
SQL> REVOKE DBA FROM mis;

atest 사용자 Test
- TOAD 접속 후 Schema Browser 확인
- 위에서 권한 할당하였지만, 아무것도 안나옴을 확인

#정상 조회확인
SELECT * FROM MIS.EMP;
SELECT * FROM MIS.DEPT;
SELECT * FROM MIS.PROJECT;



-- atest 사용자로 접속
CONNECT atest/a123;
-- Private 시노님 생성 (권한이 있는 테이블만)
CREATE SYNONYM AEMP FOR MIS.EMP;
CREATE SYNONYM ADEPT FOR MIS.DEPT;
CREATE SYNONYM APROJECT FOR MIS.PROJECT;
TOAD 접속후 카테고리에서 Synonyms 선택 후 출력 확인
-- atest 사용자로 접속
CONNECT atest/a123;
-- Private 시노님 생성 (권한이 있는 테이블만)
CREATE SYNONYM AEMP FOR MIS.EMP;
CREATE SYNONYM ADEPT FOR MIS.DEPT;
CREATE SYNONYM APROJECT FOR MIS.PROJECT;

TOAD 접속후 카테고리 Tables 설정 시 안보임을 확인

DBA권한 부여 시 안보임 확인
SQL> GRANT DBA TO ATEST;
Grant succeeded.
