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