Oracle Rest Data Services(ORDS) 구성 - Amazon Relational Database Service

Oracle Rest Data Services(ORDS) 구성

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

ORDS 21 이하 설치 및 구성

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

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

Oracle APEX에서 사용할 ORDS 21 이하를 설치 및 구성하려면 다음과 같이 하세요.
  1. Oracle REST data services로 이동하여 Readme를 검토합니다. 필요한 버전의 Java를 설치했는지 확인합니다.

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

    mkdir /home/apexuser/ORDS cd /home/apexuser/ORDS
  3. Oracle REST 데이터 서비스에서 ords.version.number.zip 파일을 다운로드합니다.

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

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

    pdb.disable.lockdown=false
  6. 마스터 사용자에게 ORDS를 설치하는 데 필요한 권한을 부여합니다.

    Oracle APEX 옵션이 설치된 후 마스터 사용자에게 ORDS 스키마를 설치하는 데 필요한 권한을 부여합니다. 이렇게 하려면 데이터베이스에 연결하고 다음 명령을 실행합니다. MASTER_USER를 마스터 사용자의 대문자 이름으로 바꿉니다.

    중요

    사용자 이름을 입력할 때 대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 대문자를 사용합니다. 예를 들어 CREATE USER myuser 또는 CREATE USER MYUSER를 실행하는 경우 데이터 딕셔너리에 MYUSER가 저장됩니다. 그러나 CREATE USER "MyUser"에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 MyUser에 저장합니다. 자세한 내용은 SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여 섹션을 참조하세요.

    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 이상에 적용됩니다.

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

    java -jar ords.war install advanced

    프로그램에서 다음 정보를 묻는 메시지를 표시합니다. 기본값은 괄호 안에 표시되어 있습니다. 자세한 내용은 Oracle 설명서의 Introduction to Oracle REST Data Services를 참조하세요.

    • 구성 데이터를 저장할 위치를 입력합니다.

      /home/apexuser/ORDS를 입력합니다. ORDS 구성 파일의 위치입니다.

    • 사용할 데이터베이스 연결 유형을 지정합니다. [1] 기본 [2] TNS [3] 사용자 지정 URL [1]에 대한 번호를 입력합니다.

      원하는 연결 유형을 선택합니다.

    • 데이터베이스 서버 [localhost]의 이름 DB_instance_endpoint를 입력합니다.

      기본값을 선택하거나 알맞은 값을 입력합니다.

    • 데이터베이스 리스너 포트 [1521]: DB_instance_port를 입력합니다.

      기본값을 선택하거나 알맞은 값을 입력합니다.

    • 데이터베이스 서비스 이름을 지정하려면 1을, 데이터베이스 SID를 지정하려면 2를 입력합니다[1]:

      데이터베이스 SID를 지정하려면 2를 선택합니다.

    • 데이터베이스 SID[xe]

      기본값을 선택하거나 알맞은 값을 입력합니다.

    • Oracle REST Data Services 스키마를 확인/설치하려면 1을 입력하고 이 [1]단계를 건너뛰려면 2를 입력합니다.

      를 선택합니다1 이 단계에서는 ORDS_PUBLIC_USER라는 Oracle REST Data Services 프록시 사용자를 생성합니다.

    • ORDS_PUBLIC_USER의 데이터베이스 암호를 입력합니다.

      암호를 입력한 다음 확인합니다.

    • 관리자 권한으로 로그인하여 Oracle REST Data Services 스키마를 확인해야 합니다.

      관리자 사용자 이름을 입력합니다. master_user

      master_user의 데이베이스 암호를 입력합니다. master_user_password

      암호를 확인합니다. master_user_password

      참고

      보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

    • ORDS_METADATA [SYSAUX]에 대한 기본 테이블 스페이스를 입력합니다.

      ORDS_METADATA [TEMP]에 대한 기본 테이블 스페이스를 입력합니다.

      ORDS_PUBLIC_USER [USERS]에 대한 기본 테이블 스페이스를 입력합니다.

      ORDS_PUBLIC_USER [TEMP]에 대한 기본 테이블 스페이스를 입력합니다.

    • PL/SQL 게이트웨이를 사용하려면 1을 입력하고 이 단계를 건너뛰려면 2을 입력합니다 Oracle Application Express를 사용 중이거나 mod_plsql에서 마이그레이션하는 경우 1을 입력해야 합니다[1].

      기본값을 선택합니다.

    • PL/SQL 게이트웨이 데이터베이스 사용자 이름 [APEX_PUBLIC_USER]를 입력합니다.

      기본값을 선택합니다.

    • APEX_PUBLIC_USER의 데이터베이스 암호를 입력합니다.

      암호를 입력한 다음 확인합니다.

    • Application Express RESTful Services 데이터베이스 사용자(APEX_LISTENER, APEX_REST_PUBLIC_USER)를 위한 암호를 지정하려면 1을 입력하고 이 [1]단계를 건너뛰려면 2를 입력합니다.

      APEX 4.1.1.V1의 경우 2를 선택하고 다른 모든 APEX 버전의 경우 1을 선택합니다.

    • [APEX 4.1.1.v1에는 필요하지 않음] APEX_LISTENER의 데이터베이스 암호

      암호를 입력한 다음(필요한 경우) 확인합니다.

    • [APEX 4.1.1.v1에는 필요하지 않음] APEX_REST_PUBLIC_USER의 데이터베이스 암호

      암호를 입력한 다음(필요한 경우) 확인합니다.

    • 숫자를 입력하여 활성화할 기능을 선택합니다.

      SQL 개발자 웹, REST Enabled SQL 및 데이터베이스 API 등 모든 기능을 활성화하려면 1을 입력합니다.

    • 독립 실행형 모드로 시작하려면 1을 입력하고 [1]을 종료하려면 2를 입력합니다.

      1를 입력합니다.

    • APEX 정적 리소스 위치를 입력합니다.

      /home/apexuser에 APEX 설치 파일의 압축을 푼 경우 /home/apexuser/apex/images를 입력합니다. 그렇지 않으면 unzip_path/apex/images를 입력합니다. 여기서 unzip_path는 파일의 압축을 푼 디렉터리입니다.

    • HTTP를 사용하는 경우 1을 입력하고 HTTPS [1]를 사용하는 경우 2를 입력합니다.

      1을 입력하는 경우 HTTP 포트를 지정합니다. 2를 입력하는 경우 HTTPS 포트와 SSL 호스트 이름을 지정합니다. HTTPS 옵션은 인증서 제공 방법을 지정하라는 메시지를 표시합니다.

      • 자체 서명된 인증서를 사용하려면 1을 입력합니다.

      • 자신의 인증서를 제공하려면 2를 입력합니다. 2를 입력하는 경우 SSL 인증서의 경로와 SSL 인증서 프라이빗 키의 경로를 지정합니다.

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

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

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

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

    java -jar ords.war

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

  10. 브라우저에서 Oracle APEX 관리 창으로 돌아가서 관리를 선택합니다. 그런 다음 [Application Express Internal Administration]을 선택합니다. 자격 증명을 요구하는 메시지가 표시되면 다음 정보를 입력합니다.

    • User name(사용자 이름)admin

    • Password(암호)apxchpwd.sql 스크립트를 사용하여 설정한 암호

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

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

ORDS 22 이상 설치 및 구성

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

Oracle APEX에서 사용할 ORDS 22 이상을 설치 및 구성하려면 다음과 같이 하세요.
  1. Oracle REST data services로 이동하여 다운로드하려는 ORDS 버전에 대한 Readme를 검토합니다. 필요한 버전의 Java를 설치했는지 확인합니다.

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

    mkdir /home/apexuser/ORDS cd /home/apexuser/ORDS
  3. Oracle REST data services에서 ords.version.number.zip 또는 ords-latest.zip 파일을 다운로드합니다.

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

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

    APEX 옵션이 설치된 후 마스터 사용자에게 ORDS 스키마를 설치하는 데 필요한 권한을 부여합니다. 이렇게 하려면 데이터베이스에 로깅하여 다음 명령을 실행합니다. MASTER_USER를 마스터 사용자의 대문자 이름으로 바꿉니다.

    중요

    사용자 이름을 입력할 때 대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 대문자를 사용합니다. 예를 들어 CREATE USER myuser 또는 CREATE USER MYUSER를 실행하는 경우 데이터 딕셔너리에 MYUSER가 저장됩니다. 그러나 CREATE USER "MyUser"에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 MyUser에 저장합니다. 자세한 내용은 SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여 섹션을 참조하세요.

    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 이상에 적용됩니다.

  6. 다운로드한 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.2 이상을 사용하고 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를 참조하세요.

    • 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_instance_endpoint

      기본값 을 선택하거나 적절한 값을 입력합니다.

    • Enter the database listener port [1521]: DB_instance_port

      기본값 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)에 대한 경로를 입력합니다.

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

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

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

  8. serve 명령과 함께 ords 스크립트를 사용하여 독립형 모드에서 ORDS를 실행합니다. 프로덕션 배포의 경우 Apache Tomcat 또는 Oracle WebLogic Server 등의 지원되는 Java EE 애플리케이션 서버를 사용하는 것이 좋습니다. 자세한 내용은 Oracle 데이터베이스 설명서의 Oracle REST Data Services 배포 및 모니터링을 참조하세요.

    /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 지원을 참조하세요.

  9. 브라우저에서 Oracle APEX 관리 창으로 돌아가서 관리를 선택합니다. 그런 다음 [Application Express Internal Administration]을 선택합니다. 자격 증명을 요구하는 메시지가 표시되면 다음 정보를 입력합니다.

    • User name(사용자 이름)admin

    • Password(암호)apxchpwd.sql 스크립트를 사용하여 설정한 암호

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

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