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 = 500Ademá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.oraSQLNET.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