Installer et configurer Oracle Internet Directory pour résoudre les noms de base de données

Tous ceux qui ont travaillé avec ce type de SGBD connaissent l'accÚs au SGBD Oracle, qui est stocké dans le fichier tnsnames.ora.

Les donnĂ©es sont stockĂ©es dans le fichier tnsnames.ora en texte brut et peuvent facilement ĂȘtre modifiĂ©es Ă  l'aide de n'importe quel Ă©diteur de texte. C'est bien s'il n'y a pas beaucoup d'entrĂ©es, mais que faire si l'organisation a des centaines de bases de donnĂ©es, dont l'accĂšs doit ĂȘtre fourni par des hĂŽtes d'utilisateurs de diffĂ©rents niveaux ou par des serveurs de terminaux. Et si Ă  un moment prĂ©cis la base de donnĂ©es se dĂ©place vers un autre hĂŽte, ou si d'autres modifications se produisent qui modifient les paramĂštres d'accĂšs Ă  la base de donnĂ©es, vous devez modifier les paramĂštres d'accĂšs partout.

Il existe de nombreuses solutions Ă  proposer, notamment des redirections, des alias, etc.

Ici, je vais décrire comment installer et configurer un référentiel unique pour résoudre les noms de base de données à l'aide de l'OID Oracle Internet Directory et comment demander la résolution de noms à l'aide du protocole LDAP. C'est beaucoup plus pratique que de garder à jour le fichier tnsnames.ora jusqu'à des centaines de lieux.

L'installation et la configuration du SGBD pour la base de données du référentiel OID ne sont pas décrites ici, les points clés importants pour cette configuration sont indiqués. Vous pouvez vous familiariser avec la politique de licence d'Oracle concernant la base de données RDBMS, Oracle Fusion Middleware et les produits Oracle Internet Directory sur le site Web de l'entreprise.

Installation du logiciel


Le logiciel a été installé sur le systÚme d'exploitation Linux (SUSE Linux Enterprise Server 11), pour votre systÚme d'exploitation, vous devez vérifier la matrice de compatibilité sur oracle.com.

Pour installer le serveur autonome (exécutant NodeManager), les distributions suivantes ont été prises qui étaient en cours au moment de l'installation:

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 des versions actuelles

Installez le logiciel du référentiel dans lequel les schémas OID seront stockés

DBMS version 12.1.0.2 + PSU
DB Créez une base de données «vide»:
Doit préciser
Encodage AL32UTF8, inclure ORACLE TEXT dans l'installation du logiciel
ParamĂštres DB:
open_cursors = 800
processus = 500
De plus, il était nécessaire d'exécuter le script xaview.sql, qui a été découvert au stade de la vérification de l'installation de l'OID.
configurer et augmenter LISTENER pour la base de données.

Ainsi, la base de donnĂ©es vide a Ă©tĂ© créée par uhost-oid1: 1521 / oid1 (dans ce cas, oid1-SID de la base de donnĂ©es) et est prĂȘte Ă  y crĂ©er un rĂ©fĂ©rentiel.

Définition de l'OID


Ci-aprÚs, le répertoire de base de l'utilisateur oracle est / u / app / oracle
Décompressez java et définissez la variable JAVA_HOME

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

Déballer l'OID

 unzip fmw_12.2.1.3.0_oid_linux64_Disk1_1of1.zip 


Il s'avĂšre que le fichier ./fmw_12.2.1.3.0_oid_linux64.bin

Nous vérifions qu'il est exécutable, si nous ne le faisons pas

 chmod +x 

Nous lançons:

 ./fmw_12.2.1.3.0_oid_linux64.bin 

(Le transfert X-server doit d'abord ĂȘtre configurĂ©), le programme d'installation basĂ© sur java dĂ©marre.

Ce qui suit a été spécifié comme ORACLE_HOME:

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

Sur ce chemin, le logiciel pour le middleware de fusion Oracle (FMW) et Oracle Internet Directory seront installés.

À l'Ă©tape «type d'installation», spĂ©cifiez AUTONOME.



Créer un référentiel (schémas nécessaires dans la base de données)



Nous créons des schémas pour le référentiel dans la base de données, pour cela nous exécutons rcu

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

À ce stade, les schĂ©mas ODSSM, ODS et DEV_STB sont créés (n'oubliez pas le mot de passe, il sera requis lors de la configuration des composants de domaine)

Nous créons un domaine dans lequel OID fonctionnera pour nous (un domaine en termes de FMW)


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


Nous créons le domaine dans un dossier séparé du logiciel. Par exemple, spécifiez ceci:

/ u / app / oracle / config / domaines / oid_domain





Pour une connexion à la base de données, spécifiez les paramÚtres des schémas (et mots de passe) créés précédemment
Lors de l'installation, nous dĂ©finissons le nom d'utilisateur et le mot de passe pour NodeManager (il sera utilisĂ© Ă  l'avenir pour se connecter Ă  NodeManager et dĂ©marrer / arrĂȘter l'OID lui-mĂȘme via celui-ci)

Lancer NodeManager


Pour dĂ©marrer NodeManager, vous devez gĂ©nĂ©rer un fichier avec les clĂ©s: DemoIdentity.jks. (Si, en plus d'installer OID, vous installez des mises Ă  jour, cette Ă©tape peut ne pas ĂȘtre nĂ©cessaire)
Nous gĂ©nĂ©rerons "par dĂ©faut" afin de ne pas ĂȘtre tourmentĂ© par les paramĂštres de chargement du magasin de clĂ©s dans la configuration du domaine. Il fonctionne avec de tels paramĂštres - c'est le mot de passe par dĂ©faut pour le rĂ©fĂ©rentiel:

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

effectuer

 . setWlstEnv.sh 

(nécessairement avec un point, ne fonctionne pas d'une autre maniÚre)
AccĂ©dez au rĂ©pertoire oĂč le fichier doit ĂȘtre stockĂ©:

 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 phrase clé DemoIdentityPassPhrase est juste cela, sinon vous devrez éditer la configuration du domaine.
Il est nécessaire de faire face à cela, mais vous devez d'abord commencer à travailler.

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

Il est nĂ©cessaire de configurer l'OID lui-mĂȘme, sinon le domaine ne pourra pas se connecter Ă  la base de donnĂ©es du rĂ©fĂ©rentiel (voir ProblĂšme1 )

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

nécessaire pour trouver les bonnes bibliothÚques et se retirer du bon ORACLE_HOME

Si quelque chose, vĂ©rifiez avec ldd oĂč chercher:

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

Doit ĂȘtre sur ORACLE_HOME avec le logiciel FMW:

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

Erreurs si ce n'est pas le cas, voir ProblĂšme2

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

Assurez-vous que NodeManager est en cours d'exécution.
Journaux et configuration: / u / app / oracle / config / domaines / oid_domain / nodemanager

ProblĂšme 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 

Solution 1 : allez générer DemoIdentity.jks comme décrit ci-dessus

ProblĂšme 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: 

Solution2 : définissez la variable TNS_ADMIN et vérifiez que le nom d'utilisateur / mot de passe est correct

Configuration OID principale


À ce stade, les variables doivent ĂȘtre dĂ©finies.
TNS_ADMIN
LD_LIBRARY_PATH
Il est supposé que NodeManager est déjà en cours d'exécution.
Lancez l'utilitaire WLST:

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

Nous extrayons les variables nécessaires au fonctionnement de l'utilitaire WLST

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

De plus, en utilisant l'utilitaire WLST, nous nous connectons à NodeManager. Nous avons besoin d'un nom d'utilisateur et d'un mot de passe spécifiés lors de l'installation (spécifié pour NodeManager, nous avons ce blog)

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

Exemple de sortie :

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

Nous commençons l'initialisation, au cours de laquelle une instance avec le nom oid1 est créée.
Dans la ligne ci-dessous:

odsPassword - mot de passe pour le schéma ODS basé sur le référentiel qui a été défini pendant ./rcu
orcladminPassword - mot de passe qui sera utilisé comme cn = orcladmin pour accéder à LDAP
realmDN - LDAP - schéma à configurer

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

AprÚs exécution, un composant (instance en termes de FMW) avec le nom oid1 sera créé

ProblĂšme 3 :
Journal /u/app/oracle/config/domains/oid_domain/servers/OID/logs/oid1/oidmon*.log
contient

 /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 

Solution 3 :
Définissez la variable d'environnement
LD_LIBRARY_PATH = / u / app / oracle / product / middleware / Oracle_IDM1 / lib: $ LD_LIBRARY_PATH
redémarrez NodeManager,
exécutez le composant:

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

Si le composant a été créé pour cette raison mais ne fonctionne pas, nous supprimons le processus oidmon, modifions les paramÚtres d'état du processus dans le SGBD:

 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'; 

Vérification de la connexion:

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

Vous devrez peut-ĂȘtre rĂ©initialiser oid_setup
ProblĂšme 4 . Lorsque vous essayez d'enregistrer dans 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:
Exécutez à nouveau oid_setup
Vérifiez les paramÚtres ldap.ora sur le client à partir duquel Net Manager démarre
DEFAULT_ADMIN_CONTEXT = "dc = mycompany, dc = ru"

Modifiez le paramĂštre OID (pour autoriser les demandes d'utilisateurs anonymes)
Lorsqu'un nom TNS est créé à l'aide de Net Manager, mais tnsping ne fonctionne pas.
Créez un fichier:
cat anonymousbind.ldif

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

et modifiez les paramĂštres Ă  l'aide de ce fichier:

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

Diagnostics:
tnsping mytest ne fonctionne pas, un ldapsearch fonctionne
Vérification de la disponibilité des ports 3060 et 3131 (pour SSL)

voici comment ça marche (avec un mot de passe)

 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 est un alias créé précédemment.

ParamĂštres client


CÎté client, $ ORACLE_HOME / network / admin contient les fichiers:
ldap.ora
sqlnet.ora
tnsnames.ora

Le fichier tnsnames.ora contient, comme d'habitude, des alias "locaux" et est utilisé si aucun nom n'est trouvé dans LDAP.
Le fichier sqlnet.ora contient une description de l'ordre du résolveur:

sqlnet.ora

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


Les paramÚtres d'accÚs au fichier LDAP sont définis dans 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" 

Dans la configuration décrite, l'ordre suivant est utilisé.

Tout d'abord, le fichier tnsnames.ora est affiché, si l'enregistrement n'y est pas trouvé, nous demandons ensuite à LDAP (si vous devez modifier l'ordre, changez l'ordre dans le paramÚtre NAMES.DIRECTORY_PATH

Vient ensuite une demande au serveur LDAP principal, si elle n'est pas disponible pour une raison quelconque, accédez au deuxiÚme serveur dans la liste DIRECTORY_SERVERS

L'ordre d'interrogation dans ce cas n'est pas important, le premier est préférable d'indiquer le serveur géographiquement le plus proche.

Le contexte d'administration par défaut (LDAP) est utilisé pour le contexte par défaut, afin de ne pas indiquer mycompany.ru à chaque fois

Pour la mĂȘme raison, il n'est pas recommandĂ© d'utiliser un point dans un enregistrement d'alias, il le perçoit comme un domaine.

De plus, je dirai comment configurer la réplication entre les serveurs

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


All Articles