暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

为任何 Oracle 数据库安装 Database API for MongoDB

原创 小小亮 2022-10-17
972

几个月前,我们在自治数据库上发布了适用于 MongoDB 的 Oracle 数据库 API。这允许您切换 MongoDB 应用程序以在 Oracle 的融合数据库中透明地运行。它保留了现有应用程序,但将数据开放给更多用例,例如复杂分析查询的 SQL 访问,以及自由混合和合并 JSON 文档数据与关系、空间和其他数据类型的能力。

如果您在使用自治数据库并错过了之前的公告,您可以在此处( https://blogs.oracle.com/developers/post/oracle-db-api-for-mongodb )阅读相关信息。

随着 Oracle REST 数据服务 (ORDS) 的最新 22.3.0 版本,适用于 MongoDB 的数据库 API 现在可用于本地和云中的非托管 Oracle 数据库。
它可以安装在

  • 任何 Oracle 数据库 21c(或 23c,如果可用)
  • 任何自治数据库,包括 Exadata Cloud@Customer 上的 ADB-Shared、ADB-Dedicated 和 ADB,它们都运行 Oracle Database 19c。

这篇博文将引导您完成在 Linux 机器上设置 ORDS 和数据库所需的步骤,并使用标准的 Mongo Shell 工具连接到它。ORDS 是独立于平台的,因此该工具也可以在 Windows 或 Mac 机器上设置,但这里的说明将集中在 Linux(特别是 Oracle Linux 或类似的基于 RedHat 的系统,当我们为远程设置防火墙时)使用权)。

自治数据库的客户可以使用 MongoDB 的数据库 API 配置他们自己的非托管 ORDS 服务。我们将在文章末尾探讨该选项。

先决条件

在开始之前,您应该确保您具备以下条件:

  • Oracle 数据库 21c 或更高版本。主要说明将假设这是一个本地数据库,最后将描述 ADB 云数据库。
  • Java 版本 11 或更高版本。
  • 了解数据库的 TNS 连接详细信息。这可以是服务器/端口/服务名称,也可以是 TNS 别名字符串。
  • 了解具有“AS SYSDBA”级别访问权限的管理用户(通常是 SYS)以及该用户的密码。
  • MongoDB 客户端工具,例如 Mongo Shell 或 Compass 安装在某处以测试 API

脚步

第 1 步:下载

从 http://oracle.com/rest 下载最新的 ORDS 版本确保发布版本至少为 22.3.0。我将它下载到我的下载目录/home/oracle/downloads

第 2 步:创建目录

为 ORDS 本身创建一个目录和一个 config 目录。我选择了/home/oracle/ords/home/oracle/ordsconfig所以我做了:

mkdir /home/oracle/ords
mkdir /home/oracle/ordsconfig

第 3 步:解压缩 ORDS 下载

将下载的文件解压到您创建的 ORDS 目录中

cd /home/oracle/ords
unzip /home/oracle/Downloads/V*.zi

第 4 步:设置环境变量

我们需要将 PATH 变量设置为指向 ords/bin 目录,并设置另一个变量 ORDS_CONFIG 指向我们创建的配置目录:

export PATH=/home/oracle/ords/bin:$PATH
export ORDS_CONFIG=/home/oracle/ordsconfig

您可能希望将它们放在您的启动文件(例如 .bashrc)中,并在命令行上运行它们。不需要设置 ORDS_CONFIG,而是可以在每个ords命令中使用--config <directory> 。

第 5 步:运行 ORDS 安装程序

您只需运行以下命令即可启动 ORDS 安装:

ords install

选择默认选项 2:创建或更新数据库池并在数据库中安装/升级 ORDS。

现在将提示您输入数据库连接详细信息,使用主机名/端口/服务名称、TNS 别名和目录之一或自定义 URL。我选择了选项 1 - 基本(主机名、端口、服务名称)。提供这些后,系统将提示您输入管理员用户(通常为 SYS。您不能在此步骤中使用 SYSTEM 或 PDBADMIN)。

接下来将提示您输入表空间 - 您应该能够接受默认值,除非您特别希望 ORDS 元数据存储在其他位置。

然后系统会提示您提供其他功能。您应该选择默认值:[1] 数据库操作(启用所有功能)。在下一个提示符下,选择 [1] 配置并以独立模式启动 ORDS。

最后,我们可以选择为 HTTP 或 HTTPS 安装 ORDS。要使用 HTTPS,我们将需要一个证书 - 我们可以提供自己的证书或让 ORDS 生成一个。但现在我假设我们将使用 HTTP。系统将提示您输入端口 - 接受默认的 8080,除非您已经在那里运行了一些东西。

ORDS 现在将启动。你会看到很多输出,然后会话可能会挂起。这仅仅是因为 ORDS 服务器正在此会话中运行。我们需要做一些进一步的手动配置,所以使用 CTRL-C 停止服务器。

从命令行安装 ords

第 6 步:配置 ORDS 以启用 MongoDB API

运行以下命令(确保 ORDS_CONFIG 在当前会话中仍然设置):

ords config set mongo.enabled true

第 7 步:重新启动 ORDS

通过运行重新启动 ords:

ords serve

ORDS 现在将在该终端中运行,因此您需要在单独的终端中继续(或在后台启动它)。在输出开始附近,您应该会看到如下内容:

2022-09-15T14:32:43.168Z 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

您应该复制该 URI 以供以后使用。

使用 mongodb api 启动 ords

步骤 8:配置数据库用户

选择或创建数据库用户以使用 MongoDB API 并托管 JSON 集合。用户应具有正常的数据库角色,例如 CONNECT 和 RESOURCE,以及合适的表空间配额。我使用了一个名为 ROGER 的现有数据库用户。我们必须使用该用户(来自 SQL*Plus、SQL Developer、SQLcl 或其他工具)连接到数据库,并调用ORDS.ENABLE_SCHEMA带有参数的过程TRUE例如:

sqlplus roger/password
exec ords.enable_schema(true)
quit

为 ords 配置数据库用户

步骤 9(可选):运行数据库操作

我们可以通过打开 http://localhost:8080/ords/sql-developer 来启动数据库操作(假设浏览器在同一台机器上)。如果您选择 HTTPS 和自签名证书,您可能会从浏览器收到安全警告,您需要将其覆盖。

第 10 步:配置防火墙

ORDS 服务器默认设置在 8080 端口。MongoDB API 侦听器在端口 27017 上运行。如果要从不同的机器连接到其中一个或两个,则需要在 ORDS 机器上配置防火墙以允许端口 8080 和 27017 上的传入连接。执行此操作的方法因Linux 版本,但在 Oracle Linux 或其他 RedHat 类型的发行版上,您应该能够使用这些命令(以 root 身份或使用 sudo):

firewall-cmd --zone public --permanent --add-port 27017/tcp
firewall-cmd --zone public --permanent --add-port 8080/tcp
firewall-cmd --reload

防火墙命令

如果您在 OCI 云虚拟机上运行 ORDS,您还需要为端口 27017 和 8080 添加入口规则(如果出口不受限制,还可能添加出口规则)。您可以在虚拟云网络的安全列表详细信息中找到这些规则被你的虚拟机使用。

第 11 步:运行您最喜欢的 MongoDB 工具或程序!

您现在需要做的就是获取您在上面保存的 URI,并将其修改如下:

  • 如果您要在命令行上使用它(例如,对于 Mongo Shell),请用引号将 URI 括起来。Linux 使用单引号,Windows 使用双引号
  • 将“localhost”更改为运行 ORDS 的机器的 IP 地址或完整机器名称(如果 MongoDB 工具或程序在同一台机器上运行,您可以将其保留为 localhost)
  • 将 [{user}:{password}@] 更改为我们的数据库用户名和密码。保留 @ 符号但删除所有括号。
  • 稍后将 URL 中的 {user} 更改为我们的数据库用户名。

因此,如果我的机器名为 ordshost.example.com,我的数据库用户名是“roger”,数据库密码是“Password1”,那么他在 Mac 机器上的完整 URI 将是:

'mongodb://roger:Password1@ordshost.example.com:27017/roger?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true'

注意:如果您的密码包含某些特殊字符,则需要根据文档中的表格对其进行转义。

每当您想使用 MongoDB 工具或驱动程序连接到 Oracle 数据库时,都可以使用 URI。

一个补充是,如果您通过 HTTP 或通过带有自签名证书的 HTTPS 运行 ORDS,您将需要指定 --tlsAllowInvalidCertificates(或非基于 shell 的工具的等效项)。所以我们对 Mongo Shell 的完整命令是:

mongosh --tlsAllowInvalidCertificates 'mongodb://roger:Password1@ordshost.example.com:27017/roger?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true'

启动连接到 Oracle 数据库的 mongo shell

如果您还没有安装 MongoDB shell,您可以从MongoDB 下载页面 ( https://www.mongodb.com/try/download/shell) 获取它。

第 11 步:迁移您的应用程序

现在您已经展示了可以使用 Mongo Shell 连接到 Oracle 数据库,您可以在应用程序中使用完全相同的连接字符串。只需换掉现有的连接 URL 并将其包含在您的 ORDS/Oracle 数据库中即可。

在自治数据库中使用 ORDS 和用于 MongoDB 的数据库 API

MongoDB 的数据库 API 可针对 ADB-Shared 进行预配置。如果您希望在 Exadata Cloud@Customer 上使用 ADB-Dedicated 或 ADB 运行它,您将需要安装“客户管理”的 ORDS 安装并为 MongoDB API 配置它。事实上,即使是 ADB-Shared 用户也可能希望安装客户管理的 ORDS,因为这样可以更好地控制 ORDS 配置。

该过程与为本地数据库安装略有不同。您应该遵循文档中的说明:在自治数据库上安装和配置客户管理的 ORDS在 7.4 节中,您只需添加额外的配置步骤:


ords --config <configuration_directory> config set mongodb.enable true

原文标题:Installing Database API for MongoDB for any Oracle Database

原文作者:Roger Ford

原文链接:https://blogs.oracle.com/database/post/installing-database-api-for-mongodb-for-any-oracle-database?from_wecom=1

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论