Instale e configure o Oracle Internet Directory para resolver nomes de banco de dados

Todo mundo que trabalhou com esse tipo de DBMS está ciente do acesso ao Oracle DBMS, que é armazenado no arquivo tnsnames.ora.

Os dados são armazenados no arquivo tnsnames.ora em texto simples e podem ser facilmente alterados usando qualquer editor de texto. É bom se não houver muitas entradas, mas o que fazer se a organização tiver centenas de bancos de dados, cujo acesso deve ser fornecido por hosts de usuários de vários níveis ou servidores de terminal. E se, em um determinado momento, o banco de dados for movido para outro host, ou ocorrerem outras alterações que alterem as configurações de acesso ao banco de dados, você precisará alterar as configurações de acesso em qualquer lugar.

Existem muitas soluções a oferecer, incluindo redirecionamentos, aliases etc.

Aqui, descreverei como instalar e configurar um único repositório para resolver nomes de banco de dados usando o Oracle Internet Directory OID e como solicitar resolução de nomes usando o protocolo LDAP. Isso é muito mais conveniente do que manter o arquivo tnsnames.ora atualizado para centenas de lugares.

A instalação e configuração do DBMS para o banco de dados do repositório OID não é descrita aqui, os principais pontos importantes para esta configuração são indicados. Você pode se familiarizar com a política de licenciamento da Oracle referente aos produtos RDBMS Database, Oracle Fusion Middleware e Oracle Internet Directory no site da empresa.

Instalação de software


O software foi instalado no sistema operacional Linux (SUSE Linux Enterprise Server 11). Para o seu sistema operacional, você precisa verificar a matriz de compatibilidade em oracle.com.

Para instalar o servidor autônomo (executando o NodeManager), foram feitas as seguintes distribuições atualizadas no momento da instalação:

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 das versões atuais

Instale o software para o repositório no qual os esquemas OID serão armazenados

DBMS versão 12.1.0.2 + PSU
DB Crie um banco de dados "vazio":
Deve especificar
Codificação AL32UTF8, inclua ORACLE TEXT na instalação do software
Parâmetros do banco de dados:
open_cursors = 800
processos = 500
Além disso, era necessário executar o script xaview.sql, encontrado na etapa de verificação da instalação do OID.
configurar e aumentar LISTENER para o banco de dados.

Portanto, o banco de dados vazio foi criado por uhost-oid1: 1521 / oid1 (neste caso, oid1- SID do banco de dados) e está pronto para criar um repositório nele.

Configurando OID


A seguir, o diretório inicial do usuário oracle é / u / app / oracle
Descompacte java e defina a variável JAVA_HOME

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

Descompacte OID

 unzip fmw_12.2.1.3.0_oid_linux64_Disk1_1of1.zip 


Acontece que o arquivo ./fmw_12.2.1.3.0_oid_linux64.bin

Verificamos que é executável, se não

 chmod +x 

Lançamos:

 ./fmw_12.2.1.3.0_oid_linux64.bin 

(O encaminhamento do servidor X deve primeiro ser configurado), o instalador baseado em java será iniciado.

O seguinte foi especificado como ORACLE_HOME:

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

Nesse caminho, o software para FMW (Oracle Fusion Middleware) e o Oracle Internet Directory serão instalados.

No estágio "tipo de instalação", especifique STANDALONE.



Crie um repositório (esquemas necessários no banco de dados)



Criamos esquemas para o repositório no banco de dados, para isso executamos rcu

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

Nesse estágio, os esquemas ODSSM, ODS e DEV_STB são criados (lembre-se da senha, ela será necessária ao configurar componentes de domínio)

Criamos um domínio no qual o OID funcionará para nós (um domínio em termos de FMW)


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


Criamos o domínio em uma pasta separada do software. Por exemplo, especifique isto:

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





Para uma conexão com o banco de dados, especifique os parâmetros dos esquemas criados anteriormente (e senhas)
Ao instalar, definimos o login e a senha do NodeManager (ele será usado no futuro para conectar-se ao NodeManager e iniciar / parar o próprio OID por meio dele)

Iniciar o NodeManager


Para iniciar o NodeManager, você precisa gerar um arquivo com as chaves: DemoIdentity.jks. (Se, além de instalar o OID, você instalar atualizações, talvez esta etapa não seja necessária)
Geraremos "padrão" para não sermos atormentados com os parâmetros de carregamento do keystore na configuração do domínio. Funciona com esses parâmetros - esta é a senha padrão para o repositório:

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

executar

 . setWlstEnv.sh 

(necessariamente com um ponto, não funciona de outra maneira)
Vá para o diretório em que o arquivo deve ser armazenado:

 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 

A frase-chave DemoIdentityPassPhrase é apenas isso; caso contrário, você terá que editar a configuração do domínio.
É necessário lidar com isso, mas você deve primeiro começar a trabalhar.

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

É necessário configurar o próprio OID, caso contrário, o domínio não poderá se conectar ao banco de dados do repositório (consulte o Problema1 )

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

necessário para encontrar as bibliotecas corretas e extrair-se da ORACLE_HOME certa

Se houver, verifique com o ldd onde procurar:

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

Deve estar no ORACLE_HOME com o software FMW:

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

Erros, se não for assim, consulte o Problema2

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

Verifique se o NodeManager está em execução.
Logs e configuração: / 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 

Solution1 : Vá e gere DemoIdentity.jks como descrito acima

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: 

Solução2 : defina a variável TNS_ADMIN e verifique se o nome de usuário / senha está correto

Configuração primária do OID


Nesse ponto, as variáveis ​​devem ser definidas.
TNS_ADMIN
LD_LIBRARY_PATH
Supõe-se que o NodeManager já esteja em execução.
Inicie o utilitário WLST:

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

Extraímos as variáveis ​​necessárias para o utilitário WLST funcionar

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

Além disso, usando o utilitário WLST, nos conectamos ao NodeManager. Precisamos de um nome de usuário e senha especificados durante a instalação (especificados para o NodeManager, temos este weblogic)

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

Exemplo de saída :

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

Iniciamos a inicialização, durante a qual uma instância com o nome oid1 é criada.
Na linha abaixo:

odsPassword - senha para o esquema ODS com base no repositório definido durante ./rcu
orcladminPassword - senha que será usada como cn = orcladmin para acessar o LDAP
realmDN - LDAP - esquema a ser configurado

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

Após a execução, um componente (instância em termos de FMW) com o nome oid1 será criado

Problema 3 :
Registre /u/app/oracle/config/domains/oid_domain/servers/OID/logs/oid1/oidmon*.log
contém

 /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 

Solução 3 :
Defina a variável de ambiente
LD_LIBRARY_PATH = / u / app / oracle / product / middleware / Oracle_IDM1 / lib: $ LD_LIBRARY_PATH
reinicie o NodeManager,
execute o componente:

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

Se o componente foi criado por esse motivo, mas não funciona, eliminamos o processo oidmon, alteramos os parâmetros de status do processo no 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'; 

Verificação de conexão:

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

Pode ser necessário inicializar oid_setup novamente
Problema 4 . Ao tentar salvar no 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:
Execute oid_setup novamente
Verifique as configurações do ldap.ora no cliente a partir do qual o Net Manager é iniciado
DEFAULT_ADMIN_CONTEXT = "dc = minhaempresa, dc = ru"

Altere o parâmetro OID (para permitir solicitações de usuários anônimos)
Quando um nome TNS é criado usando o gerenciador de rede, mas o tnsping não funciona.
Crie um arquivo:
gato anonymousbind.ldif

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

e modifique os parâmetros usando este arquivo:

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

Diagnóstico:
tnsping mytest não funciona, um ldapsearch funciona
Verificando a disponibilidade das portas 3060 e 3131 (para SSL)

é assim que funciona (com uma senha)

 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 é um alias criado anteriormente.

Configurações do cliente


No lado do cliente, $ ORACLE_HOME / network / admin contém os arquivos:
ldap.ora
sqlnet.ora
tnsnames.ora

O arquivo tnsnames.ora contém aliases "locais", como de costume, e é usado se um nome não for encontrado no LDAP.
O arquivo sqlnet.ora contém uma descrição da ordem do resolvedor:

sqlnet.ora

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


As configurações de acesso para o arquivo LDAP são definidas em 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" 

Na configuração descrita, a seguinte ordem é usada.

Primeiro, o arquivo tnsnames.ora é exibido. Se o registro não foi encontrado, pedimos ao LDAP (se você precisar alterar a ordem, altere a ordem no parâmetro NAMES.DIRECTORY_PATH

A seguir, é apresentada uma solicitação ao servidor LDAP principal, se não estiver disponível por algum motivo, vá para o segundo servidor na lista DIRECTORY_SERVERS

A ordem de votação neste caso não é importante; o primeiro é melhor para indicar o servidor geograficamente mais próximo.

O contexto administrativo padrão (LDAP) é usado para o contexto padrão, para não indicar sempre minhaempresa.ru

Pelo mesmo motivo, não é recomendável usar um ponto em um registro de alias; ele o percebe como um domínio.

Além disso, direi como configurar a replicação entre servidores

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


All Articles