

# 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` 사용자용 새 암호를 설정합니다.

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