O desafio da vez foi muito pontual, na ferramenta Oracle Warehouse Builder. Esta é a versão em questão:
Certo. Agora vamos ao contexto: ao se alterar alguma configuração do Mapa do OWB (objeto lógico que encapsula as regras de carga, muito similar ao cenário, do ODI), é sugerido e necessário realizar 3 etapas: Generate, Validate e Deploy (conforme destacado abaixo):
Na situação que vivenciei recentemente, houve uma alteração de Location do OWB (estrutura lógica que realiza o apontamento para alguma origem, muito similar com a Topologia Física do ODI), devido a migração de um banco de dados. Ou seja, como este banco foi construído em um novo servidor, se faz necessário a devida alteração do apontamento no Location. Para chegar nesse item, basta clicar na paleta “Locations Navigator”, expandir o “Locations”, escolher o tipo (se é banco de dados, arquivo, etc. No nosso caso é a primeira opção), escolher o tipo de banco de dados (em nosso caso, Oracle), e dar um duplo clique no Location desejado. Obviamente estou apagando o nome desses objetos para sigilo do ambiente:
Informações de conexão do Location:
A modificação do Location foi realizada com sucesso, usando o seguinte script (que fica na pasta OWB_HOME/owb/rtp/sql):
SQL> @UpdateLocation.sql
This sql script sets the host:port:service and version parameters for a
location in the OWB Client Repository. It must be run from user XXXXX.
The connection type must be host:port:service and cannot be changed
using this script.
The location may be registered or unregistered.
Restart OWB client in order to see the new version in the UI.
Enter Workspace Name: XXXX
Enter Workspace User Name: XXXXX
Enter Location Name: XXXXX
New Host: XXXXXX
New Port: XXXX
New Service Name: XXXXX
New Version: XXXXX
Select Workspace Id for workspace XXXX and user XXX
Workspace id = X
Update location properties for XXXX
Location Type = Oracle Database
Location XXX Found
Connection Type = Default HOST:PORT:SERVICE Updating...
Updating CMPLocation_Host = XXX
Updating CMPLocation_Port = XXXX
Updating CMPLocation_ServiceName = XXXXXXX
Updating CMPLocation_Version = XXX
InsertingCMPLocation_Version
Agora vamos simular o erro. Após a modificação do Location, vamos tentar realizar o Deploy de um mapa que utiliza este mesmo Location. Para isso, vá na paleta “Projects Navigator”, expanda o seu projeto -> Databases -> Oracle -> seu Oracle Module -> Mappings.
Encontre o seu mapa e clique com o botão direito. Faça o Generate e Validate:
Perceba que essas etapas são concluídas com sucesso:
Porém, quando você realiza o Deploy do Mapa, o erro abaixo é reportado:
Nessa etapa, se você clicar em OK, o OWB voltará os parâmetros de conexão antigos do Location que você atualizou recentemente. A saída é: cancelar e investigar.
Após algumas pesquisas no MOS, me deparei com um Oracle Note com escopo similar, onde expõe um procedimento para alterar os novos parâmetros de conexão (realizados no Location) dentro de uma estrutura chamada Control Center (que é reportada na mensagem de erro).
How To Update The OWB Control Center Service Credentials When Host Name/Port/Service Name Have Been Changed (Doc ID 434880.1) |
Nesta nota, em resumo, é recomendado aplicar o seguinte procedimento:
- Start the OWB Browser Listener:
- Version 10.2
- For Windows : Start -> Programs -> Oracle OWB 10.2 -> Warehouse Builder -> Administration -> Start OWB Browser Listener
- For Linux : OWB_home/owb/bin/unix/startOwbbInst.sh
- Version 11g
- For Windows : Open a command window and execute Drive:\\OWB_home\\owb\\bin\\win32\\startOwbbInst.bat
- For Linux : OWB_home/owb/bin/unix/startOwbbInst.sh
- Version 10.2
- Start the Repository Browser:
- For Windows : Start -> Programs -> Oracle -> Warehouse Builder -> Repository Browser
- For Linux : OWB_home/owb/bin/unix/openRAB.sh
- Connect to the Warehouse Builder Browser as the Control Center Owner.
- Select “Locations Report” under Reports – Deployments.
- Select the Location named “PlatformSchema” with “Control Center” type .
Check the box in the Select column in front of the Location Name. - Click on the link in the Validation column (last column).
- In the “Connection Details” section of the Location Validation Report page, update the Host, Port and Service Name accordingly.
- Click on the “Update Details” button.
- Test the location.
Não é mencionado na nota, mas acho relevante realizar um backup do mapa que sofrerá o Deploy antes de qualquer coisa. Todos os mapas do OWB nada mais são do que packages dentro do banco de dados. Desse modo, salvei o DDL do objeto.
ORCL > col object_name format a25
ORCL > col owner format a15
ORCL > col status format a20
ORCL > col object_type format a20
ORCL > SELECT OBJECT_NAME,OWNER,STATUS,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_NAME='NOMEOBJETO1';
OBJECT_NAME OWNER STATUS OBJECT_TYPE
------------------------- --------------- -------------------- --------------------
NOMEOBJETO1 OWNER1 VALID PACKAGE
NOMEOBJETO1 OWNER1 VALID PACKAGE BODY
ORCL >
Ótimo. Agora vamos aplicar o procedimento:
Primeiro, é necessário subir o OWB Browser Listener. Como é algo muito pontual, não farei em nohup, pois usarei esse listener apenas para aplicar o processo:
[user@hostname unix]$ cd $OWB_HOME/owb/bin/unix/
[user@hostname unix]$ ./startOwbbInst.sh
20/02/22 16:17:25 Oracle Containers for J2EE 10g (10.1.3.4.0) initialized
A segunda etapa será iniciar o Repository Browser. Uma dica: se você não sabe qual é a URL (como eu também não sabia), dentro do shellscript que será usado no start, há uma referência sobre ela.
[user@hostname ~]$ cd $OWB_HOME/owb/bin/unix/
[user@hostname unix]$ vi openRAB.sh
Conteúdo que nos interessa:
#!/bin/sh
while test -n "$1"
do
case $1 in
-u) echo "USAGE: openRAB.sh [-b browser_path] [-h localhost_name] | [-u]";
exit 1
;;
-b) if test -x "$2"
then
browser=$2
else
echo "error:the browser path you specified does not exist or you do not have a enough permission to run that program"
exit 2;
fi
shift; shift;;
-h) if test -n "$2"
then
hostname=$2
else
echo "error:wrong argument . -u for hep"
exit 3;
fi
shift; shift;;
-*) echo "error: wrong argument. -u for help";
exit 4;;
*) echo "error: wrong argument. -u for help";
exit 5;;
esac
done
if test ! -x "$browser"
then
if test -x "$OWB_DEFAULT_WEB_BROWSER"
then
browser=$OWB_DEFAULT_WEB_BROWSER
else
if test -x "/usr/local/bin/netscape"
then
browser=/usr/local/bin/netscape
else
echo 'please input the full path of your web browser:(for example: /usr/local/bin/netscape)'
read browser
fi
fi
fi
if test ! -n "$hostname"
then
domain=`domainname`
localhost=`/bin/uname -n`
if test -n "$domain"
then
dotcount=`echo $domain | sed 's/[^\.]//g' | wc -w`
if test $dotcount -gt "0"
then
hostname=$localhost.$domain
else
hostname=$localhost
fi
else
hostname=$localhost
fi
fi
echo 'local browser path: '$browser
echo 'local host name: '$hostname
$browser 'https://'$hostname':8999/owbb/RABLogin.uix?mode=runtime&def_host=&def_port=1521&def_service=&def_net_service='
Não é mencionado na Nota, mas lendo o shellscript, no momento do start, há 2 possibilidades de parâmetros: a própria URL ou o nome do hostname. Usarei a segunda opção:
[user@hostname unix]$ ./openRAB.sh -h hostname
please input the full path of your web browser:(for example: /usr/local/bin/netscape)
Ao acessar a URL, conseguimos ver a tela de Login:
Preencha com os dados do seu ambiente:
Vá na terceira opção:
Nessa etapa, é exibida uma lista com todos os Locations dentro do Control Center. O print ficou prejudicado pois precisei omitir todas as informações, mas as colunas mais importantes são: Nome (nome do Location), Versão do Tipo (se for banco de dados, qual é a versão do mesmo), Descrição do Serviço (nome dado no momento da sua criação) e Validação (onde é possível EDITAR as informações internas do Location).
Clique no Location que precisa ser alterado e edite as suas informações de conexão corretamente:
Ao clicar em Detalhes da Atualização, será reportado que o Location foi atualizado. Se você voltar na página anterior, será possível ser os seus novos parâmetros de conexão.
Agora podemos novamente tentar realizar o Deploy do Mapa:
O novo Location será exposto, e basta você digitar a senha e realizar o teste de conexão, e clicar em OK: