> For the complete documentation index, see [llms.txt](https://docs.sysout.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sysout.co.kr/database/oracle/structure-query-language/admin-query/manage-role.md).

# 권한 관리

## 권한 관리

### 권한 부여(grant)

계정 생성 후 작업을 위해서는 권한을 부여해야 한다. 권한을 부여하는 방법은 다음과 같다.

```sql
grant 권한명 to 사용자아이디;
```

부여 가능한 권한을 확인하는 명령은 다음과 같다.

```sql
SELECT distinct PRIVILEGE FROM DBA_SYS_PRIVS order by PRIVILEGE
```

### 권한 회수(revoke)

관리자는 부여한 권한을 회수할 수 있다. 권한을 회수하는 방법은 다음과 같다.

```sql
revoke 권한명 from 사용자아이디;
```

### 사용자별 권한 확인하기

사용자별로 부여된 권한을 확인할 때는 다음과 같이 명령을 작성한다.

```sql
SELECT * FROM DBA_SYS_PRIVS [WHERE GRANTEE='사용자명'];
```

마찬가지로 `[ ]` 안의 내용은 생략이 가능하다. 사용자 명의 경우 대문자로 작성해야 다.

### 사용자 권한 부여 예시

사용자에게 권한을 부여하는 예시 명령은 다음과 같다.

```sql
grant connect, resource, create view to testuser;
```

connect는 과거부터 사용되는 연결과 관련된 role(권한 객체)이고, resource는 자원 사용과 관련된 role, create view는 view 생성 권한이다.\
oracle 18c에서는 tablespace와 관련된 권한을 추가로 설정해주어야 테이블 생성이 가능하다.

```sql
grant connect, resource, create view, unlimited tablespace to testuser;
```

용량 제한도 설정 가능하며, `unlimited`로 설정할 경우 기존처럼 제한 없이 이용이 가능다.
