本記事は OpenLDAP と仲間たち Advent Calendar 2015 の23日目です。
ディレクトリサービスはユーザ認証統合など主に人の情報を管理する用途で使用することが多いと思いますが、一元的に管理できる情報のひとつとして、Oracle Database への接続情報を管理する方法を紹介します。
紹介と言っても、手順は以下のサイトをなぞっただけになりますが、Net Services 関連のマニュアルとあわせて確認したいと思います。
- Oracle Database Name Resolution with OpenLDAP - DBA Tips Archive for Oracle
- Ronny Egners Blog » Storing Oracle database connection strings in OpenLDAP instead of OID
環境
ここでは以下の構成とします。
- OpenLDAPサーバ
- バージョン: openldap-servers-2.3.43-29.el5_11
※cn=configデータベースの扱いが分かっていないので古くてすみません - ホスト名: centos.vbox
- サフィックス: dc=example,dc=com
- バージョン: openldap-servers-2.3.43-29.el5_11
- Oracle Databaseサーバ
- ホスト名: ol64.vbox
- サービス1: pdb
- サービス2: xe
スキーマの追加
冒頭に上げたサイトからスキーマ情報をダウンロードします。
# mkdir -pv /etc/openldap/schema-oid # cd /etc/openldap/schema-oid # wget http://www.idevelopment.info/data/Oracle/DBA_tips/LDAP/resources/OracleDatabaseNameResolutionOpenLDAP/oidbase.schema # wget http://www.idevelopment.info/data/Oracle/DBA_tips/LDAP/resources/OracleDatabaseNameResolutionOpenLDAP/oidnet.schema # wget http://www.idevelopment.info/data/Oracle/DBA_tips/LDAP/resources/OracleDatabaseNameResolutionOpenLDAP/oidrdbms.schema # wget http://www.idevelopment.info/data/Oracle/DBA_tips/LDAP/resources/OracleDatabaseNameResolutionOpenLDAP/alias.schemaslapd.conf にダウンロードしたスキーマ情報を追加します。
include /etc/openldap/schema-oid/oidbase.schema include /etc/openldap/schema-oid/oidnet.schema include /etc/openldap/schema-oid/oidrdbms.schema include /etc/openldap/schema-oid/alias.schema
親エントリの追加
親エントリとなる OracleContext までを以下の LDIF で作成します。
dn: dc=example,dc=com objectClass: dcObject objectClass: organization dc: example o: Example co.,Ltd
dn: cn=OracleContext,dc=example,dc=com objectclass: orclContext cn: OracleContext
Oracle Database 接続情報の追加
これで準備が整いましたので Oracle Database への接続情報を追加します。 Oracle Database への接続は、次のような tnsnames.ora ファイルを使ったローカル・ネーミング・メソッドを使っていることが多いと思います。
pdb = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ol64.vbox)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = pdb) ) ) xe = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ol64.vbox)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = xe) ) )この接続記述子そのものを LDIF として作成します。
dn: cn=pdb,cn=OracleContext,dc=example,dc=com objectclass: top objectclass: orclNetService cn: pdb orclNetDescString: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol64.vbox) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=pdb))) dn: cn=xe,cn=OracleContext,dc=example,dc=com objectclass: top objectclass: orclNetService cn: xe orclNetDescString: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol64.vbox) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xe)))
Oracle クライアント側の設定
tnsnames.ora ファイルと同じ場所(特に変更していなければ $ORACLE_HOME/network/admin)に、Oracle Net の名前解決参照に使用する sqlnet.ora ファイルがありますので(無ければ作成)以下のように ldap を先頭にします。
NAMES.DIRECTORY_PATH= (LDAP, TNSNAMES, EZCONNECT)つぎに接続先 LDAP サーバの情報を格納するファイル ldap.ora を同じ場所に作成します。
DIRECTORY_SERVERS=(centos.vbox:389) DEFAULT_ADMIN_CONTEXT="dc=example,dc=com"
Oracle クライアントからの接続
これで準備は整いました。tnsnames.ora ファイルを削除して接続してみます。
% cd $ORACLE_HOME/network/admin % grep . * ldap.ora:DIRECTORY_SERVERS=(centos.vbox:389) ldap.ora:DEFAULT_ADMIN_CONTEXT="dc=example,dc=com" sqlnet.ora:NAMES.DIRECTORY_PATH= (LDAP, TNSNAMES, EZCONNECT)
% sqlplus scott/tiger@pdb SQL*Plus: Release 11.2.0.4.0 Production on Wed Dec 23 23:38:54 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics and Real Application Testing options SQL> conn scott/tiger@xe Connected. SQL> quit Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productiontnsnames.ora に記述されていない
pdb
, xe
と言う接続識別子でデータベースに接続できました。
おわりに
今回取り上げた方法は正式にサポートされるものではありませんが、ディレクトリサービスて一元管理できる情報の一つとして、Oracle Database の接続情報も格納できると言うことの紹介でした。
Oracle Database への接続は tnsnames.ora ファイルを使用しなくても、簡易接続ネーミングという URL のように記述することもできます。しかし Oracle Net の機能を使用したロードバランスなど使用する場合はまだまだ tnsnames.ora に接続情報を記述することがあると思います。その記述内容を一元管理できれば、クライアント側の接続情報を柔軟に変更させることができます。(ユースケースがパッと浮かびませんが。。。)
プロダクション環境で接続先の一元管理を必要とする場合には Oracle Internet Directory と言う製品を使うことになるかなと思います。
0 件のコメント:
コメントを投稿