Oracle 사용자 생성 및 권한 부여
1. SQL* Plus를 실행합니다.
2. 관리자 권한으로 로그인합니다.
sqlplus "/as sysdba"
"/as sysdba"는 "SYSDBA" 권한으로 로그인하도록 SQL*Plus에 지시하는 것입니다.
"SYSDBA" 권한은 데이터베이스의 최상위 권한으로,
이 권한으로 로그인하면 모든 데이터 베이스 객체에 대한 권한을 가질 수 있습니다.
따라서 "sqlplus /as sysdba"를 실행하면 SQL*Plus가 관리자 권한으로 실행되며 데이터베이스의
최상위 권한인 SYSDBA 권한으로 로그인합니다. 이를 통해 데이터베이스 관리 작업을 수행할 수 있습니다.
단, SYSDBA 권한은 매우 강력한 권한이므로, 실수로 데이터베이스를 손상시키지 않도록 주의해야 합니다.
이 권한을 사용하여 수행하는 작업에 대해서는 항상 신중하게 고려하고 실행해야 합니다.
3. 다음과 같은 명령문을 사용하여 새로운 사용자를 생성합니다.
CREATE USER username IDENTIFIED BY password;
여기서 "username:은 새로운 사용자의 이름이고, "password"는 새로운 사용자의 비밀번호입니다.
ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.
C##는 Oracle 12c 이상 버전에서 소개된, 공통 사용자(Common User)를 식별하기 위한 표기입니다.
이전 버전의 Oracle에서는 공통 사용자와 일반 사용자의 이름이 동일한 경우 충돌이 발생할 수 있었습니다.
이를 해결하기 위해 Oracle 12c에서는 공통 사용자 이름 앞에 C##을 붙여서,
공통 사용자를 일반 사용자와 구분할 수 있도록 하였습니다.
공통 사용자는 여러 개의 플러그 가능한 데이터베이스(PDB)에 걸쳐 사용되는 사용자로,
전체 CDB(Container Database)에서 공유됩니다. 따라서, 공통 사용자 이름 앞에 C## 을 붙임으로써,
해당 사용자가 공통 사용자 임을 명확히 구분할 수 있습니다.
예를 들어, C##MYUSER라는 이름의 공통 사용자가 있다면, 이 사용자는 CDB의 모든 PDB에 접근할 수 있으며,
이름 앞에 C##이 붙어 있기 때문에 해당 사용자가 공통 사용자임을 쉽게 구분할 수 있습니다.
4. 다음과 같은 명령문을 사용하여 새로운 사용자에게 권한을 부여합니다.
GRANT [권한] TO [사용자];
여기서 "[권한]"은 부여할 권한의 이름이고, "[사용자]"는 권한을 부여할 사용자의 이름입니다.
예를 들어, 다음과 같은 명령문을 사용하여 새로운 사용자에게 테이블 생성 권한을 부여할 수 있습니다.
GRANT CREATE TABLE TO username;
Oracle에서 "GRANT" 명령어를 사용하여 권한을 부여할 때, 다양한 권한을 설정할 수 있습니다.
여기에는 다음과 같은 권한의 종류가 있습니다.
- SELECT: 테이블, 뷰, 시퀀스, 프로시저 등에서 데이터 조회 권한을 부여합니다.
- INSERT: 테이블에 데이터 추가 권한을 부여합니다.
- UPDATE: 테이블에서 데이터 업데이트 권한을 부여합니다.
- DELETE: 테이블에서 데이터 삭제 권한을 부여합니다.
- ALTER: 테이블, 뷰, 시퀀스, 인덱스 등의 구조 변경 권한을 부여합니다.
- INDEX: 인덱스 생성 권한을 부여합니다.
- EXECUTE: 프로시저, 함수, 패키지 등의 실행 권한을 부여합니다.
- ALL: 모든 권한을 부여합니다.
또한 "WITH ADMIN OPTION" 키워드를 사용하여 권한 부여 대상자에게 해당 권한을 부여하는 권한을 부여할 수 있습니다.
이 경우, 권한 부여 대상자는 해당 권한을 가진 사용자에게 권한을 부여할 수 있습니다.
아래 권한은 Oracle에서 기본적으로 제공되는 권한 중 일부입니다.
- CONNECT
- 데이터베이스에 연결할 수 있는 권한을 부여합니다. CONNECT 권한이 있는 사용자는 데이터베이스에
접속하여 객체를 조회하거나 DDL 문장을 실행할 수 있습니다.
- 데이터베이스에 연결할 수 있는 권한을 부여합니다. CONNECT 권한이 있는 사용자는 데이터베이스에
- RESOURCE
- 테이블, 시퀀스, 프로시저 등을 생성하고, 저장할 수 있는 권한을 부여합니다.
RESOURCE 권한을 가진 사용자는 데이터베이스 객체를 생성, 저장, 조회 및 변경할 수 있습니다.
- 테이블, 시퀀스, 프로시저 등을 생성하고, 저장할 수 있는 권한을 부여합니다.
- DBA
- 데이터베이스 관리자 권한으로, 모든 데이터 베이스 객체에 대한 완전한 권한을 부여합니다.
이 권한을 가진 사용자는 데이터베이스 생성, 백업 및 복원, 권한 부여 등 모든 데이터베이스
관리작업을 수행할 수 있습니다.
- 데이터베이스 관리자 권한으로, 모든 데이터 베이스 객체에 대한 완전한 권한을 부여합니다.
하지만 최근 버전의 Oracle에서는 위의 권한들 대신,
"CREATE SESSION", CREATE TABLE", "CREATE PROCEDURE"와 같은 더 작은 권한 단위로 권한을 부여하도록
권장하고 있습니다. 이는 보안상 이점을 가지기 때문입니다. 따라서 가능하다면 위의 권한들 보다 더 구체적인
권한 단위를 사용하는 것이 좋습니다.
GRANT CONNECT, RESOURCE, DBA TO C##username;
5-1. SQL*Plus 에서 데이터베이스 생성(CLI)
다음 명령어를 입력하여 새로운 데이터베이스를 생성할 준비를 합니다.
CREATE DATABASE <데이터베이스 이름>
여기서 '<데이터 베이스 이름>'은 생성할 데이터베이스의 이름을 지정하는 부분입니다.
데이터베이스를 생성할 때, 다양한 구성 옵션을 지정할 수 있습니다.
예를 들어, 데이터베이스의 데이터 파일과 로그 파일의 위치를 지정할 수 있습니다.
이러한 옵션은 CREATE DATABASE 명령어의 인자로 지정됩니다.
다음은 CREATE DATABASE 명령어에서 지정할 수 있는 몇 가지 인자의 예시입니다.
- "DATAFILE <파일 경로>": 데이터베이스의 데이터 파일이 저장될 위치를 지정합니다.
- "SIZE <파일 크기>": 데이터베이스의 데이터 파일이나 로그 파일의 초기 크기를 지정합니다.
- "MAXSIZE <최대 파일 크기>": 데이터베이스의 데이터 파일이나 로그 파일의 최대 크기를 지정합니다.
CREATE DATABASE mydatabase
DATAFILE '/u01/app/oracle/oradata/mydatabase/system01.dbf' SIZE 100M
MAXSIZE 500M
데이터베이스가 성공적으로 생성되면, 새로운 데이터베이스에 대한 연결을 설정합니다.
다음 명령어를 실행하여 데이터베이스에 연결합니다.
CONNECT SYS as SYSDBA
이제 새로 생성한 데이터베이스에 대한 관리 작업을 수행할 수 있습니다.
5-2. SQL Developer 에서 데이터베이스 생성(GUI)
'Language > RDBMS' 카테고리의 다른 글
WHERE 조건절 내 IN, OR 연산 관련 (0) | 2023.04.18 |
---|---|
testUser Query (0) | 2023.04.17 |
인덱스 기본 (0) | 2023.03.19 |
조인 수행원리 (0) | 2023.03.19 |
옵티마이저와 실행계획 (0) | 2023.03.19 |