Oracle PDB에 Tablespace와 User 만들고 권한부여하기

앞에서 리눅스(CentOS)에 Oracle12c를 설치하는 포스트를 올렸다. 그리고 PDB를 생성하고 PDB에 PDB만의 관리자 권한을 갖는 pdba라는 계정을 만드는 과정까지 추가로 포스트를 작성했다.

그리고 이번 포스트에서는 PDB에 CDB의 관리자 계정이 아닌 앞에서 생성한 PDB의 관리자계정(pdba)로 접속하여…

1. 테이블스페이스를 만들고

2. 사용자 계정을 만들고

3. 생성한 사용자 계정에 권한을 부여한 다음

4. 생성한 사용자 계정으로 접속하여 테이블을 만들고 Insert 하기

까지의 과정을 포스팅 한다.

PDB에 테이블스페이스와 일반 사용자 계정 만들기

먼저 앞의 포스트에서 생성한 PDB인 mypdb에 PDB의 관리자계정인 pdba로 접속한다.

oracle PDB에 PDB관리자 계정으로 접속하기
oracle PDB에 PDB관리자 계정으로 접속하기

이 때 sysdba 권한으로 접속해야 한다. 앞의 포스트에서 설명했지만 sysdba 권한으로 접속해도 CDB로의 세션 전환은 거부된다. pdba는 오로지 mypdb라는 PDB의 Admin 권한만을 갖고 있다.

테이블스페이스를 만든다.

Oracle Tablespace 만들기
Oracle Tablespace 만들기

데이터파일명은 궂이 입력하지 않는다. 기본적으로 mypdb의 경로에 “테이블스페이스이름.dbf” 라는 이름으로 생성되기 때문이다.

다음과 같이 테이블스페이스를 조회해보면 앞에서 생성한 테이블스페이스가 ONLINE 상태로 동작중임을 알 수 있다.

테이블스페이스 목록 조회하기
테이블스페이스 목록 조회하기

다음은 mypuser01 이라는 일반 계정을 만든다. 계정을 만들 때 디폴트 테이블스페이스를 앞에서 생성한 mydbls라는 테이블스페이스로 지정한다.

Oracle 계정 만들기
Oracle 계정 만들기

그리고 생성한 계정을 조회해 본다. mypuser01 이라는 계정이 생성되어 있고 COMMON 유저인지를 표시하는 플래그가 NO 임을 알 수 있다.

Oracle 사용자계정 조회하기
Oracle 사용자계정 조회하기

PDB 관리자 계정 (pdba)로 접속하여 계정을 생성했기 때문에 mypdb라는 PDB의 전용 계정이 생성되는 것이다. 이 계정정보는 CDB의 시스템카다로그에 함께 생성되는데 PDB에 접속해서도 sysdba 권한이 있는 PDB 관리자 계정(pdba)에서는 조회가 가능하다.

이 COMMON 플래그가 YES인 계정들은 CDB와 PDB의 공용계정이다.

새로 생성한 PDB의 일반계정에 connect와 resource 권한을 부여한다.

Oracle 접속 및 객체생성 권한 부여하기
Oracle 접속 및 객체생성 권한 부여하기

connect 역할은 Oracle에 접속할 수 있는 권한인 create session을 포함하고 있다. 그리고 resource 권한은 오라클의 DB에 객체 즉 테이블 등을 생성할 수 있는 권한이 부여된다.

일반 사용자 계정으로 PDB에 접속하기

여기서 부터는 일반 사용자 계정으로 접속하는 것이기 때문에 SQLDeveloper를 사용한다. DBA가 아닌 일반 사용자 및 개발자는 DB 서버의 운영체제에 oracle 계정으로 접속하지 못하도록 하는 것이 보안상 바람직하다. 때문에 그냥… 원격에서 SQLDeveloper와 같은 도구를 통해 접속하는 것으로 테스트 화면을 캡쳐했다.

SQL디벨로퍼에서 새로운 세션을 등록한다.

SQL Developer에서 Oracle PDB 접속하기
SQL Developer에서 Oracle PDB 접속하기

사용자 이름에는 앞에서 생성한 PDB 접속 계정의 이름을 입력하고 아래 접속 서버 정보에는 Oracle 서버의 IP와 포트 그리고 PDB의 이름을 서비스 이름에 입력한다. “테스트” 버튼을 눌러 접속이 가능한지 확인해 본다.

정상적으로 접속이 되면 아래의 SQL 문을 실행해 현재 계정을 확인해 본다.

Oracle 현재 접속한 계정 조회하기
Oracle 현재 접속한 계정 조회하기

현재 접속한 계정이 MYPUSER01 임을 알 수 있다. 기본 테이블스페이스는 MYDBLS로 정상적으로 지정되어 있고 COMMON 계정이 아님을 알 수 있다.

PDB에 테이블생성하고 데이터 입력하기

이제 PDB에 생성한 테이블스페이스에 실제 데이터가 저장될 테이블을 만들어보자.  테이블을 생성할 땐 tablespace를 지정해주는 습관을 들이자.

하지만 생성한 테이블에 데이터를 저장하려하면 에러가 발생한다.

권한이 없다고 나오는데… 이는 사실 권한이 없는 것이 아니라 현재 접속한 mypuser01 계정이 해당 테이블스페이스를 사용할 수 있는 QUOTA가 할당되어 있지 않아서 그렇다.

앞에서 pdba라는 PDB의 관리자 계정으로 mypdb에 접속하여 아래와 같이 mypuser01 계정의 mytbls에 대한 quota 제한을 해제해주자.

Oracle 계정의 테이블스페이스 쿼터(QUOTA) 제한 해제하기
Oracle 계정의 테이블스페이스 쿼터 (QUOTA) 제한 해제하기

이제 다시 SQL디벨로퍼에서 생성한 테이블에 데이터를 입력해보자.

정상적으로 입력되는 것을 알 수 있다.

조회도 해보자.

정상적으로 조회된다.

만약 다른 계정에서 mypuser01 계정에서 생성한 테이블의 데이터를 조회하려면 반드시 mypuser01.테이블명 과 같이 소유자의 계정명을 앞에 붙인다음 조회해야 한다.

잘~ 조회되는 것을 알 수 있다.

#ORACLE_PDB #오라클_PDB

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top