Instale y configure Oracle Internet Directory para resolver nombres de bases de datos

Todos los que han trabajado con este tipo de DBMS conocen el acceso al DBMS de Oracle, que se almacena en el archivo tnsnames.ora.

Los datos se almacenan en el archivo tnsnames.ora en texto plano y se pueden cambiar fácilmente con cualquier editor de texto. Es bueno si no hay muchas entradas en él, pero qué hacer si la organización tiene cientos de bases de datos, cuyo acceso debe proporcionarse desde hosts de usuarios de varios niveles o desde servidores de terminal. Y si en un momento preciso la base de datos se mueve a otro host, u ocurren otros cambios que cambian la configuración de acceso a la base de datos, debe cambiar la configuración de acceso en todas partes.

Hay muchas soluciones para ofrecer, incluyendo redirecciones, alias, etc.

Aquí describiré cómo instalar y configurar un único repositorio para resolver nombres de bases de datos usando el OID de Oracle Internet Directory, y cómo solicitar la resolución de nombres usando el protocolo LDAP. Esto es mucho más conveniente que mantener actualizado el archivo tnsnames.ora en cientos de lugares.

Aquí no se describe la instalación y configuración del DBMS para la base de datos del repositorio de OID, se indican los puntos clave importantes para esta configuración. Puede familiarizarse con la política de licencias de Oracle con respecto a la base de datos RDBMS, Oracle Fusion Middleware y los productos Oracle Internet Directory en el sitio web de la compañía.

Instalación de software


El software se instaló en el sistema operativo Linux (SUSE Linux Enterprise Server 11), para su sistema operativo debe verificar la matriz de compatibilidad en oracle.com.

Para instalar el servidor independiente (ejecutando NodeManager), se tomaron las siguientes distribuciones que estaban vigentes en el momento de la configuración:

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 + Opatch de versiones actuales

Instale el software para el repositorio en el que se almacenarán los esquemas OID

DBMS versión 12.1.0.2 + PSU
DB Cree una base de datos "vacía":
Debe especificar
Codificación AL32UTF8, incluye ORACLE TEXT en la instalación del software
Parámetros de DB:
open_cursors = 800
procesos = 500
Además, era necesario ejecutar el script xaview.sql, que se descubrió en la etapa de verificación de la instalación del OID.
configurar y elevar LISTENER para la base de datos.

Entonces, la base de datos vacía fue creada por uhost-oid1: 1521 / oid1 (en este caso, oid1-SID de la base de datos) y está lista para crear un repositorio en ella.

Configuración de OID


En lo sucesivo, el directorio de inicio de usuario de Oracle es / u / app / oracle
Desempaquete Java y configure la variable JAVA_HOME

unzip jdk-8u171-linux-x64.tar.gz export JAVA_HOME=/u/app/oracle/jdk1.8.0_171 

Desempaquetar OID

 unzip fmw_12.2.1.3.0_oid_linux64_Disk1_1of1.zip 


Resulta que el archivo ./fmw_12.2.1.3.0_oid_linux64.bin

Verificamos que sea ejecutable, si no lo hacemos

 chmod +x 

Lanzamos:

 ./fmw_12.2.1.3.0_oid_linux64.bin 

(El reenvío del servidor X debe configurarse primero), se iniciará el instalador basado en Java.

Lo siguiente se especificó como ORACLE_HOME:

/ u / app / oracle / product / middleware / Oracle_IDM1

En este camino, se instalará el software para middleware oracle fusion (FMW) y Oracle Internet Directory.

En la etapa "tipo de instalación", especifique STANDALONE.



Crear un repositorio (esquemas necesarios en la base de datos)



Creamos esquemas para el repositorio en la base de datos, para esto ejecutamos rcu

 cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/bin/ ./rcu.sh 

En esta etapa, se crean los esquemas ODSSM, ODS y DEV_STB (recuerde la contraseña, será necesaria al configurar los componentes del dominio)

Creamos un dominio en el que el OID funcionará para nosotros (un dominio en términos de FMW)


 cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin ./config.sh 


Creamos el dominio en una carpeta separada del software. Por ejemplo, especifique esto:

/ u / app / oracle / config / domains / oid_domain





Para una conexión a la base de datos, especifique los parámetros de esquemas creados previamente (y contraseñas)
Al instalar, configuramos el inicio de sesión y la contraseña para NodeManager (se usará en el futuro para conectarse a NodeManager e iniciar / detener el OID a través de él)

Iniciar NodeManager


Para iniciar NodeManager, debe generar un archivo con las claves: DemoIdentity.jks. (Si, además de instalar OID, instala actualizaciones, entonces este paso puede no ser necesario)
Generaremos "predeterminado" para que no seamos atormentados con los parámetros de carga del almacén de claves en la configuración del dominio. Funciona con dichos parámetros: esta es la contraseña predeterminada para el repositorio:

 cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin 

realizar

 . setWlstEnv.sh 

(necesariamente con un punto, no funciona de otra manera)
Vaya al directorio donde debe almacenarse el archivo:

 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 

La frase clave DemoIdentityPassPhrase es solo eso, de lo contrario tendrá que editar la configuración del dominio.
Es necesario lidiar con esto, pero primero debe comenzar a trabajar.

 export TNS_ADMIN=/u/app/oracle/config/domains/oid_domain/config/fmwconfig/components/OID/config 

Es necesario configurar el OID en sí mismo, de lo contrario el dominio no podrá conectarse a la base de datos del repositorio (vea el Problema 1 )

 export LD_LIBRARY_PATH=/u/app/oracle/product/middleware/Oracle_IDM1/lib:$LD_LIBRARY_PATH 

necesario para encontrar las bibliotecas correctas y extraerse de la ORACLE_HOME correcta

En todo caso, consulte con ldd dónde buscar:

 ldd /u/app/oracle/product/middleware/Oracle_IDM1/bin/oiddispd 

Debe estar en ORACLE_HOME con el software FMW:

 libclntsh.so.12.1 => /u/app/oracle/product/middleware/Oracle_IDM1/lib/libclntsh.so.12.1 

Errores si esto no es así, vea Problem2

 cd /u/app/oracle/config/domains/oid_domain/bin/ ./setStartupEnv.sh –  .   ./startNodeManager.sh & 

Asegúrese de que NodeManager se esté ejecutando.
Registros y configuración: / u / app / oracle / config / domains / oid_domain / nodemanager

Problema 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 

Solución1 : vaya y genere DemoIdentity.jks como se describió anteriormente

Problema 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: 

Solución2 : configure la variable TNS_ADMIN y verifique que el nombre de usuario / contraseña sea correcto

Configuración primaria de OID


En este punto, las variables deben establecerse.
TNS_ADMIN
LD_LIBRARY_PATH
Se supone que NodeManager ya se está ejecutando.
Inicie la utilidad WLST:

 cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin export MW_HOME=$ORACLE_HOME 

Extraemos las variables necesarias para que funcione la utilidad WLST

 ./setHomeDirs.sh ./setWlstEnv.sh ./wlst.sh 

Además, utilizando la utilidad WLST, nos conectamos a NodeManager. Necesitamos un nombre de usuario y contraseña especificados durante la instalación (especificado para NodeManager, tenemos esta lógica web)

 nmConnect(username='weblogic',password='  NodeManager ',domainName='oid_domain') 

Ejemplo de salida :

 [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. 

Comenzamos la inicialización, durante la cual se crea una instancia con el nombre oid1.
En la línea de abajo:

odsPassword: contraseña para el esquema ODS basado en el repositorio que se configuró durante ./rcu
orcladminPassword: contraseña que se usará como cn = orcladmin para acceder a LDAP
RealmDN - LDAP - esquema a configurar

 oid_setup(orcladminPassword='****',odsPassword='***',realmDN='dc=mycompany,dc=ru') 

Después de la ejecución, se creará un componente (instancia en términos de FMW) con el nombre oid1

Problema 3 :
Inicie sesión /u/app/oracle/config/domains/oid_domain/servers/OID/logs/oid1/oidmon*.log
contiene

 /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 

Solución 3 :
Establecer la variable de entorno
LD_LIBRARY_PATH = / u / app / oracle / product / middleware / Oracle_IDM1 / lib: $ LD_LIBRARY_PATH
reiniciar NodeManager,
ejecuta el componente:

 cd /u/app/oracle/config/domains/oid_domain/bin/ nohup ./startNodeManager.sh & ./startComponent.sh oid1 

Si el componente se creó por este motivo pero no funciona, entonces eliminamos el proceso de oidmon, cambiamos los parámetros de estado del proceso en el 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'; 

Comprobación de conexión:

 ./ldapbind -h localhost -p 3060 ./ldapbind -h localhost -p 3131 -U 1 -D 'cn=orcladmin' -w **** 

Es posible que deba inicializar oid_setup nuevamente
Problema 4 . Al intentar guardar en 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 



Solution4:
Ejecute oid_setup nuevamente
Compruebe la configuración de ldap.ora en el cliente desde el que se inicia Net Manager
DEFAULT_ADMIN_CONTEXT = "dc = mycompany, dc = ru"

Cambiar el parámetro OID (para permitir solicitudes de usuarios anónimos)
Cuando se crea un nombre TNS usando net manager, pero tnsping no funciona.
Crea un archivo:
gato anonymousbind.ldif

 dn: cn=oid1,cn=osdldapd,cn=subconfigsubentry changetype: modify replace: orclAnonymousBindsFlag orclAnonymousBindsFlag: 1 

y modifique los parámetros usando este archivo:

 ldapmodify -D cn=orcladmin -W -p 3131 -h localhost -f anonymousbind.ldif 

Diagnósticos:
tnsping mytest no funciona, un ldapsearch funciona
Comprobación de la disponibilidad de los puertos 3060 y 3131 (para SSL)

así es como funciona (con una contraseña)

 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 es un alias creado previamente.

Configuraciones del cliente


En el lado del cliente, $ ORACLE_HOME / network / admin contiene los archivos:
ldap.ora
sqlnet.ora
tnsnames.ora

El archivo tnsnames.ora contiene alias "locales", como de costumbre, y se usa si no se encuentra un nombre en LDAP.
El archivo sqlnet.ora contiene una descripción del orden de resolución:

sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,LDAP)


La configuración de acceso para el archivo LDAP se establece en 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" 

En la configuración descrita, se utiliza el siguiente orden.

Primero, se ve el archivo tnsnames.ora, si el registro no se encuentra allí, le pedimos a LDAP (si necesita cambiar el orden, cambie el orden en el parámetro NAMES.DIRECTORY_PATH

Lo siguiente es una solicitud al servidor LDAP principal; si no está disponible por algún motivo, vaya al segundo servidor en la lista DIRECTORY_SERVERS

El orden de sondeo en este caso no es importante, el primero es mejor indicar el servidor geográficamente más cercano.

El contexto de administrador predeterminado (LDAP) se utiliza para el contexto predeterminado, a fin de no indicar mycompany.ru cada vez

Por la misma razón, no se recomienda usar un punto en un registro de alias; él lo percibe como un dominio.

Además, diré cómo configurar la replicación entre servidores

Source: https://habr.com/ru/post/es426273/


All Articles