Oracle Internet Directory(OID)

http://blog.itpub.net/678020/viewspace-1044091/

Oracle Internet Directory (OID) 是 Oracle 用来集中存储和管理网络服务名称的解决方案。Oracle Internet Directory 10g 是一个轻型目录访问协议 (LDAP) v3 目录服务的实施,用于查询和修改任何类似目录的实体,如人员、机构、打印机或数据库服务名称。OID 是 Oracle 身份管理 10g (10.1.4.0.1) 的一个组件,作为专门的层次数据库,它适于存储很少改动的读密集型条目。它集 Oracle 10g 数据库的可伸缩性、性能和可用性与 LDAP 目录服务的可扩展性和灵活性于一体,充分发挥了二者所长。

OID 有多种用途。数据库服务名称解析只是其众多特性之一。本文旨在让您熟悉如何将 OID 作为在 Red Hat Enterprise Linux 4 (RHEL 4) 上存储 Oracle 的网络服务名称的集中信息库来进行设置、配置和使用。此外,我还将演示如何使用基于 LDAP 的双向复制来复制 OID,以消除单点故障。基于 LDAP 的双向复制将在提供方副本和使用方副本之间传播更改。

概述

本指南分为以下步骤:

  1. 简介
  2. 安装 OID 提供方副本节点
  3. 安装 OID 使用方副本节点
  4. 创建 LDAP 用户
  5. 在提供方节点上创建服务名称
  6. 配置客户端
  7. 测试 OID 故障切换功能
  8. 结论

下面是对 OID 数据库环境的概述:

[@more@]
主机名数据库名AS 实例名数据库角色

oidsrv1

asdb1

infra1

提供方副本

oidsrv2

asdb2

infra2

使用方副本

简介

Oracle 网络服务名称分层存储在倒置的类似树的结构中,该结构称为目录信息树 (DIT)。每个服务标识符和连接描述符都是该树的条目。

服务名在 OID 中由识别名称 (DN) 唯一识别。例如,服务名 nydb 的 DN 条目是

dn:cn=nydb, cn=OracleContext, dc=mycorpdomain, dc=com 

在上面 nydb 的 DN 条目中,树的根目录或基本目录 DN 是 dc=com,该目录下包括 dc=mycorpdomain、cn=OracleContext 以及 cn=nydb。连接描述符信息位于 cn=nydb 之下,包含了该服务的网络位置。

cn=OracleContext 是一个特殊的条目,用于与 Oracle 网络服务相关的条目以支持目录命名。所有 Oracle 网络服务均位于这个特殊条目下。

以下是本指南中将用到的一些属性:

属性说明

cn

常用名称

dc

域组件

sn

姓氏

userpassword

目录用户口令

安装 OID 提供方副本节点

在提供方节点 oidsrv1 上安装 Oracle 身份管理软件。安装程序将安装二进制文件和预先配置的 OID 数据库,然后启动 OID 进程。

编辑 Oracle 用户环境文件

[oracle@oidsrv1 ~]$ more .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
.~/.bashrc
fi

export PATH=$PATH:$HOME/bin
export ORACLE_SID=asdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/as10g
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
umask 022

创建文件系统目录结构

[oracle@oidsrv1 ~]$ mkdir -p $ORACLE_HOME
[oracle@oidsrv1 ~]$ mkdir -p /u01/app/oracle/admin
[oracle@oidsrv1 ~]$ mkdir -p /u01/oradata

安装 Oracle 身份管理软件

从 Oracle 技术网 (OTN) 上下载 OID 软件

[oracle@oidsrv1 ~]$ ../.bash_profile 
[oracle@oidsrv1 ~]$ /staging/as10g/Disk1/runInstaller
  1. Welcome:单击 Next
  2. 指定文件位置: 
    a. 名称:oracleas1
    b. 路径:/u01/app/oracle/product/as10g
  3. 选择要安装的产品: 
    a. 选择 Oracle Application Server Infrastructure 10g
  4. 选择安装类型: 
    a. 选择 Identity Management and Metadata Repository
  5. 执行特定产品前提条件检查: 
    a. 所有检查均通过后,才可继续下一步。
  6. 确认安装前要求: 
    a. 选择 Root Privileges
  7. 选择配置选项: 
    a. 选择 Oracle Internet Directory。 
    b. 选择 Oracle Application Server Single Sign-On。 
    c. 选择 Oracle Application Server Delegated Administration Service。 
    d. 选择 Oracle Directory Integration Platform
  8. 指定端口配置选项: 
    a. 选择 Automatic
  9. 指定 Oracle Internet Directory 中的命名空间: 
    a. 选择 Suggested Namespace:dc=mycorpdomain, dc=com
  10. 指定数据库配置选项: 
    a. 全局数据库名:asdb1.mycorpdomain.com
    b. SID:asdb1 
    c. 选择数据库字符集:Unicode standard UTF-8 AL32UTF8。 
    d. 指定数据库文件位置:/u01/oradata/
  11. 指定数据库模式口令: 
    a. 选择 Use the same password for all the accounts。 
    b. 输入口令:oracle 
    c. 确认口令:oracle
  12. 指定实例名和 ias_admin 口令:a. 实例名:infra1 
    b. ias_admin 口令:ias_admin1 
    c. 确认口令:ias_admin1
  13. Summary:单击 Install
  14. 以 root 用户的身份在另一个窗口中执行 /u01/app/oracle/product/as10g/root.sh 脚本。
  15. 设置权限:当 root.sh 脚本在节点上运行后,单击 OK
  16. 安装结束:单击 Exit

OID 进程

进程 说明

oidmon

OID 监视进程

oidldapd

LDAP 服务器/调度程序

oidrepld

Oracle 目录复制服务器

odisrv

Oracle 目录集成服务器

 [oracle@oidsrv1 ~]$ ps -ef | grep oidmon | grep -v grep
oracle 10786 1 0 09:03 ?00:00:00 /u01/app/oracle/product/as10g/bin/oidmon
connect=asdb1 -opmnuid 1287913475 start

[oracle@oidsrv1 ~]$ ps -ef | grep oidldapd | grep -v grep
oracle 10792 1 0 09:03 ?00:00:00 /u01/app/oracle/product/as10g/bin/oidldapd
connect=asdb1 -p 389 -i 1 -conf 0 -sport 636 -sslenable 2 key=706903885
oracle 10796 1 0 09:03 ?00:00:24 oidldapd
connect=asdb1 control=10792 dispatcher=1 worker=2 debug=33554432 configset=0 instance=1 key=706903885 host=oidsrv1.mycorpdomain.com trcdimension=511 logchange=TRU

[oracle@oidsrv1 ~]$ ps -ef | grep odisrv | grep -v grep
oracle 10892 1 0 09:04 ?00:00:00 /bin/sh /u01/app/oracle/product/as10g/bin/odisrv instance=1 configset=0 port=636 sslauth=1 host=oidsrv1.mycorpdomain.com

[oracle@oidsrv1 ~]$ ps -ef | grep oidrepld | grep -v grep
[oracle@oidsrv1 ~]$
在 oidsrv2 上安装了副本之后,我们将在 oidsrv1 上手动启动复制服务器。

验证 OID 连通性

验证您可以使用环境中适当的 LDAP 端口绑定到 OID。端口号位于 /u01/app/oracle/product/as10g/install/portlist.ini 中。本指南中使用的端口是 389(非 SSL)和 636 (SSL)。

[oracle@oidsrv1 ~]$ $ORACLE_HOME/bin/ldapbind -p 389 -h oidsrv1 -D cn=orcladmin -w ias_admin1
bind successful

安装 OID 使用方副本节点

OID 在服务名称解析中发挥了重要作用。为了确保 OID 的高可用性,需要安装一个使用方副本节点以便在提供方副本节点不可用时仍能继续提供服务。

在副本节点 oidsrv2 上安装 OID 软件。安装程序将安装二进制文件和预先配置的 OID 数据库,启动 OID 进程,并将提供方 OID 复制到使用方 OID。

编辑 Oracle 用户环境文件

[oracle@oidsrv2 ~]$ more .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
.~/.bashrc
fi

export PATH=$PATH:$HOME/bin
export ORACLE_SID=asdb2
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/as10g
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
umask 022

创建文件系统目录结构

[oracle@oidsrv2 ~]$ mkdir -p $ORACLE_HOME
[oracle@oidsrv2 ~]$ mkdir -p /u01/app/oracle/admin
[oracle@oidsrv2 ~]$ mkdir -p /u01/oradata

安装 OID 软件

从 oidsrv1 复制之前使用的 OID 软件。

[oracle@oidsrv2 ~]$ ../.bash_profile 
[oracle@oidsrv2 ~]$ /staging/as10g/Disk1/runInstaller
  1. Welcome:单击 Next
  2. 指定文件位置: 
    a. 名称:oracleas1 
    b. 路径:/u01/app/oracle/product/as10g
  3. 选择要安装的产品: 
    a. 选择 Oracle Application Server Infrastructure 10g
  4. 选择安装类型: 
    a. 选择 Identity Management and Metadata Repository
  5. 执行特定产品前提条件检查: 
    a. 所有检查均通过后,才可继续下一步。
  6. 确认安装前要求: 
    a. 选择 Root Privileges
  7. 选择配置选项: 
    a. 选择 Oracle Internet Directory
    b. 选择 Oracle Application Server Single Sign-On
    c. 选择 Oracle Application Server Delegated Administration Service
    d. 选择 Oracle Directory Integration Platform
    e. 选择 High Availability and Replication
  8. 指定端口配置选项: 
    a. 选择 Automatic
  9. 选择高可用性或复制选项: 
    a. 选择 Replication
  10. 选择 Oracle Internet Directory 复制模式: 
    a. 选择 Two-way LDAP replication
  11. 指定 Oracle Internet Directory 主节点: 
    a. 主机名:oidsrv1.mycorpdomain.com
    b. 端口: 636
    c. 选择 Use only SSL connections with this Oracle Internet Directory
  12. 指定主 Oracle Internet Directory 登录: 
    a. 用户名:cn=orcladmin
    b. 口令:ias_admin1
  13. 指定 Oracle Internet Directory 中的命名空间: 
    a. 选择 Suggested Namespace:dc=mycorpdomain, dc=com
  14. 指定数据库配置选项: 
    a. 全局数据库名:asdb2.mycorpdomain.com
    b. SID:asdb2
    c. 选择数据库字符集:Unicode standard UTF-8 AL32UTF8
    d. 指定数据库文件位置:/u01/oradata/
  15. 指定数据库模式口令: 
    a. 选择 Use the same password for all the accounts
    b. 输入口令:oracle
    c. 确认口令:oracle
  16. 指定实例名和 ias_admin 口令: 
    a. 实例名:infra2
    b. ias_admin 口令:ias_admin2
    c. 确认口令:ias_admin2
  17. Summary:单击 Install
  18. 以 root 用户的身份在另一个窗口中执行 /u01/app/oracle/product/as10g/root.sh 脚本。
  19. 设置权限:当 root.sh 脚本在节点上运行后,单击 OK
  20. 安装结束:单击 Exit

OID 进程

[oracle@oidsrv2 ~]$ ps -ef | grep oidmon | grep -v grep
oracle 11078 1 0 10:58 ?00:00:00 /u01/app/oracle/product/as10g/bin/oidmon
connect=asdb2 -opmnuid 1745158147 start

[oracle@oidsrv2 ~]$ ps -ef | grep oidldapd | grep -v grep
oracle 11086 1 0 10:58 ?00:00:00 /u01/app/oracle/product/as10g/bin/oidldapd
connect=asdb2 -p 389 -i 1 -conf 0 -sport 636 -sslenable 2 key=726047326
oracle 11090 1 1 10:58 ?00:00:18 oidldapd
connect=asdb2 control=11086 dispatcher=1 worker=2 debug=33554432 configset=0 instance=1 key=726047326 host=oidsrv2.mycorpdomain.com trcdimension=511 logchange=TRU

[oracle@oidsrv2 ~]$ ps -ef | grep oidrepld | grep -v grep
oracle 12995 1 0 11:05 ?00:00:01 /u01/app/oracle/product/as10g/bin/oidrepld -h oidsrv2.mycorpdomain.com -p 636 -inst 1

[oracle@oidsrv2 ~]$ ps -ef | grep odisrv | grep -v grep
oracle 11198 1 0 11:00 ?00:00:00 /bin/sh /u01/app/oracle/product/as10g/bin/odisrv instance=1 configset=0 port=636 sslauth=1 host=oidsrv2.mycorpdomain.com

在提供方节点上手动启动复制进程

[oracle@oidsrv1 ~]$ oidctl server=oidrepld connect=asdb1 instance=2 flags="-p 636 -h oidsrv1.mycorpdomain.com" start
NLS_LANG not set in environment
Setting NLS_LANG to AMERICAN_AMERICA.AL32UTF8
oidctl:Waiting for oidmon to start OIDREPLD (instance=2)
oidctl:Started OIDREPLD (instance=2) with PID :29716 successfully

[oracle@oidsrv1 ~]$ ps “ef | grep oidrepl | grep -v grep
oracle 29716 1 2 11:35 ?00:00:00 /u01/app/oracle/product/as10g/bin/oidrepld -p 636 -h oidsrv1.mycorpdomain.com -inst 2

验证 OID 连通性

验证您可以使用环境中适当的 LDAP 端口绑定到 OID。端口号位于 /u01/app/oracle/product/as10g/install/portlist.ini 中。本指南中使用的端口是 389(非 SSL)和 636 (SSL)。

[oracle@oidsrv2 ~]$ $ORACLE_HOME/bin/ldapbind -p 389 -h oidsrv2 -D cn=orcladmin -w ias_admin2
bind successful

创建 LDAP 用户

OID 安装将创建一个名为 orcladmin 的默认管理员用户。您应该创建其他用户,从而可以使用 GUI Oracle Directory Manager (oidadmin) 管理工具或命令行实用程序 (ldapadd) 来管理 Oracle 网络服务。创建的每个用户都是 OID 中的一个目录条目。

使用 LDAP 命令行实用程序添加用户很简单。我们将创建两个 LDAP 数据交换格式 (LDIF) 文件:

  1. cruser.ldif — 定义目录用户的结构。
  2. addgrp.ldif — 定义用户的组 (OracleNetAdmins)。

LDIF 文件是标准化的文本文件格式,用于描述目录条目的改动。

cruser.ldif 
dn:cn=vchan,cn=OracleNetAdmins,cn=OracleContext,dc=mycorpdomain,dc=com
userpassword:vchan1 
objectclass:person 
sn:Chan

cruser.ldif 中的第一行是用户的 DN,其余的行指定了属性。对象类 person 描述了 DN 条目并包含一个或多个属性,如用 userpassword 和 sn。sn 是 person 对象类中的必需属性。

addgrp.ldif 
dn:cn=OracleNetAdmins,cn=OracleContext,dc=mycorpdomain,dc=com
changetype:modify 
add:uniquemember 
uniquemember:cn=vchan,cn=OracleNetAdmins,cn=OracleContext,dc=mycorpdomain,dc=com

创建目录用户,并将用户添加到 OracleNetAdmins 组:

[oracle@oidsrv1 ~]$ ldapadd -p 389 -h oidsrv1 -D cn=orcladmin -w ias_admin1 -f /tmp/cruser.ldif
adding new entry cn=vchan,cn=OracleNetAdmins,cn=OracleContext,dc=mycorpdomain,dc=com

[oracle@oidsrv1 ~]$ ldapmodify -p 389 -h oidsrv1 -D cn=orcladmin -w ias_admin1 -f /tmp/addgrp.ldif
modifying entry cn=OracleNetAdmins,cn=OracleContext,dc=mycorpdomain,dc=com

在提供方节点上创建服务名称

在 OID 中使用 Oracle Net Manager (netmgr) 可以轻松创建网络服务名条目。

将服务名导入 OID

tnsnames.ora

DCDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = trout1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dcdb)
)
)

NYDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = trout2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = nydb)
)
)

[oracle@oidsrv1 ~]$ netmgr
  1. 展开 Directory 文件夹。
  2. 展开 Service Naming 文件夹。
  3. Directory 服务器身份验证: 
    a. 用户:cn=vchan,cn=oraclenetadmins,cn=oraclecontext,dc=mycorpdomain,dc=com
    b. 口令:vchan1
  4. 单击 Command
  5. 选择 Directory
  6. 选择 Export Net Service Names
  7. Directory 服务器移植向导:简介:单击 Next
  8. 选择网络服务名: 
    a. 选择 DCDB
    b. 选择 NYDB
  9. 选择目的地上下文: 
    a. 目录命名上下文:<Directory Root>
    b. Oracle 上下文:cn=OracleContext,dc=mycorpdomain,dc=com
  10. Directory 服务器更新:单击 Finish

验证提供方和使用方副本节点中的服务名条目

提供方节点中创建的网络服务名应当自动传播至使用方节点。在提供方和使用方副本节点上登录 Oracle Directory Manager,验证新建的服务名条目。

[oracle@oidsrv2 ~]$ oidadmin


配置客户端

将服务名添加到 OID 中后,需配置客户端以测试服务名解析。

有两个文件需要添加和修改:

  1. sqlnet.ora — 指导客户端使用 OID(而不是 tnsnames.ora)进行名称解析。
  2. ldap.ora — 指定提供方和使用方副本 OID 服务器的主机名和端口号。

sqlnet.ora

NAMES.DIRECTORY_PATH= (LDAP)

ldap.ora

DIRECTORY_SERVERS= (oidsrv1:389:636,oidsrv2:389:636)
DEFAULT_ADMIN_CONTEXT = "dc=mycorpdomain,dc=com"
DIRECTORY_SERVER_TYPE = OID

通过连接到 dcdb 来测试 OID 名称解析:

SQL> connect vchan/vchan@dcdb
Connected.
SQL> select name from v$database;

NAME
---------
DCDB

测试 OID 故障切换功能

如果提供方节点出现故障,则所有请求将自动路由至使用方节点。为了演示故障切换机制,我们将在提供方节点上模拟故障并测试数据库与 nydb 之间的连通性。

SQL> connect sys/oracle@asdb1 as sysdba
Connected.
SQL> select name from v$database;

NAME
---------
ASDB1

SQL> shutdown abort
ORACLE instance shut down.

SQL> connect vchan/vchan@nydb
Connected.
SQL> select name from v$database;

NAME
---------
NYDB

[oracle@grouper ~]$ tnsping nydb

TNS Ping Utility for Linux:Version 10.2.0.1.0 - Production on 24-AUG-2006 18:38:39

Copyright (c) 1997, 2005, Oracle.All rights reserved.

Used parameter files:
/u01/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora

Used LDAP adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=trout2)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=nydb)))
OK (10 msec)

结论

Oracle Internet Directory 易于安装、配置以及使用,是用于存储 Oracle 网络服务名的首选产品。将服务名存储在中央信息库中可以简化名称服务的管理,尤其是在需要处理许多客户端计算机时。一种获取 OID 高可用性的方法是使用基于 LDAP 的复制(Oracle 身份管理的选件之一)同步提供方和使用方之间的更改。有关使用或管理 Oracle Internet Directory 的更全面的信息,请参阅 Oracle Internet Directory 管理员指南 10g(10.1.4.0.1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值