본문 바로가기

Database/Oracle Database

Oracle REST Data Services - 1. 개요 및 ORDS 설치

참조문서: Oracle REST Data Services 21.4

샘플 테스트를 위한 사전 체크

Oracle REST Data Service (ORDS) 란?

Oracle REST Data Services (ORDS)는 미드 티어 자바 어플리케이션으로서 HTTPS와 오라클 데이터베이스를 연결해 주는 솔루션입니다.

ORDS는 데이터베이스 관리 REST API, SQL SQL Developer Web, PL/SQL Gateway, REST용 SODA, 오라클 데이터베이스의 데이터 및 저장 프로시저와 상호 작용하기 위한 RESTful 웹 서비스 배포 기능을 제공합니다. 또한 명령어 기반 설정, 파일 캐싱 등도 제공합니다.

ORDS는 기존 오라클의 Oracle HTTP Server (OHS)와 mod_plsql을 대체합니다. 참고로 OHS는 아파치 HTTP 서버를 기반으로하는 웹 서버이고, mod_plsql은 웹상에서 PL/SQL 기반 어플리케이션을 개발을 지원하는 기능으로 PL/SQL 프로시저로 데이터베이스에서 데이터를 가져와서 데이터와 코드를 포함하는 HTTP 응답을 생성해서 웹 브라우저에서 보여줍니다.

ORDS는 오라클 WebLogic 서버, 아파치 Tomcat와 같은 자바 EE 어플리케이션 서버에 배포를 하거나, 또는 Standalone 모드로 사용할 수 있습니다. Standalone 모드는 “java -jar ords.war help standalone"과 같은 명령으로 사용할 수 있으며, 주로 개발환경에서 사용합니다.

그리고 Oracle Application Express (APEX) 같은 경우, 웹 브라우저와 APEX 엔진 사이에 요청을 중계할 웹서버가 필요한데 ORDS가 이를 수행합니다. 또한 ORDS는오라클 홈이 필요하지 않기 때문에 배포 프로세스를 단순하게 할 수 있으며, 내장된 JDBC 드라이버를 이용해서 데이터베이스와의 연결을 제공합니다.

ORDS 사용을 위해 미리 필요한 것

  • 오라클 데이터베이스 (Enterprise Edition, Standard Edition or Standard Edition One) 11g R2 이상
  • 오라클 Java 8 버전 이상
  • 웹 브라우저:
    • Microsoft Internet Explorer 8.0 이상
    • Mozilla Firefox 3.0 이상
    • Google Chrome 2.0 이상

ORDS를 사용하기 위해 반드시 APEX가 필요한 것은 아니지만, APEX를 설치하고 RESTful 서비스가 설치 과정 중에 설정했다면 ORDS가 APEX에 정의된 RESTful 서비스를 실행합니다.

ORDS 설치 및 설정

테스트 환경

테스트 환경은 Oracle Cloud Infrastructure (OCI)에서 오라클 리눅스 7.9 가상 머신입니다.

연결할 데이터베이스는 오라클 데이터베이스 21.0.0.0.0 버전이며, Multitenant 구성입니다. Java는 openjdk 11.0.14.1를 미리 설치했습니다.

ORDS 다운로드

아래 링크에서 ORDS 최신 버전을 다운로드 받습니다. 그리고 여기서는 $ORACLE_BASE 아래에 ords 디렉토리를 만들고, 설치 파일을 옮겨서 압축을 해제했습니다. 참고로 apex/images 디렉토리는 APEX 관련 설정을 하지 않을 경우에는 생성할 필요가 없습니다.

https://download.oracle.com/otn_software/java/ords/ords-latest.zip

[opc@inst-db ~]$ sudo su - oracle
Last login: Tue Feb 22 23:48:25 GMT 2022 on pts/0
[oracle@inst-db ~]$ wget <https://download.oracle.com/otn_software/java/ords/ords-latest.zip>
...
2022-02-23 03:42:14 (84.1 MB/s) - ‘ords-latest.zip’ saved [81492165/81492165]

[oracle@inst-db ~]$ mkdir -p $ORACLE_BASE/ords/config
[oracle@inst-db ~]$ mkdir -p $ORACLE_BASE/apex/images
[oracle@inst-db ~]$ mv ./ords-latest.zip $ORACLE_BASE/ords
[oracle@inst-db ~]$ cd $ORACLE_BASE/ords
[oracle@inst-db ords]$ ls
config  ords-latest.zip

[oracle@inst-db ords]$ unzip ords-latest.zip
...
inflating: installer/ords_installer_privileges.sql
  inflating: ords.war
[oracle@inst-db ords]$ ls
config  docs  examples  FUTC.txt  index.html  installer  license.txt  ords-latest.zip  ords.war  params

 

ORDS 설치 및 데이터베이스 연결 설정

ORDS 설치에는 아래 두가지 옵션이 있습니다.

  • 명령어 프롬프트를 이용한 Advanced 설치 옵션
  • 파라미터 파일을 이용한 Silent 설치 옵션

여기서는 명령어 프롬프트를 이용한 Advanced 옵션으로 설치를 진행했습니다.

여기에서 처럼 ORDS로 연결하는 데이터베이스가 Multitenant 환경이며, CDB 레벨에서 설치할 경우, Seed Pluggable Database를 먼저 read write 상태로 만들어 줘야 합니다. 그렇지 않을 경우, ORDS 설치 마지막에 "ORA-65017: seed pluggable database may not be dropped or altered” 에러 메시지를 받게 됩니다.

특정 PDB에만 설치할 경우에는 아래 작업을 하지 않아도 됩니다.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB1                       READ WRITE NO
SQL> alter pluggable database PDB$SEED close;

Pluggable database altered.

SQL> alter pluggable database PDB$SEED open read write;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ WRITE NO
         3 ORCLPDB1                       READ WRITE NO

ORDS Advanced 설치를 위해서 아래 java 명령을 실행합니다. 여기서는 APEX 관련 설정을 하지 않을 것이므로 아래 질문에서 2를 입력하여 APEX 관련 설정을 skip했습니다.

“If using Oracle Application Express or migrating from mod_plsql then you must enter 1 [1]:2”

또한 설치 완료 후, ORDS에 번들로 묶인 Jetty 웹서버를 이용한 Standalone 모드로 ORDS의 즉시 기동을 2로 입력하여 skip했습니다.

그 외 설정 데이터를 지정하는 디렉토리 지정을 제외하고는 대부분 디폴트 설정을 했습니다. 서비스명을 지정하는 부분에서 CDB 서비스명을 입력했습니다. 이렇게 하면 이후, CDB에서 뿐만 아니라 CDB 내 PDB을 찾아서 ORDS_METADATA, ORDS_PUBLIC_USER와 같은 스키마를 설치를 합니다.

[oracle@inst-db ords]$ java -jar ords.war install advanced
This Oracle REST Data Services instance has not yet been configured.
Please complete the following prompts

Enter the location to store configuration data: /opt/oracle/ords/config
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]:
Enter the database listen port [1521]:
Enter 1 to specify the database service name, or 2 to specify the database SID [1]:
Enter the database service name:ORCLCDB
Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip this step [1]:
Enter the database password for ORDS_PUBLIC_USER:
Confirm password:
Requires to login with administrator privileges to verify Oracle REST Data Services schema.

Enter the administrator username:sys
Enter the database password for SYS AS SYSDBA:
Confirm password:
Connecting to database user: SYS AS SYSDBA url: jdbc:oracle:thin:@//localhost:1521/ORCLCDB

Retrieving information...
Your database connection is to a CDB.  ORDS common user ORDS_PUBLIC_USER will be created in the CDB.  ORDS schema will be installed in the PDBs.
Root CDB$ROOT - create ORDS common user
PDB PDB$SEED - install ORDS 21.4.1.r0250904
PDB ORCLPDB1 - install ORDS 21.4.1.r0250904

Enter 1 if you want to install ORDS or 2 to skip this step [1]:
Enter the default tablespace for ORDS_METADATA [SYSAUX]:
Enter the temporary tablespace for ORDS_METADATA [TEMP]:
Enter the default tablespace for ORDS_PUBLIC_USER [SYSAUX]:
Enter the temporary tablespace for ORDS_PUBLIC_USER [TEMP]:
Enter 1 if you want to use PL/SQL Gateway or 2 to skip this step.
If using Oracle Application Express or migrating from mod_plsql then you must enter 1 [1]:2
Enter a number to select a feature to enable:
   [1] SQL Developer Web  (Enables all features)
   [2] REST Enabled SQL
   [3] Database API
   [4] REST Enabled SQL and Database API
   [5] None
Choose [1]:
2022-02-23T08:46:42.749Z INFO        reloaded pools: []

Installing Oracle REST Data Services version 21.4.1.r0250904 in CDB$ROOT
... Log file written to /home/oracle/ords_cdb_install_core_CDB_ROOT_2022-02-23_084642_00861.log
... Verified database prerequisites
... Created Oracle REST Data Services proxy user
Completed installation for Oracle REST Data Services version 21.4.1.r0250904. Elapsed time: 00:00:01.765

Installing Oracle REST Data Services version 21.4.1.r0250904 in PDB$SEED
... Log file written to /home/oracle/ords_cdb_install_core_PDB_SEED_2022-02-23_084644_00624.log
... Verified database prerequisites
... Created Oracle REST Data Services proxy user
... Created Oracle REST Data Services schema
... Granted privileges to Oracle REST Data Services
... Created Oracle REST Data Services database objects
... Log file written to /home/oracle/ords_cdb_install_datamodel_PDB_SEED_2022-02-23_084651_00702.log
... Log file written to /home/oracle/ords_cdb_install_scheduler_PDB_SEED_2022-02-23_084652_00397.log
... Log file written to /home/oracle/ords_cdb_install_apex_PDB_SEED_2022-02-23_084653_00889.log
Completed installation for Oracle REST Data Services version 21.4.1.r0250904. Elapsed time: 00:00:10.1

Installing Oracle REST Data Services version 21.4.1.r0250904 in ORCLPDB1
... Log file written to /home/oracle/ords_cdb_install_core_ORCLPDB1_2022-02-23_084654_00631.log
... Verified database prerequisites
... Created Oracle REST Data Services proxy user
... Created Oracle REST Data Services schema
... Granted privileges to Oracle REST Data Services
... Created Oracle REST Data Services database objects
... Log file written to /home/oracle/ords_cdb_install_datamodel_ORCLPDB1_2022-02-23_084700_00677.log
... Log file written to /home/oracle/ords_cdb_install_scheduler_ORCLPDB1_2022-02-23_084701_00349.log
... Log file written to /home/oracle/ords_cdb_install_apex_ORCLPDB1_2022-02-23_084702_00829.log
Completed installation for Oracle REST Data Services version 21.4.1.r0250904. Elapsed time: 00:00:08.933

Completed CDB installation for Oracle REST Data Services version 21.4.1.r0250904. Total elapsed time: 00:00:20.736

Enter 1 if you wish to start in standalone mode or 2 to exit [1]:2
[oracle@inst-db ords]$

<END>