Antes de instalar, cheque estas dependências básicas do Oracle:
- glibc >= 2.3.4
- libaio >= 0.3.104
- make >= 3.80
- binutils >= 2.16.91.0.5
- gcc >= 4.1.2
Se o seu Slackware foi instalado no modo full (todos os pacotes), é praticamente certo que você já tenha todos estes pacotes instalados.
Primeiro, baixe o Oracle XE 11g R2 aqui:
Aceite a licença de uso e selecione a opção: "Oracle Database Express Edition 11g Release 2 for
Linux x64". Ao clicar, você será redirecionado à tela de login do site. Se você já tem uma conta, basta inserir os seus dados que o download começará, se não, basta fazer um pequeno cadastro (é grátis =)).
Com o arquivo ZIP de 315 MB em mãos, vamos à configuração do pacote.
Aqui temos uma novidade: SlackBuilds!
Sim! Agora você pode instalar o Oracle XE com um autêntico pacote tgz.
Há um SlackBuild do Oracle XE desenvolvido por Andrew Clemons que está disponível no GitHub:
Baixe os cinco arquivos disponíveis e salve-os em uma pasta (aqui chamei-a de "oracle-xe-11g").
Agora, vamos mover o arquivo ZIP do Oracle para dentro da pasta do SlackBuilds (criada anteriormente):
Obs.: lembrando que, a partir daqui, você pode optar por usar o seu usuário normal. Você não precisa estar necessariamente logado como usuário oracle para realizar a instalação.
mv oracle-xe-11.2.0-1.0.x86_64.rpm.zip oracle-xe-11g/
Por fim, entre na pasta do SlackBuilds, logue-se como root e execute o script:
cd oracle-xe-11g/
$ su
# chmod +x oracle-xe-11g.SlackBuild
# ./oracle-xe-11g.SlackBuild
Se tudo der certo, instale o pacote criado:
# upgradepkg --install-new /tmp/oracle-xe-11g-11.2.0-x86_64-1_acl.tgz
Pronto! O Oracle já está instalado.
Agora, para que as variáveis de ambiente façam efeito, e para que o Slackware possa atualizar alguns caches/libs do sistema, vamos reiniciar:
# reboot
Ajustes
OK. Sistema reiniciado. Antes de configurar, vamos editar dois arquivos:
Edite o arquivo:
/u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora:
Aqui, ele está assim:
# listener.ora Network Configuration File:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = %hostname%)(PORT = %port%))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
Deixei ele assim:
# listener.ora Network Configuration File:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXT_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = %port%))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
Eu basicamente alterei a variável HOST de %hostname% para localhost e a variável KEY = EXTPROC_FOR_XE para KEY = EXT_XE.
E, depois, edite este outro arquivo:
/u01/app/oracle/product/11.2.0/xe/network/admin/tnsnames.ora:
Aqui, ele está assim:
# tnsnames.ora Network Configuration File:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = %hostname%)(PORT = %port%))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
Eu o deixei assim:
# tnsnames.ora Network Configuration File:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = %port%))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXT_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
Novamente, apenas alterei as variáveis HOST e KEY.
Esta configuração corrige um erro de inicialização do listener (antes mesmo dele aparecer, rs). Sem ele, o seu banco ficaria inacessível externamente (incluindo o acesso via aplicações).
Assim, se você checar a instância (mesmo com ela executando), apareceria o seguinte erro:
Estabelecendo conexão com (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
TNS-12541: TNS:não há listener
TNS-12560: TNS:erro de adaptador de protocolo
TNS-00511: Não há listener
Linux Error: 111: Connection refused
Estabelecendo conexão com (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Slackware..)(PORT=1521)))
TNS-12541: TNS:não há listener
TNS-12560: TNS:erro de adaptador de protocolo
TNS-00511: Não há listener
Linux Error: 111: Connection refused