sexta-feira, 7 de outubro de 2011

Oracle Service Bus - Gerando correctamente WSDLs

Quando o OSB (versão 11.1.1.5.0) não está acessível directamente aos clientes (por detrás de um Reverse Proxy por exemplo), os WSDLs não são gerados correctamente, ficando o endpoint com o hostname da máquina onde está deployed o OSB.

Isto é uma situação que se deve evitar, pois está-se a expor nomes internos que não devem ser conhecidos fora.

Esta situação só ocorre se o OSB não estiver em Cluster.

Para corrigir o problema efectuar os seguintes passos:
  1. Criar um cluster
  2. Adicionar o servidor do OSB ao cluster
  3. No cluster, na tab HTTP configurar os campos Frontend Host e Frontend HTTP Port para os valores do Reverse Proxy por exemplo
  4. Parar o AdminServer e o servidor do OSB
  5. Editar o ficheiro config.xml conforme indicado a seguir
  6. Restart do Admin Server
  7. Restart do servidor OSB
  8. Verificar a geração de WSDLs
Pode-se também recriar o domínio do OSB, configurando o mesmo em cluster, e assim não haverá edição manual de ficheiros.

Agora a geração já será feita como deve ser.


Edição manual do ficheiro config.xml

Esta edição apenas é necessária se não se quiser recriar o domínio de raiz.
  • Substituir o nome do servidor do OSB pelo nome do cluster excepto nos casos seguintes:
    • <server>
      • <name>.....
      • <jta-migratable-target><user-preferred-server>....
      • <server-diagnostic-config><name>....
      • <virtual-machine-name>NOME_DO_DOMINIO_.....</virtual-machine-name>
    • </server>
    • Todos os valores nos vários <jms-server>
    • Todos os valores em <migratable-target>
    • Todos os valores nos vários <file-store>
    • Todos os valores nos vários <jms-system-resource>
    • Todos os valores nos vários <saf-agent>

terça-feira, 4 de outubro de 2011

Teclas Home, End, etc a funcionar na linha de comandos (bash) em Solaris

As teclas home, end em Solaris 10 na shell bash escrevem caracteres esquisitos (~) em fez de executarem a sua função espectável.

Para corrigir este problema executar os passos seguintes:

  1. Editar o ficheiro .profile
  2. Adicionar a linha: export INPUTRC=inputrc
  3. Salvar e fechar o ficheiro
  4. Criar o ficheiro inputrc
  5. Adicionar o conteúdo:



    set meta-flag on
    set input-meta on
    set convert-meta off
    set output-meta on
    
    "\e[1~": beginning-of-line
    "\e[4~": end-of-line
    "\e[5~": beginning-of-history
    "\e[6~": end-of-history
    "\e[3~": delete-char
    "\e[2~": quoted-insert
    "\e[5C": forward-word
    "\e[5D": backward-word
    




  6. Salvar e fechar o ficheiro
  7. Fazer logout e login
Solução encontrada em: http://www.cyberciti.biz/tips/freebsd-how-to-customized-home-del-insert-keys-for-bash-shell.html

Colocar as teclas de cursor a funcionar no vi em Solaris

Em Solaris 10, o vi vem com uma funcionalidade muito irritante que é a de não ter a funcionar nem o backspace nem o delete nem as teclas de cursor no modo de edição. As teclas de cursor por exemplo trocam minúsculas por maiúsculas e vice-versa.

A solução do problema não é difícil, bastando criar um ficheiro e colocar alguns mapeamentos que solucionam o problema.

Assim, criar na home do utilizador o ficheiro .exrc.

Dentro desse ficheiro colocar os mapeamentos pretendidos.
O conteúdo tem de ser escrito à mão e NÃO PODE SER COPIADO. Caso contrário não irá funcionar.
Os mapeamentos não podem ter espaços no final, nem pode haver linhas em branco no ficheiro.

Exemplo de ficheiro .exrc (NÃO COPIAR. Escrever no ficheiro o conteúdo, conforme instruções mais abaixo):


:map! ^[OA ^[ka
:map! ^[OB ^[ja
:map! ^[OC ^[la
:map! ^[OD ^[ha
:map! ^[[3~ ^[xa
:map! ^? ^[Xa

Para escrever o conteúdo usar os seguintes comandos (são comandos de controlo, por isso não podem ser copiados):

^[OA = CTRL-V + Seta-para-cima
^[ka = CTRL-V + ESCAPE + k + a

^[OB = CTRL-V + Seta-para-baixo
^[ja = CTRL-V + ESCAPE + j + a

^[OC = CTRL-V + Seta-para-direita
^[la = CTRL-V + ESCAPE + l + a

 ^[OD = CTRL-V + Seta-para-esquerda
^[ha = CTRL-V + ESCAPE + h + a

^[[3~ = CTRL-V + DELETE
 ^[xa = CTRL-V + ESCAPE + x + a

^H = CTRL-V + BACKSPACE
 ^[Xa = CTRL-V + ESCAPE + x + a


Explicação dos mapeamentos:

:map! ^[OA ^[ka -> Coloca a seta para cima a funcionar em modo de edição
:map! ^[OB ^[ja-> Coloca a seta para baixo a funcionar em modo de edição
:map! ^[OC ^[la-> Coloca a seta para a direita a funcionar em modo de edição
:map! ^[OD ^[ha-> Coloca a seta para a esquerda a funcionar em modo de edição
:map! ^[[3~ ^[xa-> Coloca o delete a funcionar em modo de edição, apagando o carácter seleccionado pelo cursor
:map! ^? ^[Xa-> Coloca o backspace a funcionar em modo de edição, apagando o carácter à esquerda do cursor


Esta foi uma configuração que escolhi.
Pode-se adaptar esta configuração usando outros comandos do vi, e acrescentando mais mapeamentos se necessário.

Documentação vi: http://hea-www.harvard.edu/~fine/Tech/vi.html

Onde encontrei a solução: http://www.jonathanlaliberte.com/2009/12/01/fix-arrow-keys-in-vi-on-solaris/comment-page-1/#comment-3548

segunda-feira, 3 de outubro de 2011

./dbstart: test: argument expected

Ao executar o comando dbstart para levantar uma base de dados Oracle se ocorrer o erro:

dbstart: test: argument expected

então, por incrível que pareça, o problema está no início do script.

Substiruir

#!/bin/sh

por:

#!/bin/bash


Fazer o mesmo no dbshut.

Pós-instalação de Base de Dados Oracle 11g em Solaris

Depois de instalada a base de dados em Solaris, é necessário configurar o ambiente para se poder aceder à base de dados em condições.

Assim como utilizador que vai correr a base de dados (neste caso oracle):

Editar o ficheiro .profile (caso se use bash)

ORACLE_SID=SID_BASE_DADOS
export ORACLE_SID
ORACLE_HOME=RAIZ_DO_PRODUTO(por defeito: /u01/app/oracle/product/11.2.0/dbhome_1)
export ORACLE_HOME

ORAENV_ASK=NO
export ORAENV_ASK

export PATH=$PATH:/usr/local/bin
. /usr/local/bin/oraenv



Sair e voltar a entrar para assumir as alterações no perfil.

Executar:

sqlplus / AS SYSDBA
@?/rdbms/admin/utlrp.sql


Fora do SQLPLUS, na linha de comandos executar:

$ORACLE_HOME/bin/genclntst


Editar o ficheiro /var/opt/oracle/oratab

Verificar se o conteúdo termina com Y. Se terminar com N então a base de dados não arranca automaticamente.


Ex:
oracle_sid:/u01/app/oracle/product/11.2.0/dbhome_1:Y



Para a base de dados arrancar e terminar automaticamente a cada reboot do servidor, criar como root o ficheiro /etc/init.d/dbora com o conteúdo seguinte:

#! /bin/sh  -x
#
# Change the value of ORACLE_HOME to specify the correct Oracle home
# directory for your installation.

ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
#
# Change the value of ORACLE to the login name of the
# oracle owner at your site.
#
ORACLE=oracle

PATH=${PATH}:$ORACLE_HOME/bin
HOST=`hostname`
PLATFORM=`uname`
export ORACLE_HOME PATH

case $1 in
'start')
         su - oracle -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" &
        ;;
'stop')
         su - oracle -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" &
        ;;
*)
        echo "usage: $0 {start|stop}"
        exit
        ;;
esac
#
exit
 
 
Dar as seguintes permissões ao ficheiro dbora 
chgrp GRUPO_ORACLE dbora
chmod 750 dbora

Depois de criado o ficheiro executar:

ln -s /etc/init.d/dbora /etc/rc0.d/K01dbora
ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora

Mais detalhes aqui e aqui.

Mudar prompt de root em Solaris 10

Ao contrario do que muitos rumores dizem, já não há problema em mudar a prompt de root em Solaris 10. Antes desta versão a shell que vinha por defeito não era linkada, o que trazia (segundo dizem) segurança acrescida em caso de problemas. Contudo a partir da versão 10 a shell por defeito já é linkada e por isso é indiferente se se muda a shell ou não.

Então os passos para mudar de shell de root:
  1.  /usr/ucb/vipw -> Alterar a shell para, por exemplo: /bin/bash
  2. Sair e voltar a entrar da sessão
  3. Editar o ficheiro .profile e acrescentar uma linha para ter a prompt como se quer. Exemplo: PS1="[\H \w] $ "

Configuração da prompt de uma shell Bash

Para alterar a prompt de uma shell Bash, basta configurar a variável PS1 com um 
formato, usando um ou mais caracteres especiais:
 
              \a     an ASCII bell character (07)
              \d     the date  in  "Weekday  Month  Date"  format
                     (e.g., "Tue May 26")
              \e     an ASCII escape character (033)
              \h     the hostname up to the first `.'
              \H     the hostname
              \j     the  number of jobs currently managed by the
                     shell
              \l     the basename of the shell's terminal  device
                     name
              \n     newline
              \r     carriage return
              \s     the  name  of  the shell, the basename of $0
                     (the portion following the final slash)
              \t     the current time in 24-hour HH:MM:SS format
              \T     the current time in 12-hour HH:MM:SS format
              \@     the current time in 12-hour am/pm format
              \u     the username of the current user
              \v     the version of bash (e.g., 2.00)
              \V     the release of bash,  version  +  patchlevel
                     (e.g., 2.00.0)
              \w     the current working directory
              \W     the  basename  of the current working direc­
                     tory
              \!     the history number of this command
              \#     the command number of this command
              \$     if the effective UID is 0, a #, otherwise  a
                     $
              \nnn   the  character  corresponding  to  the octal
                     number nnn
              \\     a backslash
              \[     begin a sequence of non-printing characters,
                     which could be used to embed a terminal con­
                     trol sequence into the prompt
              \]     end a sequence of non-printing characters
 
Exemplo: PS1="[\H \w] $" 
 
 Mais detalhes em aqui.