原文地址:Import tnsnames.ora in LDAP directory
原文作者:Casimir Schmid
这篇文章简要介绍了目录命名,展示了如何从 tnsnames.ora 导入到 LDAP 目录。最后,作为替代方案,您将获得一个示例,TNS 连接字符串在 ldif 文件格式中的外观。LDIF 可普遍用于将数据导出和导入到 LDAP 目录。
什么是目录命名?
为了连接到数据库,您要么需要传递数据库连接字符串,要么使用别名来查找字符串。使用别名时,有两种方法可以连接到 Oracle 数据库:
- a、本地命名
在 tnsnames.ora 文件中本地查找数据库连接字符串 当使用应用程序中的本地应用程序配置或 jdbc 字符串“直接”建立连接时,有一种变体:
- b、在 LDAP 目录中远程查找数据库连接字符串的目录命名 LDAP 查找也可以通过 jdbc:
该图总结了所有可能性:
目录命名可以比作 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”:
对 LDAP 服务器进行身份验证后,会显示一个向导,您可以在该向导上选择要添加到 LDAP 目录的别名:
备选方案:使用 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”包含别名值,用于查找连接字符串。