4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MongoDB ShellからOracle Database 23c Free - Developer Releaseに接続してみた

Last updated at Posted at 2023-05-15

はじめに

JSON-Relational Dualityの検証環境を構築するために、Oracle Database 23c Free - Developer Releaseをインストールした環境にOracle Database API for MongoDBを導入し、MongoDBのクライアントであるMongoDB ShellからOracle Database 23cにアクセスしてみました。

0.Oracle Database 23c Free - Developer Releaseのインストール

こちらの記事に従って、Oracle Linux 8にOracle Database 23c Free - Developer Releaseをインストールします。

1. Java(JDK)のインストール

JDKをインストールします。

[opc@23c ~]$ sudo dnf install -y java
Last metadata expiration check: 0:37:18 ago on Mon 15 May 2023 12:48:51 PM GMT.
Dependencies resolved.
==============================================================================================================
 Package                 Architecture       Version                        Repository                    Size
==============================================================================================================
Installing:
 jdk-11.0.10             x86_64             2000:11.0.10-ga                ol8_oci_included             156 M

Transaction Summary
==============================================================================================================
Install  1 Package

Total download size: 156 M
Installed size: 292 M
Downloading Packages:
jdk-11.0.10+8_linux-x64_bin.rpm                                                46 MB/s | 156 MB     00:03    
--------------------------------------------------------------------------------------------------------------
Total                                                                          46 MB/s | 156 MB     00:03     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                      1/1 
  Installing       : jdk-11.0.10-2000:11.0.10-ga.x86_64                                                   1/1 
  Running scriptlet: jdk-11.0.10-2000:11.0.10-ga.x86_64                                                   1/1 
  Verifying        : jdk-11.0.10-2000:11.0.10-ga.x86_64                                                   1/1 

Installed:
  jdk-11.0.10-2000:11.0.10-ga.x86_64                                                                          

Complete!
[opc@23c ~]$ 

2.MongoDB Shellのインストール

MongoDBのリポジトリを追加します。

[opc@23c ~]$ sudo vi /etc/yum.repos.d/mongodb-org-6.0.repo
/etc/yum.repos.d/mongodb-org-6.0.repo
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

MongoDB Shellをインストールします。

[opc@23c ~]$ sudo dnf install -y mongodb-mongosh
Last metadata expiration check: 0:03:03 ago on Mon 15 May 2023 01:28:37 PM GMT.
Dependencies resolved.
==============================================================================================================
 Package                      Architecture        Version                  Repository                    Size
==============================================================================================================
Installing:
 mongodb-mongosh              x86_64              1.8.2-1.el8              mongodb-org-6.0               43 M

Transaction Summary
==============================================================================================================
Install  1 Package

Total download size: 43 M
Installed size: 172 M
Downloading Packages:
mongodb-mongosh-1.8.2.x86_64.rpm                                               24 MB/s |  43 MB     00:01    
--------------------------------------------------------------------------------------------------------------
Total                                                                          24 MB/s |  43 MB     00:01     
MongoDB Repository                                                            964  B/s | 1.7 kB     00:01    
Importing GPG key 0x64C3C388:
 Userid     : "MongoDB 6.0 Release Signing Key <packaging@mongodb.com>"
 Fingerprint: 39BD 841E 4BE5 FB19 5A65 400E 6A26 B1AE 64C3 C388
 From       : https://www.mongodb.org/static/pgp/server-6.0.asc
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                      1/1 
  Installing       : mongodb-mongosh-1.8.2-1.el8.x86_64                                                   1/1 
  Running scriptlet: mongodb-mongosh-1.8.2-1.el8.x86_64                                                   1/1 
  Verifying        : mongodb-mongosh-1.8.2-1.el8.x86_64                                                   1/1 

Installed:
  mongodb-mongosh-1.8.2-1.el8.x86_64                                                                          

Complete!
[opc@23c ~]$ 

3.ORDSのインストール

oracleユーザにスイッチします。

[opc@23c ~]$ sudo su - oracle
Last login: Mon May 15 12:32:08 GMT 2023 on pts/0
[oracle@23c ~]$

ORDSを作成するディレクトリを作成します。

[oracle@23c ~]$ mkdir /opt/oracle/ords
[oracle@23c ~]$ 

作成したディレクトリに移動します。

[oracle@23c ~]$ cd /opt/oracle/ords
[oracle@23c ords]$ 

ORDSのインストーラをダウンロードします。

[oracle@23c ords]$ wget https://download.oracle.com/otn_software/java/ords/ords-23.1.2.115.1944.zip
--2023-05-15 13:34:33--  https://download.oracle.com/otn_software/java/ords/ords-23.1.2.115.1944.zip
Resolving download.oracle.com (download.oracle.com)... 23.45.52.112
Connecting to download.oracle.com (download.oracle.com)|23.45.52.112|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 96775758 (92M) [application/zip]
Saving to: ‘ords-23.1.2.115.1944.zip’

ords-23.1.2.115.1944.zip    100%[=========================================>]  92.29M  77.8MB/s    in 1.2s    

2023-05-15 13:34:35 (77.8 MB/s) - ‘ords-23.1.2.115.1944.zip’ saved [96775758/96775758]

[oracle@23c ords]$

ダウンロードしたファイルを解凍します。

[oracle@23c ords]$ unzip ords-23.1.2.115.1944.zip 
Archive:  ords-23.1.2.115.1944.zip
   creating: bin/
   creating: linux-support/
   creating: linux-support/man/
   creating: examples/
   creating: examples/application-container/
<略>
  inflating: ords.war                
  inflating: examples/plugins/lib/ords-plugin-api-23.1.2.115.1944.jar  
  inflating: examples/plugins/lib/jakarta.servlet-api-4.0.3.jar  
  inflating: examples/plugins/lib/ords-plugin-apt-23.1.2.115.1944.jar  
  inflating: examples/plugins/lib/jakarta.inject-api-2.0.0.jar  
  inflating: examples/plugins/lib/ords-plugin-api-23.1.2.115.1944-javadoc.jar  
[oracle@23c ords]$ 

/opt/oracle/ords/binをPATHに追加します。

[oracle@23c ~]$  export PATH=$PATH:/opt/oracle/ords/bin

ordsのインストールを開始します。

[oracle@23c ords]$ ords install
2023-05-15T14:01:16.192Z INFO        Your configuration folder /opt/oracle/ords is located in ORDS product folder.  Oracle recommends to use a different configuration folder.

ORDS: Release 23.1 Production on Mon May 15 14:01:16 2023

Copyright (c) 2010, 2023, Oracle.

Configuration:
  /opt/oracle/ords/

The configuration folder /opt/oracle/ords does not contain any configuration files.

Oracle REST Data Services - Interactive Install

インストール・タイプには2を指定します。


  Enter a number to select the type of installation
    [1] Install or upgrade ORDS in the database only
    [2] Create or update a database pool and install/upgrade ORDS in the database
    [3] Create or update a database pool only
  Choose [2]: 2

データベースの接続タイプは1を指定します。

  Enter a number to select the database connection type to use
    [1] Basic (host name, port, service name)
    [2] TNS (TNS alias, TNS directory)
    [3] Custom database URL
  Choose [1]: 1

ホスト名はlocalhost、ポートは1521、サービス名はfreepdb1を指定します。

  Enter the database host name [localhost]: 
  Enter the database listen port [1521]: 
  Enter the database service name [orcl]: freepdb1

管理者ユーザ名にはsys、パスワードにはsysユーザのパスワードを入力します。

  Provide database user name with administrator privileges.
  Enter the administrator username: sys
  Enter the database password for SYS AS SYSDBA: 

デフォルト・テーブルスペースはSYSAUX、一時表領域はTEMPを指定します。
(いずれもデフォルト)

Connecting to database user: SYS AS SYSDBA url: jdbc:oracle:thin:@//localhost:1521/freepdb1

Retrieving information.
  Enter the default tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [SYSAUX]: 
  Enter the temporary tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [TEMP]: 

有効にする機能は1を選択します。

  Enter a number to select additional feature(s) to enable:
    [1] Database Actions  (Enables all features)
    [2] REST Enabled SQL and Database API
    [3] REST Enabled SQL
    [4] Database API
    [5] None
  Choose [1]: 

2を入力して、設定のみを行います。

  Enter a number to configure and start ORDS in standalone mode
    [1] Configure and start ORDS in standalone mode
    [2] Skip
  Choose [1]:2

しばらく待つと、ORDSのインストールが完了します。

<略>
INFO: 14:09:04 Validating objects for Oracle REST Data Services.
VALIDATION: 14:09:04 Starting validation for schema: ORDS_METADATA
VALIDATION: 14:09:04 Validating objects
VALIDATION: 14:09:05 Validating roles granted to ORDS_METADATA and
ORDS_PUBLIC_USER
VALIDATION: 14:09:05 Validating ORDS Public Synonyms
VALIDATION: 14:09:05 Total objects: 328, invalid objects: 0, missing objects: 0
VALIDATION: 14:09:05     94  INDEX
VALIDATION: 14:09:05      3  LOB
VALIDATION: 14:09:05     23  PACKAGE
VALIDATION: 14:09:05     22  PACKAGE BODY
VALIDATION: 14:09:05      1  PROCEDURE
VALIDATION: 14:09:05     58  PUBLIC SYNONYM
VALIDATION: 14:09:05      1  SEQUENCE
VALIDATION: 14:09:05     32  TABLE
VALIDATION: 14:09:05     32  TRIGGER
VALIDATION: 14:09:05     20  TYPE
VALIDATION: 14:09:05      6  TYPE BODY
VALIDATION: 14:09:05     36  VIEW
VALIDATION: 14:09:05 Validation completed.
INFO: 14:09:05 Completed validation for Oracle REST Data Services.


PL/SQL procedure successfully completed.


Commit complete.

2023-05-15T14:09:05.280Z INFO        Completed installation for Oracle REST Data Services version 23.1.2.r1151944. Elapsed time: 00:00:19.867 

[*** Info: Completed installation for Oracle REST Data Services version 23.1.2.r1151944. Elapsed time: 00:00:19.867 
 ]
[oracle@23c ords]$

ORDSでMongoAPIを使用可能にします。

[oracle@23c ords]$ ords config set mongo.enabled true
2023-05-15T14:09:55.400Z INFO        Your configuration folder /opt/oracle/ords is located in ORDS product folder.  Oracle recommends to use a different configuration folder.

ORDS: Release 23.1 Production on Mon May 15 14:09:55 2023

Copyright (c) 2010, 2023, Oracle.

Configuration:
  /opt/oracle/ords/

The global setting named: mongo.enabled was set to: true
[oracle@23c ords]$

ORDSを起動します。

[oracle@23c ords]$ ords serve &
[1] 9473
[oracle@23c ords]$ 2023-05-15T14:18:06.889Z INFO        Your configuration folder /opt/oracle/ords is located in ORDS product folder.  Oracle recommends to use a different configuration folder.

ORDS: Release 23.1 Production on Mon May 15 14:18:06 2023

Copyright (c) 2010, 2023, Oracle.

Configuration:
  /opt/oracle/ords/

2023-05-15T14:18:07.385Z INFO        Disabling document root because the specified folder does not exist: /opt/oracle/ords/global/doc_root
2023-05-15T14:18:07.671Z INFO        Oracle API for MongoDB listening on port: 27017
2023-05-15T14:18:07.672Z INFO        The Oracle API for MongoDB connection string is: 
         mongodb://[{user}:{password}@]localhost:27017/{user}?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true
2023-05-15T14:18:13.021Z INFO        Configuration properties for: |default|lo|
db.servicename=freepdb1
awt.toolkit=sun.awt.X11.XToolkit
java.specification.version=11
conf.use.wallet=true
sun.cpu.isalist=
sun.jnu.encoding=UTF-8
user.region=US
java.class.path=/opt/oracle/ords/ords.war
java.vm.vendor=Oracle Corporation
sun.arch.data.model=64
nashorn.args=--no-deprecation-warning
mongo.enabled=true
java.vendor.url=https://openjdk.java.net/
resource.templates.enabled=false
user.timezone=UTC
db.port=1521
java.vm.specification.version=11
os.name=Linux
sun.java.launcher=SUN_STANDARD
user.country=US
sun.boot.library.path=/usr/java/jdk-11.0.10/lib
sun.java.command=/opt/oracle/ords/ords.war serve
jdk.debug=release
sun.cpu.endian=little
user.home=/home/oracle
oracle.dbtools.launcher.executable.jar.path=/opt/oracle/ords/ords.war
user.language=en
java.specification.vendor=Oracle Corporation
java.version.date=2021-01-19
database.api.enabled=true
java.home=/usr/java/jdk-11.0.10
db.username=ORDS_PUBLIC_USER
file.separator=/
java.vm.compressedOopsMode=Zero based
line.separator=

restEnabledSql.active=true
java.specification.name=Java Platform API Specification
java.vm.specification.vendor=Oracle Corporation
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
feature.sdw=true
java.awt.headless=true
db.hostname=localhost
db.password=******
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
security.requestValidationFunction=ords_util.authorize_plsql_gateway
java.runtime.version=11.0.10+8-LTS-162
user.name=oracle
path.separator=:
os.version=5.15.0-100.96.32.el8uek.x86_64
java.runtime.name=Java(TM) SE Runtime Environment
file.encoding=UTF-8
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
java.vendor.version=18.9
java.vendor.url.bug=https://bugreport.java.com/bugreport/
java.io.tmpdir=/tmp
oracle.dbtools.cmdline.ShellCommand=ords
java.version=11.0.10
user.dir=/opt/oracle/ords
os.arch=amd64
java.vm.specification.name=Java Virtual Machine Specification
java.awt.printerjob=sun.print.PSPrinterJob
oracle.dbtools.cmdline.home=/opt/oracle/ords
sun.os.patch.level=unknown
java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
java.vendor=Oracle Corporation
java.vm.info=mixed mode
java.vm.version=11.0.10+8-LTS-162
sun.io.unicode.encoding=UnicodeLittle
db.connectionType=basic
java.class.version=55.0

2023-05-15T14:18:13.023Z WARNING     *** jdbc.MaxLimit in configuration |default|lo| is using a value of 20, this setting may not be sized adequately for a production environment ***
2023-05-15T14:18:13.023Z WARNING     *** jdbc.InitialLimit in configuration |default|lo| is using a value of 3, this setting may not be sized adequately for a production environment ***
2023-05-15T14:18:19.246Z INFO        

Mapped local pools from /opt/oracle/ords/databases:
  /ords/                              => default                        => VALID     


2023-05-15T14:18:19.389Z INFO        Oracle REST Data Services initialized
Oracle REST Data Services version : 23.1.2.r1151944
Oracle REST Data Services server info: jetty/10.0.12
Oracle REST Data Services java info: Java HotSpot(TM) 64-Bit Server VM 11.0.10+8-LTS-162


[oracle@23c ords]$ 

4.MongoDB Shellから接続するDBユーザの作成

SQL*PlusからsystemユーザとしてPDBに接続します。

[oracle@23c ~]$ sqlplus system/Demo#1Demo#1@freepdb1

SQL*Plus: Release 23.0.0.0.0 - Developer-Release on Mon May 15 14:22:39 2023
Version 23.2.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Last Successful login time: Mon May 15 2023 12:16:28 +00:00

Connected to:
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0

MongoDB Shellから接続するユーザmongo_testを作成して必要なロールを付与します。

SQL> CREATE USER mongo_test IDENTIFIED BY "MyPassword1!";

User created.

SQL> GRANT SODA_APP, CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE, CREATE JOB, CREATE TRIGGER, UNLIMITED TABLESPACE TO mongo_test;

Grant succeeded.

SQL> 

mongo_testユーザとしてPDBに接続します。

SQL> connect mongo_test/MyPassword1!@freepdb1
Connected.
SQL> 

スキーマに対してORDSを有効化します。

SQL> exec ORDS.ENABLE_SCHEMA;

PL/SQL procedure successfully completed.

SQL>

SQL*Plusを終了します。

SQL> exit
Disconnected from Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0
[oracle@23c ~]$ 

4. MongoDB ShellからOracle Database 23c Freeに接続

MongoDB ShellからOracle Database 23cのmongo_testユーザに接続します。
ORDSが自己署名の証明書を使用しているので、--tlsAllowInvalidCertidicatesオプションを使用します。

[oracle@23c ~]$ mongosh --tlsAllowInvalidCertificates 'mongodb://mongo_test:MyPassword1!@localhost:27017/mongo_test?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true'
Current Mongosh Log ID:	646240af54b0d29c19113685
Connecting to:		mongodb://<credentials>@localhost:27017/mongo_test?authMechanism=PLAIN&authSource=%24external&ssl=true&retryWrites=false&loadBalanced=true&serverSelectionTimeoutMS=2000&tlsAllowInvalidCertificates=true&appName=mongosh+1.8.2
Using MongoDB:		4.2.14
Using Mongosh:		1.8.2

For mongosh info see: https://docs.mongodb.com/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

mongo_test> db.collections.find();

mongo_test>

MongoDB ShellからOracle Database 23cに接続できました。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?