

# SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여
<a name="Appendix.Oracle.CommonDBATasks.TransferPrivileges"></a>

일반적으로 여러 객체가 포함되어 있을 수 있는 역할을 사용하여 권한을 이전합니다. 단일 객체에 권한을 부여하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.grant_sys_object`를 사용합니다. 이 프로시저는 마스터 사용자가 역할이나 직접 부여를 통해 이미 부여받은 권한만 부여합니다.

`grant_sys_object` 프로시저에는 다음과 같은 파라미터가 있습니다.

**중요**  
대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 모든 파라미터 값에 대문자를 사용합니다. 예를 들어 `CREATE USER myuser` 또는 `CREATE USER MYUSER`를 실행하는 경우 데이터 딕셔너리에 `MYUSER`가 저장됩니다. 그러나 `CREATE USER "MyUser"`에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 `MyUser`에 저장합니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_obj_name`  |  varchar2  |  —  |  예  |  권한을 부여할 객체의 이름입니다. 디렉터리, 기능, 패키지, 프로시저, 시퀀스, 테이블, 뷰가 객체가 될 수 있습니다. 객체 이름은 `DBA_OBJECTS`에 표시된 대로 정확하게 입력해야 합니다. 대부분의 시스템 객체는 대문자로 정의되므로 먼저 대문자로 시도하는 것이 좋습니다.  | 
|  `p_grantee`  |  varchar2  |  —  |  예  |  권한을 부여할 객체의 이름입니다. 스키마나 역할이 객체가 될 수 있습니다.  | 
|  `p_privilege`  |  varchar2  |  null  |  예  |  —  | 
|  `p_grant_option`  |  boolean  |  false  |  아니요  |  `true`는 부여 옵션과 함께 사용하도록 설정됩니다.  | 

다음 예에서는 `V_$SESSION`이라는 객체에 대한 선택 권한을 `USER1`이라는 사용자에게 부여합니다.

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name  => 'V_$SESSION',
        p_grantee   => 'USER1',
        p_privilege => 'SELECT');
end;
/
```

다음 예에서는 `V_$SESSION` 이라는 객체에 대한 선택 권한을 `USER1`이라는 사용자에게 부여 옵션과 함께 부여합니다.

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name     => 'V_$SESSION',
        p_grantee      => 'USER1',
        p_privilege    => 'SELECT',
        p_grant_option => true);
end;
/
```

객체에 권한을 부여할 수 있으려면 해당 권한을 부여 옵션을 통해 계정에 직접 부여하거나 `with admin option`을 사용해 부여된 역할을 통해 계정에 부여해야 합니다. 대부분 이미 `SELECT` 역할에 부여된 DBA 뷰에 `SELECT_CATALOG_ROLE` 권한을 부여하는 경우가 많습니다. 해당 역할이 아직 `with admin option`을 통해 사용자에게 직접 부여되지 않았다면 권한을 양도할 수 없습니다. DBA 권한이 있다면 역할을 직접 다른 사용자에게 부여할 수 있습니다.

다음은 `SELECT_CATALOG_ROLE`과 `EXECUTE_CATALOG_ROLE`을 `USER1`에게 부여하는 예제입니다. `with admin option`을 사용했기 때문에, `USER1`은 이제 `SELECT_CATALOG_ROLE`에 부여된 SYS 객체 액세스 권한을 부여할 수 있습니다.

```
GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; 
GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;
```

`PUBLIC`에 이미 부여된 객체는 다시 부여할 필요가 없습니다. `grant_sys_object` 프로시저를 사용하여 액세스 권한을 다시 부여한다면, 프로시저는 성공을 호출합니다.