使用这种类型的DBMS的每个人都可以访问对Oracle DBMS的访问,该存储在tnsnames.ora文件中。
数据以纯文本格式存储在
tnsnames.ora文件中,可以使用任何文本编辑器轻松更改。 如果其中没有很多条目,那很好,但是如果组织拥有数百个数据库,该怎么办,必须从各个级别的用户主机或终端服务器提供对数据库的访问。 而且,如果某一时刻数据库已移至另一台主机,或者发生了其他更改,从而更改了对数据库的访问设置,则需要在所有位置更改访问设置。
提供了许多解决方案,包括重定向,别名等。
在这里,我将描述如何安装和配置单个存储库以使用Oracle Internet Directory OID解析数据库名称,以及如何使用LDAP协议申请名称解析。 这比将tnsnames.ora文件保持多达数百个最新位置要方便得多。
OID存储库的数据库的DBMS的安装和配置在此未描述,指示了对该配置重要的关键点。 您可以在公司的网站上熟悉Oracle关于RDBMS数据库,Oracle融合中间件和Oracle Internet Directory产品的许可政策。
软件安装
该软件已安装在Linux OS(SUSE Linux Enterprise Server 11)上,对于您的OS,您需要在oracle.com上检查兼容性列表。
要安装独立服务器(运行NodeManager),采用了以下在安装时最新的发行版:
JAVA:jdk-8u171-linux-x64.tar.gz
OID:fmw_12.2.1.3.0_oid_linux64_Disk1_1of1.zip
RDBMS:12.1.0.2 + PSU +最新版本的补丁
为将存储 OID方案
的存储库安装软件DBMS版本12.1.0.2 + PSU
数据库 创建一个“空”数据库:
必须指定
AL32UTF8编码,软件安装中包含ORACLE TEXT
数据库参数:
open_cursors = 800
流程= 500另外,有必要运行xaview.sql脚本,该脚本是在检查OID安装的阶段发现的。
为数据库配置并提高LISTENER。
因此,空数据库是由uhost-oid1:1521 / oid1(在本例中为数据库的oid1- SID)创建的,并准备在其中创建存储库。
设置OID
下文中,oracle用户主目录为/ u / app / oracle
解压Java并设置变量JAVA_HOME
unzip jdk-8u171-linux-x64.tar.gz export JAVA_HOME=/u/app/oracle/jdk1.8.0_171
解压OID
unzip fmw_12.2.1.3.0_oid_linux64_Disk1_1of1.zip
原来是文件./fmw_12.2.1.3.0_oid_linux64.bin
如果不这样做,我们检查它是否可执行。
chmod +x
我们推出:
./fmw_12.2.1.3.0_oid_linux64.bin
(必须先配置X服务器转发),基于Java的安装程序将启动。
以下内容指定为ORACLE_HOME:
/ u / app / oracle /产品/中间件/ Oracle_IDM1
沿着这条路径,将安装用于oracle融合中间件(FMW)和Oracle Internet Directory的软件。
在“安装类型”阶段,指定STANDALONE。

创建一个存储库(数据库中的必要模式)
我们为数据库中的存储库创建方案,为此,我们运行rcu
cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/bin/ ./rcu.sh
在此阶段,将创建ODSSM,ODS和DEV_STB方案(请记住密码,配置域组件时将需要该密码)
我们创建一个域,OID将在其中为我们工作(以FMW表示的域)
cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin ./config.sh
我们在与软件分开的文件夹中创建域。 例如,指定以下内容:
/ u / app / oracle / config / domains / oid_domain


对于与数据库的连接,请指定先前创建的方案的参数(和密码)
在安装时,我们设置NodeManager的登录名和密码(以后将用于连接到NodeManager并通过它启动/停止OID本身)
启动NodeManager
要启动NodeManager,您需要使用以下密钥生成文件:DemoIdentity.jks。 (如果除了安装OID之外,还安装更新,则可能不需要此步骤)
我们将生成“默认”,这样我们就不会受到在域配置中加载密钥库的参数的折磨。 它可以使用此类参数-这是存储库的默认密码:
cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin
执行
. setWlstEnv.sh
(有必要一点,不能以其他方式起作用)
转到文件应存储的目录:
cd /u/app/oracle/config/domains/oid_domain/security java utils.CertGen -keyfilepass DemoIdentityPassPhrase -certfile democert -keyfile demokey -strength 1024 -noskid java utils.ImportPrivateKey -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase -keyfile demokey -keyfilepass DemoIdentityPassPhrase -certfile democert.pem -keyfile demokey.pem -alias demoidentity
关键字DemoIdentityPassPhrase就是这样,否则,您将不得不编辑域配置。
有必要对此进行处理,但是您必须首先开始工作。
export TNS_ADMIN=/u/app/oracle/config/domains/oid_domain/config/fmwconfig/components/OID/config
必须自己配置OID,否则域将无法连接到存储库数据库(请参阅
Problem1 )
export LD_LIBRARY_PATH=/u/app/oracle/product/middleware/Oracle_IDM1/lib:$LD_LIBRARY_PATH
需要找到正确的库并从正确的ORACLE_HOME中拉出自己
如果有的话,请用ldd检查外观:
ldd /u/app/oracle/product/middleware/Oracle_IDM1/bin/oiddispd
必须在带有FMW软件的ORACLE_HOME上:
libclntsh.so.12.1 => /u/app/oracle/product/middleware/Oracle_IDM1/lib/libclntsh.so.12.1
如果不是这样,
则会出现错误,请参阅
问题2 cd /u/app/oracle/config/domains/oid_domain/bin/ ./setStartupEnv.sh – . ./startNodeManager.sh &
确保NodeManager正在运行。
日志和配置:/ u / app / oracle / config / domains / oid_domain / nodemanager
问题1: Jun 22, 2018 10:27:58 AM MSK Fatal error in NodeManager server weblogic.nodemanager.common.ConfigException: Identity key store file not found: /u/app/oracle/config/domains/oid_domain/security/DemoIdentity.jks
解决方案1 :如上所述,生成DemoIdentity.jks
问题2 :
Jun 28, 2018 12:20:08 PM MSK INFO /u/app/oracle/config/domains/oid_domain>><< password: confirm password: Unable to Connect to Database: Incorrect location for tnsnames.ora (derived from DOMAIN_HOME) or Incorrect TNS Connect string or Invalid Password > <createDbWallet domain: /u/app/oracle/config/domains/oid_domain, oidpasswd output: password: confirm password:
解决方案2 :设置TNS_ADMIN变量并检查用户名/密码是否正确
主要OID配置
此时,应设置变量。
TNS_ADMIN
LD_LIBRARY_PATH
假定NodeManager已在运行。
启动WLST实用程序:
cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin export MW_HOME=$ORACLE_HOME
我们提取了WLST实用程序运行所需的变量
./setHomeDirs.sh ./setWlstEnv.sh ./wlst.sh
此外,使用WLST实用程序,我们连接到NodeManager。 我们需要在安装过程中指定的用户名和密码(为NodeManager指定,我们有此weblogic)
nmConnect(username='weblogic',password=' NodeManager ',domainName='oid_domain')
输出示例 :
[13:45][uhost-oid1.oracle.:/u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin]$ ./wlst.sh Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands wls:/offline> nmConnect(username='weblogic',password='*****',domainName='oid_domain') Connecting to Node Manager ... Successfully Connected to Node Manager.
我们开始初始化,在此期间创建名称为oid1的实例。
在下面的行中:
odsPassword-基于./rcu期间设置的存储库的ODS方案的密码
orcladminPassword-将用作cn = orcladmin来访问LDAP的密码
realmDN-LDAP-要配置的方案
oid_setup(orcladminPassword='****',odsPassword='***',realmDN='dc=mycompany,dc=ru')
执行后,将创建名称为oid1的组件(以FMW表示)
问题3 :
记录/u/app/oracle/config/domains/oid_domain/servers/OID/logs/oid1/oidmon*.log
包含
/u/app/oracle/product/middleware/Oracle_IDM1/wlserver/../bin/oiddispd: <b>error while loading shared libraries</b>: libclntshcore.so.12.1: cannot open shared object file: No such file or directory
解决方案3 :
设置环境变量
LD_LIBRARY_PATH = / u /应用程序/ oracle /产品/中间件/ Oracle_IDM1 / lib:$ LD_LIBRARY_PATH
重新启动NodeManager,
运行组件:
cd /u/app/oracle/config/domains/oid_domain/bin/ nohup ./startNodeManager.sh & ./startComponent.sh oid1
如果出于这个原因创建了组件,但是该组件不起作用,那么我们将终止oidmon进程,并在DBMS中更改进程状态参数:
ps –ef|grep oidmon kill oidmon
sqlplus / as sysdba update ods.ods_process_status set pid=0 where compname='oid1'; update ods.ods_process_status set state=4 where compname='oid1';
连接检查:
./ldapbind -h localhost -p 3060 ./ldapbind -h localhost -p 3131 -U 1 -D 'cn=orcladmin' -w ****
您可能需要再次初始化oid_setup
问题4 。 尝试保存到NetManager时:
oracle.net.common.dataStore.DataStoreException: error writing ServiceAlias to: LDAPDataStore [svr: uhost-oid1.mycompany.ru:3060:3131, type: OID, ctxt: cn=OracleContext,dc=mycompany,dc=ru, home: C:\oracle\product\12.1.0\client_1] original exception message: TNS-04409: caused by: oracle.net.config.DirectoryServiceException: TNS-04405: caused by: oracle.net.ldap.NNFLException original stack trace: oracle.net.config.ServiceAliasException: TNS-04409: caused by: oracle.net.config.DirectoryServiceException: TNS-04405: caused by: oracle.net.ldap.NNFLException oracle.net.config.DirectoryServiceException: TNS-04405: caused by: oracle.net.ldap.NNFLException oracle.net.ldap.NNFLException
解决方案4:再次运行oid_setup
在启动Net Manager的客户端上检查ldap.ora设置
DEFAULT_ADMIN_CONTEXT =“ dc =我的公司,dc = ru”
更改OID参数(以允许来自匿名用户的请求)使用网络管理器创建TNS名称时,但tnsping不起作用。
创建一个文件:
猫anonymousbind.ldif
dn: cn=oid1,cn=osdldapd,cn=subconfigsubentry changetype: modify replace: orclAnonymousBindsFlag orclAnonymousBindsFlag: 1
并使用此文件修改参数:
ldapmodify -D cn=orcladmin -W -p 3131 -h localhost -f anonymousbind.ldif
诊断:tnsping mytest不起作用,ldapsearch有效
检查端口3060和3131的可用性(对于SSL)
这就是它的工作方式(使用密码)
ldapsearch -h uhost-oid1.mycompany.ru -p 3060 -D "cn=orcladmin" -w password_hear -b "cn=mytest,cn=OracleContext,dc=mycompany,dc=ru" -s base "objectclass=*"
mytest是先前创建的别名。
客户端设置
在客户端,$ ORACLE_HOME / network / admin包含以下文件:
ldap.ora
sqlnet.ora
tnsnames.ora
tnsnames.ora文件照常包含“本地”别名,如果在LDAP中找不到名称,则使用该文件。
sqlnet.ora文件包含解析程序顺序的描述:
sqlnet.oraSQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,LDAP)
LDAP文件的访问设置在ldap.ora中设置
ldap.ora DIRECTORY_SERVERS = (uhost-oid1.mycompany.ru:3060:3131,rephost-oid1.mycompany.ru:3060:3131) DIRECTORY_SERVER_TYPE = OID DEFAULT_ADMIN_CONTEXT = "dc=mycompany,dc=ru"
在描述的配置中,使用以下顺序。
首先,查看tnsnames.ora文件,如果在该位置未找到记录,则询问LDAP(如果需要更改顺序,请在NAMES.DIRECTORY_PATH参数中更改顺序
接下来是对主LDAP服务器的请求,如果由于某种原因该请求不可用,请转到DIRECTORY_SERVERS列表中的第二个服务器
在这种情况下,轮询顺序并不重要,首先要指出地理位置最近的服务器。
默认管理上下文(LDAP)用于默认上下文,以免每次都指示mycompany.ru
出于相同的原因,不建议在别名记录中使用点;他将其视为一个域。
此外,我将告诉您如何配置服务器之间的复制