sexta-feira, 4 de fevereiro de 2011

Oracle - Quando as crianças ORA-01034 e ORA-27101 vem te abraçar juntinhas

Você tenta conectar localmente e tudo funciona, mas conexões remotas apresentam a mensagem:

ERROR: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist



Não se desespere, o que normalmente ocorre é que seu SID ou ORACLE_HOME estão incorretos, lembre-se que o '/etc/oratab', 'listener.ora' e as variáveis de ambiente do Oracle devem estar iguais. 


Exemplo, se meu SID é 'teste' deve ser colocado assim em todos os lugares citados acima, se em algum estiver 'Teste' ou 'TESTE' dará problema.

No $ORACLE_HOME não coloque '/' no final, se tiver retire, feito isto faça um reload no ser listener e pronto.

16 comentários:

  1. Fiz todos os passos, porém continua o mesmo erro.

    ResponderExcluir
  2. Podes verificar outros sites de apoio, por exemplo:

    http://www.dba-oracle.com/sf_ora_01034_oracle_not_available.htm

    ResponderExcluir
  3. Mano,
    essa última dica "não coloque '/'" me salvou velho! que detalhe chato! hahahhaa
    obrigado, funcionou!
    abração!

    ResponderExcluir
  4. Olá pessoal, estou com este mesmo problema. já conferir todos os arquivos e as variáveis, e continua com o mesmo erro. E NÃO tem "/" também. alguem poderia me ajudar a resolver?

    ResponderExcluir
    Respostas
    1. Olá Anônimo. Me mande o seu erro completo e mais detalhes do seu ambiente. Obrigado.

      Excluir
    2. Olá Gabriel, tem algum email para que eu possa te mandar a foto do erro?

      seguem as principais:

      1. $echo $ORACLE_HOME
      /opt/oracle/product/10.2.0

      2.$echo $ORACLE_SID
      PV

      3.$nano /etc/oratab
      PV:/opt/oracle/product/10.2.0:Y

      4.$nano /etc/lsnrtab
      LISTENER:/opt/oracle/product/10.2.0:Y

      5.$cd $TNS_ADMIN
      $nano tnsnames.ora
      ...
      PV.WORLD =
      (DESCRIPTION =
      (ENABLE=BROKEN)
      (ADDRESS_LIST =
      (ADDRESS =
      (PROTOCOL = TCP)
      (HOST = home2)
      (PORT = 1521)
      )
      )
      (CONNECT_DATA =
      (SERVICE_NAME = PV.WORLD)
      (INSTANCE_NAME = PV)
      )
      )

      6.$ env | grep ORA
      ORACLE_SID=PV
      ORACLE_BASE=/opt/oracle
      ORA_NLS33=/opt/oracle/product/10.2.0/ocommon/nls/admin/data
      ORACLE_HOME=/opt/oracle/product/10.2.0

      (Faltando Algo?)

      Desde já agradeço

      Att. Pablo Mota (Anônimo).

      Excluir
    3. Olá Pablo, seu ORACLE_HOME não tem db_home1 ou db_1 depois da versão? Dá uma conferida nisto, por favor. O restante está ok. Se estiver ok, manda um print completo do erro por favor. Meu e-mail é helkmut@gmail.com, mas o ideal é tratarmos por aqui até mesmo para o pessoal ver se não está passando pelo mesmo problema.

      Excluir
    4. Beleza Gabriel. pena que não tem como eu postar a imagem do erro que estou enviando. segue a parte do email que te mandei agora.

      Olá Gabriel. De fato ele não tem o db_home, mas o que acontece, é que o oracle é englobado com outra ferramenta, o oracle inclusive foi instalado por uma ferramenta externa ( a ferramenta é o TNPM[proviso] é uma ferramenta especializada em gerenciar a performance de ativos). e ela já cria o oracle sem o db_home ou db_1 automaticamente.

      PS: ele estava funcionando perfeitamente. abri hoje pela manhã e me deparo com outro erro dizendo que o listener não estava de pé, subi ele, e deu este outro erro.

      Excluir
  5. Como usuário oracle no console do servidor onde o Oracle Server Database está instalado dá erro ao executar o seguinte comando: sqlplus / as sysdba ?

    ResponderExcluir
  6. Ele dar o seguinte erro:

    $ sqlplus "/as sysdba"
    Error 6 initializing SQL*Plus
    Message file sp1.msb not found
    SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

    Att

    ResponderExcluir
    Respostas
    1. Neste mesmo console executa o comando 'env' e me manda o retorno.

      Excluir
    2. segue:
      $ env |grep ORA
      ORACLE_SID=PV
      ORACLE_BASE=/opt/oracle
      ORA_NLS33=/opt/oracle/product/10.2.0/ocommon/nls/admin/data
      ORACLE_HOME=/opt/oracle/product/10.2.0


      completo:

      $ env
      HOSTNAME=home2
      TERM=xterm
      SHELL=/bin/ksh
      HISTSIZE=1000
      SSH_CLIENT=192.168.1.11 56113 22
      NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
      SSH_TTY=/dev/pts/1
      USER=oracle
      LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
      LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/lib
      ORACLE_SID=PV
      ORACLE_BASE=/opt/oracle
      A__z="*SHLVL
      TNS_ADMIN=/opt/oracle/product/10.2.0/network/admin
      PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/opt/oracle/product/10.2.0/bin:/usr/ccs/bin
      MAIL=/var/spool/mail/oracle
      PWD=/opt/oracle
      INPUTRC=/etc/inputrc
      LANG=en_US.UTF-8
      SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
      SHLVL=2
      HOME=/opt/oracle
      LOGNAME=oracle
      EXTPROC_DLLS=ONLY:/opt/oracle/product/10.2.0/lib/libpvmextc.so
      CVS_RSH=ssh
      SSH_CONNECTION=192.168.1.11 56113 10.1.8.47 22
      LESSOPEN=|/usr/bin/lesspipe.sh %s
      ORA_NLS33=/opt/oracle/product/10.2.0/ocommon/nls/admin/data
      DISPLAY=localhost:10.0
      ORACLE_HOME=/opt/oracle/product/10.2.0
      G_BROKEN_FILENAMES=1
      _=/bin/env

      Att.

      Excluir
  7. Pablo, primeiro resolva o problema do sqlplus: http://stackoverflow.com/questions/2747462/how-to-correctly-set-the-oracle-home-variable-on-ubuntu-9-x

    Pois segundo o SQLPlus tu não tens ORACLE_HOME setado.

    ResponderExcluir
  8. Opa, eu não tava conseguindo gerar report do AWR, me ajudou pacas!

    ResponderExcluir
  9. Gabriel, estou com um problema que é o seguinte, o server de BD caiu e ao subir o listener não estava ativo, apenas entrei no putty e startei. Porém eu tenho 2 instâncias (prd e sml) onde a prd está funcionando, porém não consigo conectar na sml. Se eu tentar por um sql tools eu recebo a mensagem.: ORA 12505 TNS Listener não tem conhecimento sobre o SID e se eu acessar via putty e tentar pelo sqlplus ele não reconhece o usuário e senha da instância, se eu acessar via / as sysdba e dar um select instance_name from v$instance; ele da erro ORA 01034 Oracle not available.

    ResponderExcluir
    Respostas
    1. Já garantiu que a instância sml está 'open'? É possível que ela não conste com Y no /etc/oratab, logo, não iniciou, então altere seu oracle_sid para sml(export ORACLE_SID=sml) e utilizando o sqlplus / as sysdba dê um ALTER DATABASE OPEN; . Espero ter ajudado. abs.

      Excluir