

# Oracle Application Express(APEX)
<a name="Appendix.Oracle.Options.APEX"></a>

Amazon RDS는 `APEX` 및 `APEX-DEV` 옵션 사용을 통해 Oracle Application Express(APEX)를 지원합니다. Oracle APEX를 웹 기반 애플리케이션을 위한 런타임 환경 또는 전체 개발 환경으로 배포할 수 있습니다. 사용자는 Oracle APEX를 사용하여 웹 브라우저 내에서 전체 애플리케이션을 빌드할 수 있습니다. 자세한 내용은 Oracle 문서의 [Oracle Application Express](https://apex.oracle.com/)를 참조하세요.

**Topics**
+ [Oracle APEX 구성 요소](#Appendix.Oracle.Options.APEX.components)
+ [요구 사항 및 제한 사항](Appendix.Oracle.Options.APEX.Requirements.md)
+ [Oracle APEX 및 Oracle Rest Data Services(ORDS) 설정](Appendix.Oracle.Options.APEX.settingUp.md)
+ [Oracle Rest Data Services(ORDS) 구성](Appendix.Oracle.Options.APEX.ORDSConf.md)
+ [Oracle APEX 업그레이드 및 제거](Appendix.Oracle.Options.APEX.UpgradeandRemove.md)

## Oracle APEX 구성 요소
<a name="Appendix.Oracle.Options.APEX.components"></a>

Oracle APEX는 다음과 같은 주요 구성 요소로 구성됩니다.
+ *리포지토리* - Oracle APEX 애플리케이션 및 구성 요소에 대한 메타데이터를 저장합니다. 리포지토리는 Amazon RDS DB 인스턴스에 설치되는 테이블, 인덱스 및 기타 객체로 구성됩니다.
+ *listener* - Oracle APEX 클라이언트와의 HTTP 통신을 관리합니다. 리스너는 Amazon EC2 인스턴스, 회사의 온프레미스 서버 또는 사용자의 데스크톱 컴퓨터와 같은 별도의 호스트에 상주합니다. 리스너는 웹 브라우저에서 수신되는 유입 연결을 허용하고 처리를 위해 해당 연결을 Amazon RDS DB 인스턴스에 전달한 다음, 리포지토리의 결과를 브라우저로 다시 보냅니다.

  RDS for Oracle은 다음과 같은 유형의 리스너를 지원합니다.
  + Oracle APEX 버전 5.0 이상은 Oracle REST Data Services(ORDS) 버전 19.1 이상을 사용합니다. 지원되는 최신 버전의 Oracle APEX 및 ORDS를 사용하는 것이 좋습니다. 이 설명서에서는 이전 버전과의 호환성에 대해서만 이전 버전을 설명합니다.
  + Oracle APEX 버전 4.1.1의 경우 Oracle APEX Listener 버전 1.1.4를 사용할 수 있습니다.
  + Oracle HTTP 서버 및 `mod_plsql` 리스너를 사용할 수 있습니다.
**참고**  
Amazon RDS는 Oracle APEX의 리스너로 PL/SQL 게이트웨이가 내장된 Oracle XML DB HTTP 서버를 지원하지 않습니다. 일반적으로 Oracle은 인터넷 기반 애플리케이션용으로 포함된 PL/SQL 게이트웨이 사용을 권장합니다.

  이러한 리스너 유형에 대한 자세한 내용은 Oracle 설명서에서 [About Choosing a Web Listener](https://docs.oracle.com/database/apex-5.1/HTMIG/choosing-web-listener.htm#HTMIG29321)를 참조하세요.

`APEX` 및 `APEX-DEV` 옵션을 RDS for Oracle DB 인스턴스에 추가하면 Amazon RDS에서 Oracle APEX 리포지토리만 설치합니다. 리스너를 별도의 호스트에 설치합니다.

# 요구 사항 및 제한 사항
<a name="Appendix.Oracle.Options.APEX.Requirements"></a>

다음 주제에는 Oracle APEX 및 ORDS의 요구 사항과 제한 사항이 나와 있습니다.

## Oracle APEX 버전 요구 사항
<a name="Appendix.Oracle.Options.APEX.versions"></a>

`APEX` 옵션은 DB 인스턴스에 대한 DB 인스턴스 클래스의 스토리지를 사용합니다. 다음은 Oracle APEX에 대한 지원 버전과 대략적인 스토리지 요구 사항입니다.


****  

| Oracle APEX 버전 | 스토리지 요구 사항 | 지원되는 Oracle Database 버전 | 참고 | 
| --- | --- | --- | --- | 
|  Oracle APEX 버전 24.2.v1  |  114MiB  |  모두  |  이 버전은 패치 37885097: APEX 24.2용 PSE 번들(24.2.0 기반 PSES), PATCH\$1VERSION 4를 포함합니다.  | 
|  Oracle APEX 버전 24.1.v1  |  112MiB  |  모두  |  이 버전은 패치 36695709: APEX 24.1용 PSE 번들(24.1.0 기반 PSES), PATCH\$1VERSION 3을 포함합니다. EC2 인스턴스에 설치할 APEX 이미지 버전이 정확히 동일한 경우 패치 37544819: 24.1.3 PSE BUNDLE FOR APEX 24.1(PSES ON TOP OF 24.1.0)을 다운로드합니다.  | 
|  Oracle APEX 버전 23.2.v1  |  110MiB  |  모두  |  이 버전에는 패치 35895964: APEX 23.2용 PSE 번들(23.2.0 기반 PSES), PATCH\$1VERSION 6이 포함됩니다. EC2 인스턴스에 설치할 APEX 이미지 버전이 정확히 동일한 경우 패치 37593125: 23.2.6 PSE BUNDLE FOR APEX 23.2(PSES ON TOP OF 23.2.0)을 다운로드합니다.  | 
|  Oracle APEX 버전 23.1.v1  |  106MiB  |  모두  |  이 버전은 패치 35283657: APEX 23.1용 PSE 번들(23.1.0 기반 PSES), PATCH\$1VERSION 2를 포함합니다.  | 
|  Oracle APEX 버전 22.2.v1  |  106MiB  |  모두  |  이 버전은 패치 34628174: APEX 22.2용 PSE 번들(22.2.0 기반 PSES), PATCH\$1VERSION 4를 포함합니다.  | 
|  Oracle APEX 버전 22.1.v1  |  124MiB  |  모두  |  이 버전은 패치 34020981: APEX 22.1용 PSE 번들(22.1.0 기반 PSES), PATCH\$1VERSION 6을 포함합니다.  | 
|  Oracle APEX 버전 21.1.v1  |  125MiB  |  모두  |  이 버전은 패치 33420059: APEX 21.2용 PSE 번들(21.2.0 기반 PSES), PATCH\$1VERSION 8을 포함합니다.  | 
|  Oracle APEX 버전 21.1.v1  |  125MiB  |  모두  |  이 버전은 패치 32598392: APEX 21.1용 PSE 번들, PATCH\$1VERSION 3를 포함합니다.  | 
|  Oracle APEX 버전 20.2.v1  |  148MiB  |  Oracle Database 21c를 제외한 모든 제품  |  이 버전은 패치 32006852: APEX 20.2용 PSE 번들, PATCH\$1VERSION 2020.11.12를 포함합니다. 다음 쿼리를 실행하여 패치 번호와 날짜를 확인할 수 있습니다. <pre>SELECT PATCH_VERSION, PATCH_NUMBER <br />FROM   APEX_PATCHES;</pre>  | 
|  Oracle APEX 버전 20.1.v1  |  173MiB  |  Oracle Database 21c를 제외한 모든 제품  |  이 버전은 패치 30990551: APEX 20.1용 PSE 번들, PATCH\$1VERSION 2020.07.15를 포함합니다.  | 
|  Oracle APEX 버전 19.2.v1  |  149 MiB  |  Oracle Database 21c를 제외한 모든 제품  |  | 
|  Oracle APEX 버전 19.1.v1  |  148MiB  |  Oracle Database 21c를 제외한 모든 제품  |  | 

다운로드 가능한 Oracle APEX .zip 파일은 Oracle 웹 사이트의 [Oracle APEX 이전 릴리스 아카이브](https://www.oracle.com/tools/downloads/apex-all-archives-downloads.html)를 참조하세요.

## Oracle APEX 및 ORDS 사전 조건
<a name="Appendix.Oracle.Options.APEX.PreReqs"></a>

Oracle APEX 및 ORDS 사용의 사전 조건은 다음과 같습니다.
+ 시스템이 Java 런타임 환경(JRE)을 사용해야 합니다.
+ Oracle 클라이언트 설치에는 다음이 포함되어야 합니다.
  + 관리 작업을 위한 SQL\$1Plus 또는 SQL Developer
  + RDS for Oracle DB 인스턴스에 대한 연결을 구성하기 위한 Oracle Net Services

## Oracle APEX 제한 사항
<a name="Appendix.Oracle.Options.APEX.limitations"></a>

Amazon RDS에서 관리하는 `APEX_version` 사용자 계정은 수정할 수 없습니다. 따라서 이 사용자에게 데이터베이스 프로필을 적용하거나 암호 규칙을 적용할 수 없습니다. `APEX_version`의 프로필 및 암호 설정은 Oracle 및 AWS에서 사전 정의하며 Amazon RDS의 보안 요구 사항을 충족하도록 설계되었습니다.

# Oracle APEX 및 Oracle Rest Data Services(ORDS) 설정
<a name="Appendix.Oracle.Options.APEX.settingUp"></a>

다음 주제에서는 Oracle APEX 및 ORDS를 설정하는 데 필요한 단계를 나열합니다.

**Topics**
+ [DB 인스턴스에 APEX 및 APEX-DEV 옵션 추가](#Appendix.Oracle.Options.APEX.Add)
+ [DB 인스턴스의 퍼블릭 사용자 계정 잠금 해제](#Appendix.Oracle.Options.APEX.PublicUser)
+ [Oracle APEX용 RESTful 서비스 구성](#Appendix.Oracle.Options.APEX.ConfigureRESTful)
+ [별도의 호스트에 ORDS 설치 준비](#Appendix.Oracle.Options.APEX.ORDS.ords-setup)
+ [Oracle APEX Listener 설정](#Appendix.Oracle.Options.APEX.Listener)

## DB 인스턴스에 APEX 및 APEX-DEV 옵션 추가
<a name="Appendix.Oracle.Options.APEX.Add"></a>

RDS for Oracle DB 인스턴스에 `APEX` 및 `APEX-DEV` 옵션을 추가하려면 다음을 수행합니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. 옵션 그룹에 `APEX` 및 `APEX-DEV` 옵션을 추가합니다.

1. 옵션 그룹과 DB 인스턴스를 연결합니다.

`APEX` 및 `APEX-DEV` 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 잠시 작동이 중단됩니다.

**참고**  
`APEX` 옵션이 설치되면 `APEX_MAIL`을 사용할 수 있습니다. `APEX_MAIL` 패키지에 대한 실행 권한은 `PUBLIC`에 부여되므로 APEX 관리자 계정이 없어도 사용할 수 있습니다.

**DB 인스턴스에 APEX 및 APEX-DEV 옵션을 추가하는 방법**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. [**Engine**]에서 사용할 Oracle 버전을 선택합니다. 모든 버전에서 `APEX` 및 `APEX-DEV` 옵션이 지원됩니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. 해당 옵션을 옵션 그룹에 추가합니다. Oracle APEX 런타임 환경만 배포하려면 `APEX` 옵션만 추가합니다. 전체 개발 환경을 배포하려면 `APEX` 및 `APEX-DEV` 옵션을 모두 추가합니다.

   **버전**에서 사용하고자 하는 Oracle APEX 버전을 선택합니다.
**중요**  
하나 이상의 DB 인스턴스에 이미 연결되어 있는 기존 옵션 그룹에 `APEX` 또는 `APEX-DEV` 옵션을 추가하면 인스턴스가 잠시 중단됩니다. 이때 모든 DB 인스턴스가 자동으로 다시 시작됩니다.

   옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 기존 DB 인스턴스에 `APEX` 또는 `APEX-DEV` 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 인스턴스가 잠시 중단됩니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## DB 인스턴스의 퍼블릭 사용자 계정 잠금 해제
<a name="Appendix.Oracle.Options.APEX.PublicUser"></a>

`APEX` 또는 `APEX-DEV` 옵션을 DB 인스턴스에 설치한 후 다음 작업을 수행해야 합니다.

1. `APEX_PUBLIC_USER` 계정의 암호를 변경합니다.

1. 계정의 잠금을 해제합니다.

이 작업은 Oracle SQL\$1Plus 명령줄 유틸리티를 사용하여 수행할 수 있습니다. DB 인스턴스에 마스터 사용자로 연결하고 다음 명령을 실행합니다. `new_password`를 원하는 암호로 바꿉니다.

```
1. ALTER USER APEX_PUBLIC_USER IDENTIFIED BY new_password;
2. ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
```

## Oracle APEX용 RESTful 서비스 구성
<a name="Appendix.Oracle.Options.APEX.ConfigureRESTful"></a>

Oracle APEX에 RESTful 서비스를 구성하려면(Oracle APEX 4.1.1.V1에는 필요하지 않음) SQL\$1Plus를 사용하여 마스터 사용자로서 DB 인스턴스에 연결합니다. 그런 다음 `rdsadmin.rdsadmin_run_apex_rest_config` 저장 프로시저를 실행합니다. 저장 프로시저를 실행할 때 다음 사용자를 위한 암호를 제공합니다.
+ `APEX_LISTENER`
+ `APEX_REST_PUBLIC_USER`

저장 프로시저는 이들 사용자를 위해 새 데이터베이스 계정을 만드는 `apex_rest_config.sql` 스크립트를 실행합니다.

**참고**  
Oracle APEX 버전 4.1.1.v1을 위한 구성은 필요하지 않습니다. 이 Oracle APEX 버전에 한해 저장 프로시저를 실행할 필요가 없습니다.

다음 명령으로 저장 프로시저를 실행합니다.

```
1. EXEC rdsadmin.rdsadmin_run_apex_rest_config('apex_listener_password', 'apex_rest_public_user_password');
```

## 별도의 호스트에 ORDS 설치 준비
<a name="Appendix.Oracle.Options.APEX.ORDS.ords-setup"></a>

Amazon EC2 인스턴스, 회사의 온프레미스 서버 또는 사용자의 데스크톱 컴퓨터와 같은 별도의 호스트에 ORDS를 설치합니다. 이 섹션의 예제에서는 호스트가 Linux를 실행하고 `myapexhost.example.com` 이름이 지정되었다고 가정합니다.

ORDS를 설치하려면 먼저 권한 없는 OS 사용자를 생성한 다음, Oracle APEX 설치 파일을 다운로드하여 압축을 풀어야 합니다.

**ORDS 설치를 준비하려면**

1. `myapexhost.example.com`에 `root`로 로그인합니다.

1. 리스너 설치를 소유할 권한 없는 OS 사용자를 생성합니다. 다음 명령은 *apexuser*라는 새 사용자를 생성합니다.

   ```
   useradd -d /home/apexuser apexuser
   ```

   다음 명령은 새로운 사용자에게 암호를 할당합니다.

   ```
   passwd apexuser;
   ```

1. `myapexhost.example.com`에 `apexuser`로 로그인하고, Oracle의 Oracle APEX 설치 파일을 `/home/apexuser` 디렉터리에 다운로드합니다.
   + [http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html](http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html) 
   + [Oracle Application Express Prior Release Archives](http://www.oracle.com/technetwork/developer-tools/apex/downloads/all-archives-099381.html) 

1. `/home/apexuser` 디렉터리에서 파일의 압축을 풉니다.

   ```
   unzip apex_version.zip
   ```

   파일의 압축을 풀면 `apex` 디렉터리에 `/home/apexuser` 디렉터리가 있습니다.

1. `myapexhost.example.com`에 `apexuser`로 로그인한 상태에서 Oracle REST Data Services 파일을 Oracle에서 `/home/apexuser` 디렉터리로 다운로드합니다. [http://www.oracle.com/technetwork/developer-tools/apex-listener/downloads/index.html](http://www.oracle.com/technetwork/developer-tools/apex-listener/downloads/index.html)

## Oracle APEX Listener 설정
<a name="Appendix.Oracle.Options.APEX.Listener"></a>

**참고**  
Oracle APEX Listener는 더 이상 사용되지 않습니다.

Amazon RDS for Oracle은 Oracle APEX 버전 4.1.1 및 Oracle APEX Listener 버전 1.1.4를 계속 지원합니다. 지원되는 최신 버전의 Oracle APEX 및 ORDS를 사용하는 것이 좋습니다.

Amazon EC2 인스턴스, 회사의 온프레미스 서버 또는 사용자의 데스크톱 컴퓨터와 같은 별도의 호스트에 Oracle APEX Listener를 설치합니다. 여기에서는 호스트의 이름이 `myapexhost.example.com`이고 이 호스트에서 Linux를 실행 중이라고 가정합니다.

### Oracle APEX Listener 설치 준비
<a name="Appendix.Oracle.Options.APEX.Listener.preparing"></a>

Oracle APEX Listener를 설치하려면 먼저 권한 없는 OS 사용자를 생성한 다음, Oracle APEX 설치 파일을 다운로드하여 압축을 풀어야 합니다.

**Oracle APEX Listener 설치를 준비하려면**

1. `myapexhost.example.com`에 `root`로 로그인합니다.

1. 리스너 설치를 소유할 권한 없는 OS 사용자를 생성합니다. 다음 명령은 *apexuser*라는 새 사용자를 생성합니다.

   ```
   useradd -d /home/apexuser apexuser
   ```

   다음 명령은 새로운 사용자에게 암호를 할당합니다.

   ```
   passwd apexuser;
   ```

1. `myapexhost.example.com`에 `apexuser`로 로그인하고, Oracle의 Oracle APEX 설치 파일을 `/home/apexuser` 디렉터리에 다운로드합니다.
   + [http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html](http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html) 
   + [Oracle Application Express Prior Release Archives](http://www.oracle.com/technetwork/developer-tools/apex/downloads/all-archives-099381.html) 

1. `/home/apexuser` 디렉터리에서 파일의 압축을 풉니다.

   ```
   unzip apex_<version>.zip                
   ```

   파일의 압축을 풀면 `apex` 디렉터리에 `/home/apexuser` 디렉터리가 있습니다.

1. `myapexhost.example.com`에 `apexuser`로 여전히 로그인되어 있는 경우, Oracle의 Oracle APEX 리스너 파일을 `/home/apexuser` 디렉터리에 다운로드합니다.

#### Oracle APEX Listener 설치 및 구성
<a name="Appendix.Oracle.Options.APEX.Listener.installing"></a>

Oracle APEX를 사용하기 전에 `apex.war` 파일을 다운로드하고 Java를 사용하여 Oracle APEX Listener를 설치한 다음 리스너를 시작해야 합니다.

**Oracle APEX Listener를 설치하고 구성하려면**

1. Oracle APEX Listener를 기반으로 새 디렉터리를 생성하고 리스너 파일을 엽니다.

   다음 코드를 실행합니다.

   ```
   mkdir /home/apexuser/apexlistener
   cd /home/apexuser/apexlistener 
   unzip ../apex_listener.version.zip
   ```

1. 다음 코드를 실행합니다.

   ```
   java -Dapex.home=./apex -Dapex.images=/home/apexuser/apex/images -Dapex.erase -jar ./apex.war
   ```

1. 다음 프로그램 프롬프트에 정보를 입력합니다.
   + APEX Listener 관리자 이름. 기본값은 *adminlistener*입니다.
   + APEX Listener 관리자의 암호 
   + APEX Listener Manger의 사용자 이름입니다. 기본값은 *managerlistener*입니다.
   + APEX Listener 관리자의 암호 

   다음과 같이 구성을 완료하는 데 필요한 URL이 인쇄됩니다.

   ```
   INFO: Please complete configuration at: http://localhost:8080/apex/listenerConfigure
   Database is not yet configured
   ```

1. Oracle Application Express를 사용할 수 있도록 Oracle APEX Listener를 계속 실행합니다. 이 구성 절차를 마치면 Listener를 백그라운드에서 실행할 수 있습니다.

1. 웹 브라우저에서 Oracle APEX Listener 프로그램에 제공된 URL로 이동합니다. Oracle Application Express Listener 관리 창이 나타납니다. 다음 정보를 입력합니다.
   + **Username(사용자 이름**)`APEX_PUBLIC_USER` – 
   + **Password(암호)** – *APEX\$1PUBLIC\$1USER*에 대한 암호입니다. 앞에서 Oracle APEX 리포지토리를 구성할 때 지정한 암호입니다. 자세한 내용은 [DB 인스턴스의 퍼블릭 사용자 계정 잠금 해제](#Appendix.Oracle.Options.APEX.PublicUser) 섹션을 참조하세요.
   + **Connection Type(연결 유형)** – 기본 
   + **Hostname(호스트 이름)** – Amazon RDS DB 인스턴스의 엔드포인트입니다(예: `mydb.f9rbfa893tft.us-east-1.rds.amazonaws.com`).
   + **Port(포트**) – 1521
   + **SID** – Amazon RDS DB 인스턴스에 있는 데이터베이스의 이름입니다(예: `mydb`).

1. **Apply(적용)**를 선택합니다. Oracle APEX 관리 창이 나타납니다.

1. Oracle APEX `admin` 사용자용 암호를 설정합니다. 이를 위해 SQL\$1Plus를 사용하여 DB 인스턴스에 마스터 사용자로 연결하고 다음 명령을 실행합니다.

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   `master`를 마스터 사용자 이름으로 바꿉니다. `apxchpwd.sql` 스크립트에서 메시지가 표시되면 새 `admin` 암호를 입력합니다.

1. 브라우저에서 Oracle APEX 관리 창으로 돌아가서 **관리**를 선택합니다. 그런 다음 [**Application Express Internal Administration**]을 선택합니다. 자격 증명을 요구하는 메시지가 표시되면 다음 정보를 입력합니다.
   + **User name(사용자 이름**)`admin` – 
   + **Password(암호)** – `apxchpwd.sql` 스크립트를 사용하여 설정한 암호 

   [**Login**]을 선택한 다음 `admin` 사용자용 새 암호를 설정합니다.

이제 리스너를 사용할 준비가 끝났습니다.

# Oracle Rest Data Services(ORDS) 구성
<a name="Appendix.Oracle.Options.APEX.ORDSConf"></a>

다음 주제에서는 ORDS 21 및 22의 구성 옵션을 나열합니다.

**Topics**
+ [ORDS 21 이하 설치 및 구성](#Appendix.Oracle.Options.APEX.ORDS)
+ [ORDS 22 이상 설치 및 구성](#Appendix.Oracle.Options.APEX.ORDS22)

## ORDS 21 이하 설치 및 구성
<a name="Appendix.Oracle.Options.APEX.ORDS"></a>

이제 Oracle APEX에서 사용하기 위해 Oracle Rest Data Services(ORDS)를 설치하고 구성할 수 있습니다. Oracle APEX 버전 5.0 이상은 ORDS 버전 19.1\$121을 사용합니다. ORDS 22 이상을 설치하는 방법에 대해 알아보려면 [ORDS 22 이상 설치 및 구성](#Appendix.Oracle.Options.APEX.ORDS22) 섹션을 참조하세요.

Amazon EC2 인스턴스, 회사의 온프레미스 서버 또는 사용자의 데스크톱 컴퓨터와 같은 별도의 호스트에 리스너를 설치합니다. 이 단원의 예에서는 호스트의 이름이 `myapexhost.example.com`이고 이 호스트에서 Linux를 실행 중이라고 가정합니다.

**Oracle APEX에서 사용할 ORDS 21 이하를 설치 및 구성하려면 다음과 같이 하세요.**

1. [Oracle REST data services](https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-212.html)로 이동하여 Readme를 검토합니다. 필요한 버전의 Java를 설치했는지 확인합니다.

1. ORDS 설치를 위한 새 디렉터리를 만듭니다.

   ```
   mkdir /home/apexuser/ORDS
   cd /home/apexuser/ORDS
   ```

1. [Oracle REST 데이터 서비스](https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-212.html)에서 `ords.version.number.zip` 파일을 다운로드합니다.

1. `/home/apexuser/ORDS` 디렉터리에 파일의 압축을 풉니다.

1. 다중 테넌트 데이터베이스에 ORDS를 설치하는 경우 `/home/apexuser/ORDS/params/ords_params.properties` 파일에 다음 줄을 추가합니다.

   ```
   pdb.disable.lockdown=false
   ```

1. 마스터 사용자에게 ORDS를 설치하는 데 필요한 권한을 부여합니다.

   Oracle APEX 옵션이 설치된 후 마스터 사용자에게 ORDS 스키마를 설치하는 데 필요한 권한을 부여합니다. 이렇게 하려면 데이터베이스에 연결하고 다음 명령을 실행합니다. `MASTER_USER`를 마스터 사용자의 대문자 이름으로 바꿉니다.
**중요**  
사용자 이름을 입력할 때 대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 대문자를 사용합니다. 예를 들어 `CREATE USER myuser` 또는 `CREATE USER MYUSER`를 실행하는 경우 데이터 딕셔너리에 `MYUSER`가 저장됩니다. 그러나 `CREATE USER "MyUser"`에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 `MyUser`에 저장합니다. 자세한 내용은 [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md) 섹션을 참조하세요.

   ```
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ROLE_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONS_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONSTRAINTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_PROCEDURES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TABLES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_VIEWS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPIUTL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SESSION', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_UTILITY', 'MASTER_USER', 'EXECUTE', true);
   ```
**참고**  
이들 명령은 ORDS 버전 19.1 이상에 적용됩니다.

1. 다운로드한 ords.war 파일을 사용하여 ORDS 스키마를 설치합니다.

   ```
   java -jar ords.war install advanced
   ```

   프로그램에서 다음 정보를 묻는 메시지를 표시합니다. 기본값은 괄호 안에 표시되어 있습니다. 자세한 내용은 Oracle 설명서의 [Introduction to Oracle REST Data Services](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/20.2/aelig/installing-REST-data-services.html#GUID-6F7B4E61-B730-4E73-80B8-F53299123730)를 참조하세요.
   + 구성 데이터를 저장할 위치를 입력합니다.

     */home/apexuser/ORDS*를 입력합니다. ORDS 구성 파일의 위치입니다.
   + 사용할 데이터베이스 연결 유형을 지정합니다. [1] 기본 [2] TNS [3] 사용자 지정 URL [1]에 대한 번호를 입력합니다.

     원하는 연결 유형을 선택합니다.
   + 데이터베이스 서버 [localhost]의 이름 *DB\$1instance\$1endpoint*를 입력합니다.

     기본값을 선택하거나 알맞은 값을 입력합니다.
   + 데이터베이스 리스너 포트 [1521]: *DB\$1instance\$1port*를 입력합니다.

     기본값을 선택하거나 알맞은 값을 입력합니다.
   + 데이터베이스 서비스 이름을 지정하려면 1을, 데이터베이스 SID를 지정하려면 2를 입력합니다[1]:

     데이터베이스 SID를 지정하려면 `2`를 선택합니다.
   + 데이터베이스 SID[xe]

     기본값을 선택하거나 알맞은 값을 입력합니다.
   + Oracle REST Data Services 스키마를 확인/설치하려면 1을 입력하고 이 [1]단계를 건너뛰려면 2를 입력합니다.

     를 선택합니다`1` 이 단계에서는 ORDS\$1PUBLIC\$1USER라는 Oracle REST Data Services 프록시 사용자를 생성합니다.
   + ORDS\$1PUBLIC\$1USER의 데이터베이스 암호를 입력합니다.

     암호를 입력한 다음 확인합니다.
   + 관리자 권한으로 로그인하여 Oracle REST Data Services 스키마를 확인해야 합니다.

     관리자 사용자 이름을 입력합니다. *master\$1user*

     *master\$1user*의 데이베이스 암호를 입력합니다. *master\$1user\$1password*

     암호를 확인합니다. *master\$1user\$1password*
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.
   + ORDS\$1METADATA [SYSAUX]에 대한 기본 테이블 스페이스를 입력합니다.

     ORDS\$1METADATA [TEMP]에 대한 기본 테이블 스페이스를 입력합니다.

     ORDS\$1PUBLIC\$1USER [USERS]에 대한 기본 테이블 스페이스를 입력합니다.

     ORDS\$1PUBLIC\$1USER [TEMP]에 대한 기본 테이블 스페이스를 입력합니다.
   + PL/SQL 게이트웨이를 사용하려면 1을 입력하고 이 단계를 건너뛰려면 2을 입력합니다 Oracle Application Express를 사용 중이거나 mod\$1plsql에서 마이그레이션하는 경우 1을 입력해야 합니다[1].

     기본값을 선택합니다.
   + PL/SQL 게이트웨이 데이터베이스 사용자 이름 [APEX\$1PUBLIC\$1USER]를 입력합니다.

     기본값을 선택합니다.
   + APEX\$1PUBLIC\$1USER의 데이터베이스 암호를 입력합니다.

     암호를 입력한 다음 확인합니다.
   + Application Express RESTful Services 데이터베이스 사용자(APEX\$1LISTENER, APEX\$1REST\$1PUBLIC\$1USER)를 위한 암호를 지정하려면 1을 입력하고 이 [1]단계를 건너뛰려면 2를 입력합니다.

     APEX 4.1.1.V1의 경우 `2`를 선택하고 다른 모든 APEX 버전의 경우 `1`을 선택합니다.
   + [APEX 4.1.1.v1에는 필요하지 않음] APEX\$1LISTENER의 데이터베이스 암호

     암호를 입력한 다음(필요한 경우) 확인합니다.
   + [APEX 4.1.1.v1에는 필요하지 않음] APEX\$1REST\$1PUBLIC\$1USER의 데이터베이스 암호

     암호를 입력한 다음(필요한 경우) 확인합니다.
   + 숫자를 입력하여 활성화할 기능을 선택합니다.

     SQL 개발자 웹, REST Enabled SQL 및 데이터베이스 API 등 모든 기능을 활성화하려면 `1`을 입력합니다.
   + 독립 실행형 모드로 시작하려면 1을 입력하고 [1]을 종료하려면 2를 입력합니다.

     `1`를 입력합니다.
   + APEX 정적 리소스 위치를 입력합니다.

     `/home/apexuser`에 APEX 설치 파일의 압축을 푼 경우 `/home/apexuser/apex/images`를 입력합니다. 그렇지 않으면 `unzip_path/apex/images`를 입력합니다. 여기서 *unzip\$1path*는 파일의 압축을 푼 디렉터리입니다.
   + HTTP를 사용하는 경우 1을 입력하고 HTTPS [1]를 사용하는 경우 2를 입력합니다.

     `1`을 입력하는 경우 HTTP 포트를 지정합니다. `2`를 입력하는 경우 HTTPS 포트와 SSL 호스트 이름을 지정합니다. HTTPS 옵션은 인증서 제공 방법을 지정하라는 메시지를 표시합니다.
     + 자체 서명된 인증서를 사용하려면 `1`을 입력합니다.
     + 자신의 인증서를 제공하려면 `2`를 입력합니다. `2`를 입력하는 경우 SSL 인증서의 경로와 SSL 인증서 프라이빗 키의 경로를 지정합니다.

1. APEX `admin` 사용자용 암호를 설정합니다. 이를 위해 SQL\$1Plus를 사용하여 DB 인스턴스에 마스터 사용자로 연결하고 다음 명령을 실행합니다.

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   `master`를 마스터 사용자 이름으로 바꿉니다. `apxchpwd.sql` 스크립트에서 메시지가 표시되면 새 `admin` 암호를 입력합니다.

1. ORDS 리스너를 시작합니다. 다음 코드를 실행합니다.

   ```
   java -jar ords.war
   ```

   ORDS를 처음으로 시작할 때 APEX 고정 리소스의 위치를 제공하라는 메시지가 나타납니다. 이 이미지 폴더는 APEX 설치 디렉터리의 `/apex/images` 디렉터리에 위치합니다.

1. 브라우저에서 Oracle APEX 관리 창으로 돌아가서 **관리**를 선택합니다. 그런 다음 [**Application Express Internal Administration**]을 선택합니다. 자격 증명을 요구하는 메시지가 표시되면 다음 정보를 입력합니다.
   + **User name(사용자 이름**)`admin` – 
   + **Password(암호)** – `apxchpwd.sql` 스크립트를 사용하여 설정한 암호 

   [**Login**]을 선택한 다음 `admin` 사용자용 새 암호를 설정합니다.

이제 리스너를 사용할 준비가 끝났습니다.

## ORDS 22 이상 설치 및 구성
<a name="Appendix.Oracle.Options.APEX.ORDS22"></a>

이제 Oracle APEX에서 사용하기 위해 Oracle Rest Data Services(ORDS)를 설치하고 구성할 수 있습니다. 이 섹션의 예제에서는 별도 호스트의 이름이 `myapexhost.example.com`이고 이 호스트에서 Linux를 실행 중이라고 가정합니다. ORDS 22의 지침은 이전 릴리스의 지침과는 다릅니다.

**Oracle APEX에서 사용할 ORDS 22 이상을 설치 및 구성하려면 다음과 같이 하세요.**

1. [Oracle REST data services](http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html)로 이동하여 다운로드하려는 ORDS 버전에 대한 Readme를 검토합니다. 필요한 버전의 Java를 설치했는지 확인합니다.

1. ORDS 설치를 위한 새 디렉터리를 만듭니다.

   ```
   mkdir /home/apexuser/ORDS
   cd /home/apexuser/ORDS
   ```

1. [Oracle REST data services](http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html)에서 `ords.version.number.zip` 또는 `ords-latest.zip` 파일을 다운로드합니다.

1. `/home/apexuser/ORDS` 디렉터리에 파일의 압축을 풉니다.

1. 마스터 사용자에게 ORDS를 설치하는 데 필요한 권한을 부여합니다.

   `APEX` 옵션이 설치된 후 마스터 사용자에게 ORDS 스키마를 설치하는 데 필요한 권한을 부여합니다. 이렇게 하려면 데이터베이스에 로깅하여 다음 명령을 실행합니다. `MASTER_USER`를 마스터 사용자의 대문자 이름으로 바꿉니다.
**중요**  
사용자 이름을 입력할 때 대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 대문자를 사용합니다. 예를 들어 `CREATE USER myuser` 또는 `CREATE USER MYUSER`를 실행하는 경우 데이터 딕셔너리에 `MYUSER`가 저장됩니다. 그러나 `CREATE USER "MyUser"`에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 `MyUser`에 저장합니다. 자세한 내용은 [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md) 섹션을 참조하세요.

   ```
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ROLE_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONS_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONSTRAINTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_PROCEDURES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TABLES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_VIEWS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPIUTL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SESSION', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_UTILITY', 'MASTER_USER', 'EXECUTE', true);
   
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOB', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_ASSERT', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_OUTPUT', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SCHEDULER', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('HTP', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('OWA', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPG_DOCLOAD', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_METADATA', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SQL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('UTL_SMTP', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_NETWORK_ACL_ADMIN', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('SESSION_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_USERS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_NETWORK_ACL_PRIVILEGES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_NETWORK_ACLS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'MASTER_USER', 'SELECT', true);
   ```
**참고**  
위의 명령은 ORDS 22 이상에 적용됩니다.

1. 다운로드한 `ords` 스크립트를 사용하여 ORDS 스키마를 설치합니다. 구성 파일 및 로그 파일을 포함할 디렉터리를 지정합니다. Oracle Corporation은 이러한 디렉터리를 ORDS 제품 소프트웨어가 포함되어 있는 디렉터리 내에 배치하지 말 것을 권장합니다.

   ```
   mkdir -p /home/apexuser/ords_config /home/apexuser/ords_logs
   
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config \
     install --interactive --log-folder /home/apexuser/ords_logs
   ```

   컨테이너 데이터베이스(CDB) 아키텍처를 실행하는 DB 인스턴스의 경우 ORDS 23.3 이상을 사용하고 ORDS를 설치할 때 `--pdb-skip-disable-lockdown` 인수를 전달합니다.

   ```
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config \
     install --interactive --log-folder /home/apexuser/ords_logs --pdb-skip-disable-lockdown
   ```

   프로그램에서 다음 정보를 묻는 메시지를 표시합니다. 기본값은 괄호 안에 표시되어 있습니다. 자세한 내용은 Oracle 설명서의 [Introduction to Oracle REST Data Services](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/20.2/aelig/installing-REST-data-services.html#GUID-6F7B4E61-B730-4E73-80B8-F53299123730)를 참조하세요.
   + `Choose the type of installation:`

     데이터베이스에 ORDS 스키마를 설치하고 로컬 ORDS 구성 파일에 데이터베이스 연결 풀을 생성하도록 **2**를 선택합니다.
   + `Specify the database connection type to use. Enter number for [1] Basic [2] TNS [3] Custom URL:`

     원하는 연결 유형을 선택합니다. 이 예제에서는 사용자가 **1**을 선택한 것으로 가정합니다.
   + `Enter the name of the database server [localhost]:` ***DB\$1instance\$1endpoint***

     기본값을 선택하거나 알맞은 값을 입력합니다.
   + `Enter the database listener port [1521]:` ***DB\$1instance\$1port***

     기본값 **1521**을 선택하거나 적절한 값을 입력합니다.
   + `Enter the database service name [orcl]:`

     RDS for Oracle DB 인스턴스에서 사용하는 데이터베이스 이름을 입력합니다.
   + `Provide database user name with administrator privileges`

      Oracle DB 인스턴스의 RDS에 마스터 사용자 이름을 입력합니다.
   + `Enter the database password for [username]:`

     Oracle DB 인스턴스의 RDS에 마스터 사용자 비밀번호를 입력합니다.
   + `Enter the default tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [SYSAUX]:`
   + `Enter the temporary tablespace for ORDS_METADATA [TEMP]. Enter the default tablespace for ORDS_PUBLIC_USER [USERS]. Enter the temporary tablespace for ORDS_PUBLIC_USER [TEMP].`
   + `Enter a number to select additional feature(s) to enable [1]:`
   + `Enter a number to configure and start ORDS in standalone mode [1]: `

      독립형 모드에서 ORDS를 바로 시작하지 않도록 **2**를 선택합니다.
   + `Enter a number to select the protocol [1] HTTP`
   + `Enter the HTTP port [8080]:`
   + `Enter the APEX static resources location:`

     Oracle APEX 설치 파일(`/home/apexuser/apex/images`)에 대한 경로를 입력합니다.

1. Oracle APEX `admin` 사용자용 암호를 설정합니다. 이를 위해 SQL\$1Plus를 사용하여 DB 인스턴스에 마스터 사용자로 연결하고 다음 명령을 실행합니다.

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   `master`를 마스터 사용자 이름으로 바꿉니다. `apxchpwd.sql` 스크립트에서 메시지가 표시되면 새 `admin` 암호를 입력합니다.

1. `serve` 명령과 함께 `ords` 스크립트를 사용하여 독립형 모드에서 ORDS를 실행합니다. 프로덕션 배포의 경우 Apache Tomcat 또는 Oracle WebLogic Server 등의 지원되는 Java EE 애플리케이션 서버를 사용하는 것이 좋습니다. 자세한 내용은 Oracle 데이터베이스 설명서의 [Oracle REST Data Services 배포 및 모니터링](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/23.1/ordig/deploying-and-monitoring-oracle-rest-data-services.html#GUID-6791F5DF-AC67-4885-BFFA-B80964C17EC9)을 참조하세요.

   ```
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config serve \
     --port 8193 \
     --apex-images /home/apexuser/apex/images
   ```

   ORDS가 실행 중이지만 Oracle APEX 설치에 액세스할 수 없는 경우, 특히 비CDB 인스턴스에서 다음 오류가 표시될 수 있습니다.

   ```
   The procedure named apex_admin could not be accessed, it may not be declared, or the user executing this request may not have been granted execute privilege on the procedure, or a function specified by security.requestValidationFunction configuration property has prevented access.
   ```

   이 오류를 해결하려면 `config` 명령으로 `ords` 스크립트를 실행하여 ORDS에서 사용하는 요청 검증 함수를 변경합니다. 기본적으로 ORDS는 CDB 인스턴스에서만 지원되는 `ords_util.authorize_plsql_gateway` 프로시저를 사용합니다. 비CDB 인스턴스의 경우 이 프로시저를 `wwv_flow_epg_include_modules.authorize` 패키지로 변경할 수 있습니다. 사용 사례에 적합한 요청 검증 기능을 구성하는 모범 사례는 Oracle 데이터베이스 설명서 및 Oracle 지원을 참조하세요.

1. 브라우저에서 Oracle APEX 관리 창으로 돌아가서 **관리**를 선택합니다. 그런 다음 [**Application Express Internal Administration**]을 선택합니다. 자격 증명을 요구하는 메시지가 표시되면 다음 정보를 입력합니다.
   + **User name(사용자 이름**)`admin` – 
   + **Password(암호)** – `apxchpwd.sql` 스크립트를 사용하여 설정한 암호 

   [**Login**]을 선택한 다음 `admin` 사용자용 새 암호를 설정합니다.

이제 리스너를 사용할 준비가 끝났습니다.

# Oracle APEX 업그레이드 및 제거
<a name="Appendix.Oracle.Options.APEX.UpgradeandRemove"></a>

Oracle APEX를 업그레이드하거나 제거하려면 이 주제의 지침을 따르세요.

**Topics**
+ [Oracle APEX 버전 업그레이드](#Appendix.Oracle.Options.APEX.Upgrade)
+ [APEX 및 APEX-DEV 옵션 제거](#Appendix.Oracle.Options.APEX.Remove)

## Oracle APEX 버전 업그레이드
<a name="Appendix.Oracle.Options.APEX.Upgrade"></a>

**중요**  
Oracle APEX를 업그레이드하기 전에 DB 인스턴스를 백업하세요. 자세한 내용은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 및 [Oracle DB 업그레이드 테스트](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md)(을)를 참조하세요.

DB 인스턴스와 함께 Oracle APEX를 업그레이드하려면 다음을 실행합니다.
+ 업그레이드된 DB 인스턴스 버전의 새 옵션 그룹을 생성합니다.
+ `APEX` 및 `APEX-DEV` 옵션의 업그레이드된 버전을 새 옵션 그룹에 추가합니다. DB 인스턴스가 사용하는 다른 옵션도 포함시켜야 합니다. 자세한 내용은 [옵션 그룹 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG) 섹션을 참조하세요.
+ DB 인스턴스를 업그레이드할 때 업그레이드된 DB 인스턴스의 새 옵션 그룹을 지정합니다.

Oracle APEX 버전을 업그레이드한 후에도 이전 버전의 Oracle APEX 스키마가 데이터베이스에 남아 있을 수 있습니다. 더 이상 필요 없는 경우에는 업그레이드 후에 데이터베이스에서 기존 Oracle APEX 스키마를 제거할 수 있습니다.

Oracle APEX 버전을 업그레이드하고 이전 Oracle APEX 버전에서 RESTful 서비스가 구성되지 않은 경우 RESTful 서비스를 구성하는 것이 좋습니다. 자세한 내용은 [Oracle APEX용 RESTful 서비스 구성](Appendix.Oracle.Options.APEX.settingUp.md#Appendix.Oracle.Options.APEX.ConfigureRESTful) 섹션을 참조하세요.

DB 인스턴스의 메이저 버전 업그레이드를 계획할 때 대상 데이터베이스 버전과 호환되지 않는 Oracle APEX 버전을 사용하는 경우가 있습니다. 이러한 경우 DB 인스턴스를 업그레이드하려면 먼저 Oracle APEX 버전을 업그레이드해야 합니다. Oracle APEX를 먼저 업그레이드하면 DB 인스턴스를 업그레이드하는 시간을 줄일 수 있습니다.

**참고**  
Oracle APEX 업그레이드 이후 업그레이드된 버전과 사용할 리스너를 설치 및 구성합니다. 지침은 [Oracle APEX Listener 설정](Appendix.Oracle.Options.APEX.settingUp.md#Appendix.Oracle.Options.APEX.Listener) 섹션을 참조하세요.

## APEX 및 APEX-DEV 옵션 제거
<a name="Appendix.Oracle.Options.APEX.Remove"></a>

DB 인스턴스에서 `APEX` 및 `APEX-DEV` 옵션을 제거할 수 있습니다. DB 인스턴스에서 이러한 옵션을 제거하려면 다음 중 하나를 수행합니다.
+ 여러 DB 인스턴스에서 `APEX` 및 `APEX-DEV` 옵션을 제거하려면 DB 인스턴스가 속한 옵션 그룹에서 해당 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 여러 DB 인스턴스에 연결된 옵션 그룹에서 옵션을 제거하면 DB 인스턴스가 다시 시작되는 동안 인스턴스가 잠시 중단됩니다.

  자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
+ 단일 DB 인스턴스에서 `APEX` 및 `APEX-DEV` 옵션을 제거하려면 DB 인스턴스를 수정하고 이러한 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 이러한 옵션을 제거하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 인스턴스가 잠시 중단됩니다.

  자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

DB 인스턴스에서 `APEX` 및 `APEX-DEV` 옵션을 제거하면 데이터베이스에서 APEX 스키마가 제거됩니다.