Elastic Oracle 连接器参考

编辑

Elastic 托管连接器参考

编辑
查看 Elastic 托管连接器 参考
可用性和先决条件
编辑

此连接器自 8.12.0 版本起在 Elastic Cloud 中原生可用。要使用此连接器,请满足所有托管连接器要求

创建 Oracle 连接器
编辑

使用 UI

编辑

要创建新的 Oracle 连接器

  1. 在 Kibana UI 中,从主菜单导航到 搜索 → 内容 → 连接器 页面,或使用全局搜索字段
  2. 按照说明创建新的原生 Oracle 连接器。

有关其他操作,请参阅Kibana 中的连接器 UI

使用 API

编辑

您可以使用 Elasticsearch 创建连接器 API 来创建新的原生 Oracle 连接器。

例如

resp = client.connector.put(
    connector_id="my-{service-name-stub}-connector",
    index_name="my-elasticsearch-index",
    name="Content synced from {service-name}",
    service_type="{service-name-stub}",
    is_native=True,
)
print(resp)
const response = await client.connector.put({
  connector_id: "my-{service-name-stub}-connector",
  index_name: "my-elasticsearch-index",
  name: "Content synced from {service-name}",
  service_type: "{service-name-stub}",
  is_native: true,
});
console.log(response);
PUT _connector/my-oracle-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Oracle",
  "service_type": "oracle",
  "is_native": true
}
您还需要为连接器创建 API 密钥以供使用。

用户需要集群权限 manage_api_keymanage_connectorwrite_connector_secrets 才能以编程方式生成 API 密钥。

为连接器创建 API 密钥

  1. 运行以下命令,并在指示的位置替换值。记下响应中的 idencoded 返回值

    resp = client.security.create_api_key(
        name="my-connector-api-key",
        role_descriptors={
            "my-connector-connector-role": {
                "cluster": [
                    "monitor",
                    "manage_connector"
                ],
                "indices": [
                    {
                        "names": [
                            "my-index_name",
                            ".search-acl-filter-my-index_name",
                            ".elastic-connectors*"
                        ],
                        "privileges": [
                            "all"
                        ],
                        "allow_restricted_indices": False
                    }
                ]
            }
        },
    )
    print(resp)
    const response = await client.security.createApiKey({
      name: "my-connector-api-key",
      role_descriptors: {
        "my-connector-connector-role": {
          cluster: ["monitor", "manage_connector"],
          indices: [
            {
              names: [
                "my-index_name",
                ".search-acl-filter-my-index_name",
                ".elastic-connectors*",
              ],
              privileges: ["all"],
              allow_restricted_indices: false,
            },
          ],
        },
      },
    });
    console.log(response);
    POST /_security/api_key
    {
      "name": "my-connector-api-key",
      "role_descriptors": {
        "my-connector-connector-role": {
          "cluster": [
            "monitor",
            "manage_connector"
          ],
          "indices": [
            {
              "names": [
                "my-index_name",
                ".search-acl-filter-my-index_name",
                ".elastic-connectors*"
              ],
              "privileges": [
                "all"
              ],
              "allow_restricted_indices": false
            }
          ]
        }
      }
    }
  2. 使用 encoded 值存储连接器密钥,并记下此响应中的 id 返回值

    resp = client.connector.secret_post(
        body={
            "value": "encoded_api_key"
        },
    )
    print(resp)
    const response = await client.connector.secretPost({
      body: {
        value: "encoded_api_key",
      },
    });
    console.log(response);
    POST _connector/_secret
    {
      "value": "encoded_api_key"
    }
  3. 使用 API 密钥 id 和连接器密钥 id 更新连接器

    resp = client.connector.update_api_key_id(
        connector_id="my_connector_id>",
        api_key_id="API key_id",
        api_key_secret_id="secret_id",
    )
    print(resp)
    const response = await client.connector.updateApiKeyId({
      connector_id: "my_connector_id>",
      api_key_id: "API key_id",
      api_key_secret_id: "secret_id",
    });
    console.log(response);
    PUT /_connector/my_connector_id>/_api_key_id
    {
      "api_key_id": "API key_id",
      "api_key_secret_id": "secret_id"
    }

有关所有可用连接器 API 的详细信息,请参阅Elasticsearch API 文档

用法
编辑

要将此连接器用作托管连接器,请参阅Elastic 托管连接器

数据库用户需要 CONNECTDBA 权限,并且必须是要索引的表的所有者。

安全连接
编辑

要设置安全连接,必须在运行连接器的系统上安装 Oracle 服务。

请按照以下步骤操作

  1. oracle_home 参数设置为您的 Oracle 主目录。如果配置文件不在默认位置,请设置 wallet_configuration_path 参数。
  2. 创建一个目录来存储钱包。

    $ mkdir $ORACLE_HOME/ssl_wallet
  3. $ORACLE_HOME/network/admin 创建一个名为 sqlnet.ora 的文件,并添加以下内容

    WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = $ORACLE_HOME/ssl_wallet)))
    SSL_CLIENT_AUTHENTICATION = FALSE
    SSL_VERSION = 1.0
    SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
    SSL_SERVER_DN_MATCH = ON
  4. 运行以下命令以创建钱包并附加 SSL 证书。将文件名替换为您自己的文件名。

    $ orapki wallet create -wallet path-to-oracle-home/ssl_wallet -auto_login_only
    $ orapki wallet add -wallet path-to-oracle-home/ssl_wallet -trusted_cert -cert path-to-oracle-home/ssl_wallet/root_ca.pem -auto_login_only

有关更多信息,请参阅此Amazon RDS 文档,了解有关 Oracle SSL 的信息。Oracle 文档:https://docs.oracle.com/database/121/DBSEG/asossl.htm#DBSEG070

有关其他操作,请参阅Kibana 中的连接器 UI

兼容性
编辑

此连接器与 Oracle 数据库版本 18c19c21c 兼容。

配置
编辑

使用以下配置字段来设置连接器

连接源
下拉列表,用于确定 Oracle 源连接:服务名称SID。默认值为 SID。如果连接到可插拔数据库,请选择“服务名称”选项。
SID
数据库的 SID。
服务名称
数据库的服务名称。
主机
Oracle 数据库服务器的 IP 地址或主机名。默认值为 127.0.0.1
端口
Oracle 数据库服务器的端口号。
用户名
用于连接到 Oracle 数据库服务器的用户名。
密码
用于连接到 Oracle 数据库服务器的密码。
以逗号分隔的表列表

以逗号分隔的要监控更改的表列表。默认值为 *。示例

  • TABLE_1, TABLE_2
  • *
文档和同步
编辑
  • 将跳过未定义主键的表。
  • 如果表的系统更改号 (SCN) 值不在 SMON_SCN_TIME 表的 min(SCN)max(SCN) 值之间,则连接器将无法检索最近更新的时间。因此,数据将在每次同步时进行索引。有关更多详细信息,请参阅以下讨论线程
  • 不支持 sys 用户,因为它包含 1000 多个系统表。如果需要使用 sys 用户,请使用 sysdbasysoper 并将其配置为用户名。
  • 不会提取大于 10 MB 的文件。
  • 不会同步权限。所有 索引到 Elastic 部署的文档对于所有有权访问该 Elastic 部署的用户都是可见的。
同步规则
编辑

基本同步规则 对于所有连接器都是相同的,并且默认可用。

在此版本中,此连接器不提供高级同步规则。目前,过滤由提取管道控制。

已知问题
编辑

此连接器没有已知问题。

有关影响所有连接器的任何问题,请参阅已知问题

故障排除
编辑

请参阅故障排除

安全性
编辑

请参阅安全性

框架和源代码
编辑

此连接器是使用Elastic 连接器框架构建的。

此连接器使用通用数据库连接器源代码(分支 8.17,与 Elastic 8.17 兼容)。

查看此数据源特有的其他代码(分支 8.17,与 Elastic 8.17 兼容)。

自托管连接器参考

编辑
查看 自托管连接器 参考
可用性和先决条件
编辑

此连接器作为自托管的 自托管连接器 提供。此自托管连接器与 Elastic 版本 8.6.0+ 兼容。要使用此连接器,请满足所有自托管连接器要求

创建 Oracle 连接器
编辑

使用 UI

编辑

要创建新的 Oracle 连接器

  1. 在 Kibana UI 中,从主菜单导航到 搜索 → 内容 → 连接器 页面,或使用全局搜索字段
  2. 按照说明创建新的 Oracle 自托管连接器。

使用 API

编辑

您可以使用 Elasticsearch 创建连接器 API 来创建新的自托管 Oracle 自托管连接器。

例如

resp = client.connector.put(
    connector_id="my-{service-name-stub}-connector",
    index_name="my-elasticsearch-index",
    name="Content synced from {service-name}",
    service_type="{service-name-stub}",
)
print(resp)
const response = await client.connector.put({
  connector_id: "my-{service-name-stub}-connector",
  index_name: "my-elasticsearch-index",
  name: "Content synced from {service-name}",
  service_type: "{service-name-stub}",
});
console.log(response);
PUT _connector/my-oracle-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Oracle",
  "service_type": "oracle"
}
您还需要为连接器创建 API 密钥以供使用。

用户需要集群权限 manage_api_keymanage_connectorwrite_connector_secrets 才能以编程方式生成 API 密钥。

为连接器创建 API 密钥

  1. 运行以下命令,并在指示的位置替换值。记下响应中的 encoded 返回值

    resp = client.security.create_api_key(
        name="connector_name-connector-api-key",
        role_descriptors={
            "connector_name-connector-role": {
                "cluster": [
                    "monitor",
                    "manage_connector"
                ],
                "indices": [
                    {
                        "names": [
                            "index_name",
                            ".search-acl-filter-index_name",
                            ".elastic-connectors*"
                        ],
                        "privileges": [
                            "all"
                        ],
                        "allow_restricted_indices": False
                    }
                ]
            }
        },
    )
    print(resp)
    const response = await client.security.createApiKey({
      name: "connector_name-connector-api-key",
      role_descriptors: {
        "connector_name-connector-role": {
          cluster: ["monitor", "manage_connector"],
          indices: [
            {
              names: [
                "index_name",
                ".search-acl-filter-index_name",
                ".elastic-connectors*",
              ],
              privileges: ["all"],
              allow_restricted_indices: false,
            },
          ],
        },
      },
    });
    console.log(response);
    POST /_security/api_key
    {
      "name": "connector_name-connector-api-key",
      "role_descriptors": {
        "connector_name-connector-role": {
          "cluster": [
            "monitor",
            "manage_connector"
          ],
          "indices": [
            {
              "names": [
                "index_name",
                ".search-acl-filter-index_name",
                ".elastic-connectors*"
              ],
              "privileges": [
                "all"
              ],
              "allow_restricted_indices": false
            }
          ]
        }
      }
    }
  2. 使用 API 密钥 encoded 值更新您的 config.yml 文件。

有关所有可用连接器 API 的详细信息,请参阅Elasticsearch API 文档

用法
编辑

要将此连接器用作自托管连接器,请参阅自托管连接器

数据库用户需要 CONNECTDBA 权限,并且必须是要索引的表的所有者。

安全连接
编辑

要设置安全连接,必须在运行连接器的系统上安装 Oracle 服务。

请按照以下步骤操作

  1. oracle_home 参数设置为您的 Oracle 主目录。如果配置文件不在默认位置,请设置 wallet_configuration_path 参数。
  2. 创建一个目录来存储钱包。

    $ mkdir $ORACLE_HOME/ssl_wallet
  3. $ORACLE_HOME/network/admin 创建一个名为 sqlnet.ora 的文件,并添加以下内容

    WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = $ORACLE_HOME/ssl_wallet)))
    SSL_CLIENT_AUTHENTICATION = FALSE
    SSL_VERSION = 1.0
    SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
    SSL_SERVER_DN_MATCH = ON
  4. 运行以下命令以创建钱包并附加 SSL 证书。将文件名替换为您自己的文件名。

    $ orapki wallet create -wallet path-to-oracle-home/ssl_wallet -auto_login_only
    $ orapki wallet add -wallet path-to-oracle-home/ssl_wallet -trusted_cert -cert path-to-oracle-home/ssl_wallet/root_ca.pem -auto_login_only

有关更多信息,请参阅此Amazon RDS 文档,了解有关 Oracle SSL 的信息。Oracle 文档:https://docs.oracle.com/database/121/DBSEG/asossl.htm#DBSEG070

有关其他操作,请参阅Kibana 中的连接器 UI

兼容性
编辑

Oracle 数据库版本 18c19c21c 与 Elastic 连接器框架兼容。

配置
编辑

当使用自托管连接器工作流程时,这些字段将使用 连接器源代码中设置的默认配置。请注意,此数据源使用 generic_database.py 连接器源代码。有关此数据源的特定其他代码,请参阅 oracle.py

这些可配置字段将在 Kibana UI 中使用其各自的 标签 进行呈现。连接后,用户将能够在 Kibana 中更新这些值。

使用以下配置字段来设置连接器

connection_source
确定 Oracle 源:服务名称或 SID。默认值为 SID。如果连接到可插拔数据库,请选择“服务名称”。
sid
数据库的 SID。
service_name
数据库的服务名称。
host
Oracle 数据库服务器的 IP 地址或主机名。默认值为 127.0.0.1
port
Oracle 数据库服务器的端口号。
username
用于连接到 Oracle 数据库服务器的用户名。
password
用于连接到 Oracle 数据库服务器的密码。
tables

以逗号分隔的要监控更改的表列表。默认值为 *。示例

  • TABLE_1, TABLE_2
  • *
oracle_protocol
连接器用于建立连接的协议。默认值为 TCP。对于安全连接,请使用 TCPS
oracle_home
Oracle 主目录的路径,用于在厚模式下运行连接器以进行安全连接。对于不安全的连接,请将此字段保留为空。
wallet_configuration_path
SSL 钱包配置文件的路径。
fetch_size
每次请求获取的行数。默认值为 50
retry_count
在对 Oracle 数据库的请求失败后重试的次数。默认值为 3
使用 Docker 部署
编辑

您可以使用 Docker 将 Oracle 连接器部署为自管理连接器。请按照以下说明进行操作。

步骤 1:下载示例配置文件

下载示例配置文件。您可以手动下载或运行以下命令

curl https://raw.githubusercontent.com/elastic/connectors/main/config.yml.example --output ~/connectors-config/config.yml

如果您的目录名称不同,或者您想使用不同的配置文件名,请记得更新 --output 参数值。

步骤 2:更新自管理连接器的配置文件

更新配置文件,使其包含以下与您的环境匹配的设置

  • elasticsearch.host
  • elasticsearch.api_key
  • connectors

如果您要针对 Docker 化的 Elasticsearch 和 Kibana 版本运行连接器服务,则您的配置文件将如下所示

# When connecting to your cloud deployment you should edit the host value
elasticsearch.host: http://host.docker.internal:9200
elasticsearch.api_key: <ELASTICSEARCH_API_KEY>

connectors:
  -
    connector_id: <CONNECTOR_ID_FROM_KIBANA>
    service_type: oracle
    api_key: <CONNECTOR_API_KEY_FROM_KIBANA> # Optional. If not provided, the connector will use the elasticsearch.api_key instead

建议使用 elasticsearch.api_key 作为身份验证方法。但是,您也可以使用 elasticsearch.usernameelasticsearch.password 来对您的 Elasticsearch 实例进行身份验证。

注意:您可以通过简单地取消注释配置文件中的特定设置并修改其值来更改其他默认配置。

步骤 3:运行 Docker 镜像

使用以下命令运行带有连接器服务的 Docker 镜像

docker run \
-v ~/connectors-config:/config \
--network "elastic" \
--tty \
--rm \
docker.elastic.co/enterprise-search/elastic-connectors:8.17.0.0 \
/app/bin/elastic-ingest \
-c /config/config.yml

有关更多详细信息,请参阅 elastic/connectors 存储库中的 DOCKER.md

官方注册表中查找所有可用的 Docker 镜像。

我们还提供使用 Docker Compose 的快速启动自管理选项,因此您可以一次启动所有必需的服务:Elasticsearch、Kibana 和连接器服务。有关更多信息,请参阅 elastic/connectors 存储库中的 README

文档和同步
编辑
  • 将跳过未定义主键的表。
  • 如果表的系统更改号 (SCN) 值不在 SMON_SCN_TIME 表的 min(SCN)max(SCN) 值之间,则连接器将无法检索最近更新的时间。因此,数据将在每次同步时进行索引。有关更多详细信息,请参阅以下讨论线程
  • 不支持 sys 用户,因为它包含 1000 多个系统表。如果需要使用 sys 用户,请使用 sysdbasysoper 并将其配置为用户名。
  • 不会提取大于 10 MB 的文件。
  • 不会同步权限。所有 索引到 Elastic 部署的文档对于所有有权访问该 Elastic 部署的用户都是可见的。
同步规则
编辑

基本同步规则 对于所有连接器都是相同的,并且默认可用。

在此版本中,此连接器不提供高级同步规则。目前,过滤由提取管道控制。

自管理连接器操作
编辑
端到端测试
编辑

连接器框架使操作员能够针对实际数据源运行功能测试。有关更多详细信息,请参阅 连接器测试

要执行 Oracle 连接器的功能测试,请运行以下命令

make ftest NAME=oracle

默认情况下,这将使用中等大小的数据集。要加快测试速度,请添加 DATA_SIZE=small 参数

make ftest NAME=oracle DATA_SIZE=small
已知问题
编辑

此连接器没有已知问题。

有关影响所有连接器的任何问题,请参阅已知问题

故障排除
编辑

请参阅故障排除

安全性
编辑

请参阅安全性

框架和源代码
编辑

此连接器是使用Elastic 连接器框架构建的。

此连接器使用通用数据库连接器源代码(分支 8.17,与 Elastic 8.17 兼容)。

查看此数据源特有的其他代码(分支 8.17,与 Elastic 8.17 兼容)。