12. SYS계정 사용자 관리


1. 사용자 계정

  • sys,system : 오라클 데이터베이스 관리자
    • DBA권한 자동 할당
    • sys
      • 데이터 딕셔너리 소유자
    • system
      • 모든 권한이 sys와 같으나 데이터베이스 생성 권한 없음
  • user
    • 사용자, 오라클 서버에 접속하기 위해 사용하는 것이 user
  • schema
    • 특정 사용자가 만들어놓은 모든 오브젝트 집합

2. 오라클의 논리적 저장구조

  • 오라클
    • 데이터관리
    • 데이터를 저장, 추출, 삭제 변경하는 작업
    • 데이터는 파일에 저장
  • 오라클 데이터베이스
    • 데이터파일들을 가지고 있다
    • 오라클 내부에서는 논리적인 개념으로 데이터 관리
      • 데이터블록 : 오라클에서 데이터를 저장하는 가장 최소의 논리적 단위
        • 사이즈는 2k,4k,8k,16k,32k,64k, 기본 8k
      • 익스텐트 : 8개의 데이터 블록이 모여 익스텐트가 된다
      • 세그먼트 : 익스텐트가 모여 세그먼트가 된다
      • 테이블스페이스 : 세그먼트가 모여서 테이블스페이스가 된다
        • 테이블, 인덱스, 프로시저, 뷰등 여러 객체 저장
      • 데이터베이스 : 테이블스페이스들이 모인 것
    • 물리적인 데이터파일(.dbf, .ora)은 테이블 스페이스와 대응

3. 테이블 스페이스 생성

정보 조회

--사용자 계정 정보 조회
select * from dba_users;

--데이터 파일에 대한 정보 조회
select * from dab_date_files;

--테이블스페이스에 대한 정보 조회
select * from dba_tablespaces;

테이블스페이스 생성

create tablespace 테이블스페이스명
datafile 경로 size 크기
autoextend on next 크기 : 자동증가옵션

create tablespace tb_test1
datafile 'C:\mydata\tb_test1.dbf' size 48m
autoextend on next 10m;


--한번에 여러개 생성
create tablespace tb_test2
datafile 
'C:\mydata\tb_test2_01.dbf' size 48m
autoextend on maxsize 1000m,
'C:\mydata\tb_test2_02.dbf' size 48m
autoextend on maxsize 1000m,
'C:\mydata\tb_test2_03.dbf' size 48m
autoextend on maxsize 1000m;

테이블스페이스 제거

drop tablespace 테이블스페이스명;
drop tablespace 테이블스페이스명
including contents and datafiles; : 물리적인 데이터파일까지 삭제

drop tablespace tb_test2
    including contents and datafiles;

4. 사용자 계정 관리

사용자 계정 만들기

alter session set “_ORACLE_SCRIPT”=true;
create user 사용자이름
identified by 비밀번호
default tablespace 테이블스페이스명;

alter session set "_ORACLE_SCRIPT"=true;

create user testuser1
identified by testuser123
default tablespace tb_test1;

사용자 삭제

drop user 사용자이름

drop user testuser;

--해당 사용자가 이미 오브젝트를 만들었을 경우 삭제 불가
drop user testuser cascade;
--오브젝트까지 삭제

권한관리

-- 권한 조회
select * from dba_sys_privs
where grantee='TESTUSER2';

-- 롤 조회
select * from dba_role_privs
where grantee='TESTUSER2';
  • 권한 추가

    grant 권한 to 사용자명;

--접속권한
grant create session to testuser2;

--테이블생성 권한
grant create table to testuser2;
  • 권한 박탈

    revoke 권한 from 사용자명;

revoke create table from testuser2;

롤 관리

  • 롤 부여
    grant resource, connect to testuser;
    

계정 락

--잠긴 계정 열기
--alter user 사용자ID account unlock;


--계정 잠그기
--alter user 사용자ID account lock;

계정 암호 변경

--기존 계정의 암호 변경하기
--alter user 사용자ID identified by 새로운암호;

5. 롤

  • 권한에 대한 부여와 관리를 보다 편리하게 하기 위해 사용
  • 권한의 그룹
--롤 생성하기
create role testrole;


--롤에 권한 부여
grant create session to testrole;
grant create table to testrole;

--사용자에게 롤 부여
grant testrole to testuser;

6. 오브젝트에 관한 권한

  • 해당 오브젝트를 소유한 계정에서 권한을 부여하거나 박탈할 수 있다
--hr계정에서
select * from employees; --조회 가능

--scott계정에서
select * from hr.employees; --권한이 없어 조회 불가

--hr계정에서
grant select on hr.employees to scott; --scott에게 조회 권한 부여
revoke select on hr.employees from scott; -- 조회권한 박탈
grant update on hr.employees to scott; -- 업데이트 권한 부여
revoke update on hr.employees from scott; --업테이트 권한 박탈

7. 위임

  • with admin option
  • with grant option
    • 해당 오브젝트의 권한을 위임
    • 또 다른 사용자에게 권한을 할당 가능
--hr 계정에서
grant select on hr.employees to testuser; --조회권한만 부여

--testuesr 계정에서
select * from hr.employees; -- 조회 가능
grant select on hr.employees to scott; -- 스콧에게 권한부여 불가


--hr계정에서
grant select on hr.employees to testuser with grant option; --권한위임

--testuesr 계정에서
select * from hr.employees; -- 조회 가능
grant select on hr.employees to scott; -- 스콧에게 권한부여 가능

--scott 계정에서
select * from hr.employees; --조회가능