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

[译] Oracle数据库中在 LDAP 目录中导入 tnsnames.ora

原创 Bigbig 2022-06-27
1076

原文地址:Import tnsnames.ora in LDAP directory
原文作者:Casimir Schmid

这篇文章简要介绍了目录命名,展示了如何从 tnsnames.ora 导入到 LDAP 目录。最后,作为替代方案,您将获得一个示例,TNS 连接字符串在 ldif 文件格式中的外观。LDIF 可普遍用于将数据导出和导入到 LDAP 目录。

什么是目录命名?

为了连接到数据库,您要么需要传递数据库连接字符串,要么使用别名来查找字符串。使用别名时,有两种方法可以连接到 Oracle 数据库:

  • a、本地命名
    在 tnsnames.ora 文件中本地查找数据库连接字符串 当使用应用程序中的本地应用程序配置或 jdbc 字符串“直接”建立连接时,有一种变体:

image.png

image.png

  • b、在 LDAP 目录中远程查找数据库连接字符串的目录命名 LDAP 查找也可以通过 jdbc:
    image.png
    image.png

该图总结了所有可能性:
image.png

目录命名可以比作 DNS,所有别名都在一个中央 LDAP 服务器中(就像在 DNS 服务器中)。
如果进行本地命名,则使用可以与 /etc/hosts 进行比较的本地配置文件。
无论是 tnsnames.ora 文件还是使用的 LDAP 服务器的数据结构都是一个非常简单的 key-value-store,它实际上是 =

目录命名比本地命名有一些好处:

在一个中央目录中只有一个“真相”来源。更容易管理。您不必将 tnsnames.ora 文件分发给客户端。
建议运行 LDAP 高度可用,例如配置多个 LDAP 服务器之间的复制以及让负载平衡器分配流量。
在每个客户端上,所有连接都可用。从远程访问数据库时很有用,例如远程 PDB 克隆、使用数据库链接、Data Guard Observer、进行远程 RMAN 备份和恢复/恢复或克隆等。

从 tnsnames.ora 批量导入到 LDAP 服务器

在以下示例中,我们使用 Oracle Unified Directory 作为 LDAP 目录。您可以自由选择用于目录命名的其他 LDAP 目录:OpenLDAP 或 Active Directory 仅举几例。
为目录命名设置 OUD 后,您可能希望使用本地 tnsnames.ora 文件中的内容进行初始加载。在环境变量 TNS_ADMIN 指向的目录中,确保存在以下三个文件:

sqlnet.ora
包含有关 SQL*net 配置的信息,重要参数有:

NAMES.DEFAULT_DOMAIN = company.com # default domain if domains are used<font></font>
NAMES.DIRECTORY_PATH = (LDAP) # Where to lookup aliass, multi values possible, for example (TNSNAMES, LDAP) to first look locally, then on LDAP<font></font>
复制

ldap.ora
包含有关您的 LDAP 目录的信息,重要的参数是:

DIRECTORY_SERVERS     = (loadbalancer.company.com:1389) # Adress of the LDAP server<font></font>
DEFAULT_ADMIN_CONTEXT = "dc=company,dc=com" # Context where alias entries are stored<font></font>
DIRECTORY_SERVER_TYPE = OID # Type of LDAP server<font></font>
复制

tnsnames.ora
包含别名和连接字符串,例如:

TESTDB = (DESCRIPTION=<font></font>
           (ADDRESS_LIST=<font></font>
              (ADDRESS=<font></font>
                  (PROTOCOL=TCP)<font></font>
                  (Host=testdb.company.com)<font></font>
                  (Port=1521)<font></font>
              )<font></font>
           )<font></font>
           (CONNECT_DATA=<font></font>
              (SERVICE_NAME=testdb.company.com)<font></font>
           )<font></font>
        )<font></font>

复制

在您想要进行批量导入的客户端上,确保安装了 Oracle 客户端或 RDBMS 软件。在这里,我在 Windows 上使用 Oracle Client 12.2 64Bit。这是一个相当旧的版本,但它符合我们的目的。在 Oracle 客户端或 RDBMS 软件中,都有一个名为“Net Manager”的工具。通过读取上面提到的配置文件,它能够连接到远程 LDAP 服务器和本地 tnsnames.ora 文件。

启动网络管理器。在菜单中,选择“COMMAND – DIRECTORY – EXPORT NET SERVICE NAMES”:
image.png

对 LDAP 服务器进行身份验证后,会显示一个向导,您可以在该向导上选择要添加到 LDAP 目录的别名:
image.png
image.png

备选方案:使用 LDIF 导出和导入 LDAP 数据

如果要在 LDAP 目录之间传输数据,LDIF 文件格式是最简单的。也可以创建包含 TNS 数据的 LDIF 文件。请参阅以下示例 LDIF 记录以获取别名“TESTDB”:

dn: CN=TESTDB,cn=OracleContext,dc=company,dc=com
orclNetDescString: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=testdb.company.com)(Port=1521)))(CONNECT_DATA=(SERVICE_NAME=testdb.company.com)))
objectClass: top
objectClass: orclNetService
CN: TESTDB

复制

别名存储在 LDAP 上下文“cn=OracleContext,dc=company,dc=com”中。
“orclNetDescString”包含实际的数据库连接字符串。
“CN”包含别名值,用于查找连接字符串。

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

评论