

# Oracle용 RDS에서 Oracle Repository Creation Utility 사용
<a name="Oracle.Resources.RCU"></a>

Amazon RDS를 사용하여 Oracle Fusion Middleware 구성 요소를 지원하는 스키마를 보관하는 Oracle DB 인스턴스용 RDS를 호스팅할 수 있습니다. Oracle Fusion Middleware 구성 요소를 사용하려면 데이터베이스에 이 구성 요소의 스키마를 생성하고 채웁니다. 스키마는 Oracle Repository Creation Utility(RCU)를 사용하여 만들고 채웁니다.

## RCU에 대해 지원되는 버전 및 라이선스 옵션
<a name="Oracle.Resources.RCU.Versions"></a>

Amazon RDS는 Oracle Repository Creation Utility(RCU) 버전 12c만 지원합니다. 다음 구성에서 RCU를 사용할 수 있습니다.
+ RCU 12c, Oracle Database 21c
+ RCU 12c, Oracle Database 19c

RCU를 사용하려면 다음을 수행해야 합니다.
+ Oracle Fusion Middleware용 라이선스를 취득합니다
+ 또한 리포지토리를 호스팅하는 Oracle Database용 Oracle 라이선싱 지침을 따릅니다. 자세한 내용은 Oracle 설명서에서 [ Oracle Fusion Middleware 라이선싱 정보 사용자 매뉴얼](https://docs.oracle.com/en/middleware/fusion-middleware/fmwlc/)을 참조하십시오.

Fusion MiddleWare는 Oracle Database Enterprise Edition 및 Standard Edition 2의 리포지토리를 지원합니다. Oracle은 분할이 필요한 프로덕션 설치 및 온라인 인덱스 재구축이 필요한 설치에 Enterprise Edition을 권장합니다.

RDS for Oracle 인스턴스를 생성하기 전에 배포할 구성 요소를 지원해야 하는 Oracle Database 버전을 확인하세요. 인증표에서 배포할 Fusion Middleware 구성 요소 및 버전에 대한 요구 사항을 확인하십시오. 자세한 내용은 Oracle 설명서에서 [Oracle Fusion Middleware 지원 시스템 구성](http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html)을 참조하십시오.

Amazon RDS는 필요한 경우 Oracle Database 버전 업그레이드를 지원합니다. 자세한 정보는 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md)의 내용을 참조하세요.

## RCU에 대한 요구 사항 및 제한 사항
<a name="Oracle.Resources.RCU.BeforeYouBegin"></a>

RCU를 사용하려면 Amazon VPC가 필요합니다. Amazon RDS DB 인스턴스는 Fusion Middleware 구성 요소에서만 사용할 수 있고, 퍼블릭 인터넷에서는 사용할 수 없습니다. 따라서 보안 강화를 위해 프라이빗 서브넷에서 Amazon RDS DB 인스턴스를 호스팅합니다. RDS for Oracle DB 인스턴스도 필요합니다. 자세한 내용은 [Oracle DB 인스턴스 생성 및 해당 인스턴스에 연결](CHAP_GettingStarted.CreatingConnecting.Oracle.md) 섹션을 참조하세요.

Fusion Middleware 구성 요소에 대한 스키마를 Amazon RDS DB 인스턴스에 저장할 수 있습니다. 다음 스키마는 제대로 설치되는 것으로 확인되었습니다.
+ 분석(ACTIVITIES)
+ Audit Services(IAU)
+ Audit Services Append(IAU\$1APPEND)
+ Audit Services Viewer(IAU\$1VIEWER)
+ Discussions(DISCUSSIONS)
+ Metadata Services(MDS)
+ Oracle Business Intelligence(BIPLATFORM)
+ Oracle Platform Security Services(OPSS)
+ 포털 및 서비스(WEBCENTER)
+ 포틀릿 생산자(PORTLET)
+ 서비스 테이블(STB)
+ SOA 인프라(SOAINFRA)
+ User Messaging Service(UCSUMS)
+ WebLogic Services(WLS)

## RCU 사용 지침
<a name="Oracle.Resources.RCU.Recommendations"></a>

다음은 이 시나리오에서 DB 인스턴스를 작업하는 경우 알아 두어야 할 권장 사항입니다.
+ 프로덕션 워크로드에는 다중 다중 AZ를 사용하는 것이 좋습니다. 다중 가용 영역 작업에 대한 자세한 내용은 [리전, 가용 영역 및 로컬 영역](Concepts.RegionsAndAvailabilityZones.md) 단원을 참조하세요.
+ 보안을 추가하려면 유휴 데이터를 암호화할 수 있는 TDE(Transparent Data Encryption)를 사용하는 것이 좋습니다. 고급 보안 옵션이 제공되는 Enterprise Edition 라이선스를 보유하고 있는 경우 TDE 옵션을 사용하여 유휴 시 암호화를 활성화할 수 있습니다. 자세한 내용은 [Oracle Transparent Data Encryption](Appendix.Oracle.Options.AdvSecurity.md) 섹션을 참조하세요.

  Amazon RDS는 모든 데이터베이스 버전에 유휴 시 암호화 옵션도 제공합니다. 자세한 내용은 [Amazon RDS 리소스 암호화](Overview.Encryption.md) 섹션을 참조하세요.
+ 애플리케이션 서버와 Amazon RDS DB 인스턴스 간에 통신할 수 있도록 VPC 보안 그룹을 구성합니다. Fusion Middleware 구성 요소를 호스트하는 애플리케이션 서버는 Amazon EC2 또는 온프레미스에 있을 수 있습니다.

## RCU 실행
<a name="Oracle.Resources.RCU.Installing"></a>

Fusion Middleware 구성 요소를 지원하기 위해 스키마를 생성하고 채우려면 Oracle Repository Creation Utility(RCU)를 사용합니다. 다양한 방법으로 RCU를 실행할 수 있습니다.

**Topics**
+ [한 단계로 명령줄을 사용하여 RCU 실행](#Oracle.Resources.RCU.SilentSingle)
+ [여러 단계에 걸쳐 명령줄을 사용하여 RCU 실행](#Oracle.Resources.RCU.SilentMulti)
+ [대화형 모드에서 RCU 실행](#Oracle.Resources.RCU.Interactive)

### 한 단계로 명령줄을 사용하여 RCU 실행
<a name="Oracle.Resources.RCU.SilentSingle"></a>

스키마를 채우기 전에 편집할 필요가 없는 경우 RCU를 한 단계로 실행할 수 있습니다. 편집이 필요한 경우 다음 단원에서 여러 단계에 걸쳐 RCU 실행에 대한 내용을 참조하세요.

명령줄 파라미터 `-silent`를 사용하면 자동 모드에서 RCU를 실행할 수 있습니다. 자동 모드에서 RCU를 실행하는 경우 비밀번호가 포함된 텍스트 파일을 만들어 명령줄에 비밀번호를 입력하지 않아도 됩니다. 첫 행에 `dbUser`의 암호가 있고 다음 행에 각 구성 요소에 대한 암호가 나오는 텍스트 파일을 만듭니다. RCU 명령의 마지막 파라미터로 암호 파일의 이름을 지정합니다.

**Example**  
다음은 한 단계로 SOA 인프라 구성 요소(및 종속 항목)의 스키마를 만들어 채우는 예제입니다.  
대상 LinuxmacOS, 또는Unix:  

```
export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-silent \
-createRepository \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal \
-honorOMF \
-schemaPrefix ${SCHEMA_PREFIX} \
-component MDS \
-component STB \
-component OPSS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component UCSUMS \
-component WLS \
-component SOAINFRA \
-f < /tmp/passwordfile.txt
```

자세한 내용은 Oracle 설명서에서 [ 명령줄에서 Repository Creation Utility 실행](https://docs.oracle.com/middleware/1221/core/RCUUG/GUID-0D3A2959-7CC8-4001-997E-718ADF04C5F2.htm#RCUUG248)을 참조하세요.

### 여러 단계에 걸쳐 명령줄을 사용하여 RCU 실행
<a name="Oracle.Resources.RCU.SilentMulti"></a>

스키마 스크립트를 수동으로 편집하려면 여러 단계에 걸쳐 RCU를 실행합니다.

1. 스키마에 대한 스크립트를 생성하려면 `-generateScript` 명령줄 파라미터를 사용하여 **Prepare Scripts for System Load** 모드에서 RCU를 실행합니다.

1. 생성된 스크립트 `script_systemLoad.sql`을 수동으로 편집하고 실행합니다.

1. 스키마를 채우려면 `-dataLoad` 명령줄 파라미터를 사용하여 **Perform Product Load** 모드에서 RCU를 다시 실행합니다.

1. 생성된 정리 스크립트 `script_postDataLoad.sql`을 실행합니다.

자동 모드에서 RCU를 실행하려면 명령줄 파라미터 `-silent`를 지정합니다. 자동 모드로 RCU를 실행하는 경우 암호가 들어 있는 텍스트 파일을 만들면 명령줄에 암호를 입력하지 않아도 됩니다. 첫 행에 `dbUser`의 암호가 있고 다음 행에 각 구성 요소에 대한 암호가 나오는 텍스트 파일을 만듭니다. RCU 명령의 마지막 파라미터로 암호 파일의 이름을 지정합니다.

**Example**  
다음은 SOA 인프라 구성 요소 및 종속 항목의 스키마 스크립트를 만드는 예제입니다.  
대상 LinuxmacOS, 또는Unix:  

```
export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-silent \
-generateScript \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal \
-honorOMF \
[-encryptTablespace true] \
-schemaPrefix ${SCHEMA_PREFIX} \
-component MDS \
-component STB \
-component OPSS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component UCSUMS \
-component WLS \
-component SOAINFRA \
-scriptLocation /tmp/rcuscripts \
-f < /tmp/passwordfile.txt
```
이제 생성된 스크립트를 편집하고, Oracle DB 인스턴스에 연결하고, 스크립트를 실행할 수 있습니다. 생성된 스크립트의 이름은 `script_systemLoad.sql`입니다. Oracle DB 인스턴스 연결에 대한 자세한 내용은 [3단계: SQL 클라이언트를 Oracle DB 인스턴스에 연결](CHAP_GettingStarted.CreatingConnecting.Oracle.md#CHAP_GettingStarted.Connecting.Oracle) 단원을 참조하세요.  
다음은 SOA 인프라 구성 요소(및 종속 항목)의 스키마를 채우는 예제입니다.  
대상 LinuxmacOS, 또는Unix:  

```
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-silent \
-dataLoad \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal \
-honorOMF \
-schemaPrefix ${SCHEMA_PREFIX} \
-component MDS \
-component STB \
-component OPSS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component UCSUMS \
-component WLS \
-component SOAINFRA \
-f < /tmp/passwordfile.txt
```
완료하려면 Oracle DB 인스턴스에 연결하고 정리 스크립트를 실행합니다. 생성된 스크립트의 이름은 `script_postDataLoad.sql`입니다.

자세한 내용은 Oracle 설명서에서 [ 명령줄에서 Repository Creation Utility 실행](https://docs.oracle.com/middleware/1221/core/RCUUG/GUID-0D3A2959-7CC8-4001-997E-718ADF04C5F2.htm#RCUUG248)을 참조하세요.

### 대화형 모드에서 RCU 실행
<a name="Oracle.Resources.RCU.Interactive"></a>

RCU 그래픽 사용자 인터페이스를 사용하려면 대화형 모드로 RCU를 실행합니다. `-interactive` 파라미터를 포함하고 `-silent` 파라미터를 생략합니다. 자세한 내용은 Oracle 설명서에서 [ Repository Creation Utility 화면 이해](https://docs.oracle.com/middleware/1213/core/RCUUG/rcu_screens.htm#RCUUG143)를 참조하세요.

**Example**  
다음은 대화형 모드에서 RCU를 시작하고 연결 정보를 미리 채우는 예제입니다.  
대상 LinuxmacOS, 또는Unix:  

```
export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-interactive \
-createRepository \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal
```

## RCU 문제 해결
<a name="Oracle.Resources.RCU.KnownIssues"></a>

다음 문제에 주의하십시오.

**Topics**
+ [Oracle Managed Files(OMF)](#Oracle.Resources.RCU.KnownIssues.OMF)
+ [객체 권한](#Oracle.Resources.RCU.KnownIssues.object-privs)
+ [Enterprise Scheduler Service](#Oracle.Resources.RCU.KnownIssues.Scheduler)

### Oracle Managed Files(OMF)
<a name="Oracle.Resources.RCU.KnownIssues.OMF"></a>

Amazon RDS는 OMF 데이터 파일을 사용하여 스토리지 관리를 간소화합니다. 크기 및 익스텐트 관리와 같은 테이블스페이스 속성을 사용자 지정할 수 있습니다. 하지만 RCU를 실행할 때 데이터 파일 이름을 지정하면 테이블스페이스 코드에 `ORA-20900` 오류가 발생합니다. 다음과 같은 방법으로 OMF와 함께 RCU를 사용할 수 있습니다.
+ RCU 12.2.1.0 이상에서 `-honorOMF` 명령줄 파라미터를 사용합니다.
+ RCU 12.1.0.3 이상에서 여러 단계를 사용하여 생성된 스크립트를 편집합니다. 자세한 내용은 [여러 단계에 걸쳐 명령줄을 사용하여 RCU 실행](#Oracle.Resources.RCU.SilentMulti) 단원을 참조하십시오.

### 객체 권한
<a name="Oracle.Resources.RCU.KnownIssues.object-privs"></a>

Amazon RDS는 관리형 서비스이므로 RDS for Oracle 인스턴스에 대한 전체 `SYSDBA` 액세스 권한이 없습니다. 하지만 RCU 12c는 낮은 권한을 가진 사용자를 지원합니다. 대부분의 경우 마스터 사용자 권한으로 리포지토리를 생성할 수 있습니다.

마스터 계정은 `WITH GRANT OPTION`으로 이미 부여된 권한을 직접 부여할 수 있습니다. 경우에 따라 `SYS` 객체 권한을 부여하려고 할 때 RCU에 `ORA-01031` 오류가 발생할 수 있습니다. 다음 예와 같이 `rdsadmin_util.grant_sys_object` 저장 프로시저를 다시 시도하고 실행할 수 있습니다.

```
BEGIN
  rdsadmin.rdsadmin_util.grant_sys_object('GV_$SESSION','MY_DBA','SELECT');
END;
/
```

객체 `SCHEMA_VERSION_REGISTRY`에 대한 `SYS` 권한을 부여하려고 할 때, 작업에`ORA-20199: Error in rdsadmin_util.grant_sys_object` 오류가 발생할 수도 있습니다. `SCHEMA_VERSION_REGISTRY$` 테이블과 `SCHEMA_VERSION_REGISTRY` 보기를 스키마 소유자 이름인 `SYSTEM`으로 정규화하고 작업을 재시도할 수 있습니다. 또는 동의어를 생성할 수 있습니다 마스터 사용자로 로그인하고 다음 명령문을 사용하십시오.

```
CREATE OR REPLACE VIEW SYSTEM.SCHEMA_VERSION_REGISTRY 
  AS SELECT * FROM SYSTEM.SCHEMA_VERSION_REGISTRY$;
CREATE OR REPLACE PUBLIC SYNONYM SCHEMA_VERSION_REGISTRY FOR SYSTEM.SCHEMA_VERSION_REGISTRY;
CREATE OR REPLACE PUBLIC SYNONYM SCHEMA_VERSION_REGISTRY$ FOR SCHEMA_VERSION_REGISTRY;
```

### Enterprise Scheduler Service
<a name="Oracle.Resources.RCU.KnownIssues.Scheduler"></a>

RCU를 사용하여 Enterprise Scheduler Service 리포지토리를 삭제하는 경우 RCU에 `Error: Component drop check failed` 오류가 발생할 수 있습니다.