Oracle 11g XE e SQL Developer no Linux Mint


      *Última atualização: 10/09/2019.

      Neste artigo reuni todos os passos os quais necessitei seguir para conseguir montar um ambiente de estudos para banco de dados, utilizando a base de dados de demonstração do Oracle XE.

      Essa base de dados de demonstração (sample schema) serve para auxiliar os estudos de banco de dados. Em vez de ter que criar e preencher várias tabelas para então criar e resolver exercícios, podemos utilizar o sample schema HR (Human resources – Recursos humanos) da Oracle, que é uma base de dados para recursos humanos já preenchida com muitos dados. Basta então “brincar” com eles. Para ter acesso a esse recursos, iremos instalar o Oracle XE 11g 11.2.0 e o SQL Developer 19.2.

      Infelizmente, instalar estas duas ferramentas no Linux não é uma tarefa simples, porém, não é impossível. Há alguns tutoriais na internet explicando como efetuar esta tarefa. No entanto, nenhum deles serviu integralmente para mim. Então, reuni aqui “pedacinhos” de cada tutorial que fui encontrando, e esses “pedacinhos” são as partes que serviram no meu caso: Linux Mint 18.3 Sylvia e Linux Mint 19.1 Cinnamon.


Primeira parte: Configurações pré-instalação


1) Instalar as dependências necessárias

sudo apt-get update

sudo apt-get install alien libaio1 libaio-dev sysstat unixodbc-dev libelf-dev flex build-essential gawk ksh libtool

2) Configurar os grupos e usuários necessários

       De acordo com a documentação do Oracle XE, são necessários os seguintes grupos e usuários: oinstall, dba, nobody e o usuário oracle. Esta etapa pode ser feita pelo modo gráfico, indo em Menu → Administação → Usuários e grupos ou pelo terminal, com os seguintes comandos:

Criando os grupos:

sudo addgroup oinstall
sudo addgroup dba
sudo addgroup nobody
sudo usermod -g nobody nobody

Criando o usuário oracle com a senha oracle (eu coloquei esta senha para facilitar, mas você pode colocar a senha que preferir, contanto que lembre depois)

sudo useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
sudo passwd oracle

Criando o diretório /home para o usuário oracle

sudo mkdir /home/oracle
sudo chown -R oracle:dba /home/oracle

Adicionando o seu usuário em todos os grupos criados

sudo addgroup SEU-USUÁRIO oinstall
sudo addgroup SEU-USUÁRIO dba
sudo addgroup SEU-USUÁRIO nobody

3) Criar links simbólicos

       O Oracle 11g XE foi baseado na distribuição Red Hat, o que faz com que seus diretórios sejam diferentes das distribuições baseadas no Ubuntu (caso do Mint). Sendo assim, é necessário criar links simbólicos para que o Oracle 11g XE encontre esses diretórios.

sudo ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib
sudo ln -s /usr/lib/i386-linux-gnu/libc_nonshared.a /usr/lib
sudo ln -s /lib/i386-linux-gnu/libgcc_s.so.1 /lib
sudo ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/bin/basename /bin/basename
sudo mkdir /etc/rc.d

4) Criar diretórios usados pelo Oracle 11g XE

sudo mkdir -p /u01/app/oracle
sudo chown -R oracle:dba /u01

5) Ajustar o chkconfig

Você precisa abrir o arquivo num editor de textos, no meu caso uso o nano:

sudo nano /sbin/chkconfig

Acrescente ao arquivo o seguinte conteúdo:

#!/bin/bash
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
echo >> $file
echo '### BEGIN INIT INFO' >> $file
echo '# Provides: OracleXE' >> $file
echo '# Required-Start: $remote_fs $syslog' >> $file
echo '# Required-Stop: $remote_fs $syslog' >> $file
echo '# Default-Start: 2 3 4 5' >> $file
echo '# Default-Stop: 0 1 6' >> $file
echo '# Short-Description: Oracle 11g Express Edition' >> $file
echo '### END INIT INFO' >> $file
fi
update-rc.d oracle-xe defaults 80 01

Salve, feche (ctrl + O, enter e ctrl + X) e dê permissão com o seguinte comando:

sudo chmod 755 /sbin/chkconfig

6) Atualização da configuração do sistema no arquivo sysctl.conf

Abra o arquivo sysctl.conf:

sudo nano /etc/sysctl.conf

Acrescente o seguinte conteúdo:

# Configurações para o Oracle 11g XE
fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

Salve e feche o arquivo.

7) Integração das configurações do Oracle 11g XE com o arquivo limits.conf

Abra o arquivo limits.conf:

sudo nano /etc/security/limits.conf

Adicione o seguinte conteúdo ao arquivo:

# Configurações para o Oracle 11g XE
oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535

Salve, feche e reinicie o computador.


Segunda parte: Instalação do Oracle 11g XE


1) Baixar o Oracle XE

https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/xe-prior-releases-5172097.html

Descompacte o arquivo. Abra a pasta onde está o arquivo .rpm e converta para .deb com o seguinte comando:

sudo alien --scripts oracle-xe-11.2.0-1.0.x86_64.rpm

Execute o arquivo .deb gerado. A instalação será efetuada.


Terceira parte: Configurações pré-uso


Antes de utilizar o Oracle 11g alguns ajustes precisam ser feitos para que ele funcione.

1) Configurar profile

Abra o arquivo profile:

sudo nano /etc/profile

Acrescente este conteúdo ao seu final:

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export PATH=$PATH:/u01/app/oracle/product/11.2.0/xe
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_OWNR=oracle
export PATH=$PATH:$ORACLE_HOME/bin

Para que as alterações tenham efeito, abra a pasta home do usuário padrão no terminal e execute o seguinte comando:

source $HOME/.profile

2) Renomear o arquivo init.ora

      O arquivo init.ora armazena os parâmetros de inicialização do Oracle. Após a instalação do Oracle 11g XE, ao executar o comando startup dentro do SQLPLUS, ele busca pelo arquivo initXE.ora. No entanto, o arquivo está nomeado init.ora, e por isso não será encontrado. Sendo assim, deve-se renomeá-lo.

No diretório /u01/app/oracle/product/11.2.0/xe abra a pasta dbs como administrador e então renomeie o arquivo "init.ora" para "initXE.ora

3) Criar arquivos necessários para as tarefas start, stop, restart, configure

Abra o arquivo /etc/init.d/oracle-xe

sudo nano /etc/init.d/oracle-xe

Acrescente o script abaixo no início do arquivo (depois dos comentários):

# Create /var/lock/subsys/listener and /var/lock/subsys/oracle-xe.
# Files required by Oracle during some action to be service (start, stop, restart, configure).
if [ ! -d "/var/lock/subsys" ]; then(
mkdir /var/lock/subsys
if [ ! -f "/var/lock/subsys/oracle-xe" ]; then
touch /var/lock/subsys/oracle-xe
fi
if [ ! -f "/var/lock/subsys/listener" ]; then
touch /var/lock/subsys/listener
fi
)else(
if [ ! -f "/var/lock/subsys/oracle-xe" ]; then
touch /var/lock/subsys/oracle-xe
fi
if [ ! -f "/var/lock/subsys/listener" ]; then
touch /var/lock/subsys/listener
fi

)fi
# End
# Create by: William C.Canin

Salve e feche o arquivo.


Quarta parte: configurar o Oracle 11g XE


1) Executar o comando de configuração

sudo /etc/init.d/oracle-xe configure

4 coisas precisarão ser configuradas:

1- Porta HTTP para o APEX (Application Express): Observe o valor padrão sugerido e use-o.

2- Porta do listener do SGDB: Observe o valor padrão sugerido e use-o.

3- Senha do SYS e SYSTEM. Após digitar a senha escolhida será requerida a confirmação.

4- Definir se o Oracle XE deve iniciar junto com o sistema operacional.




Se ao executar o comando de configuração ocorrer um erro como este:

/etc/init.d/oracle-xe: line 21: syntax error near unexpected token `)'
/etc/init.d/oracle-xe: line 21: `configure).'

É porque algo etá desconfigurado na sintaxe do script. Neste caso, o termo 'configure).' é um comentário, mas "saltou" para fora da parte de comentário. Basta arrumar isto, abrindo o script como administrador num editor de texto, como pode-se ver abaixo:





Quinta parte: Instalar o SQL Developer


1) Instalar o JDK (Java 8)

sudo apt-get install openjdk-8-jdk

2) Baixar o SQL Developer

Baixar a última versão do SQL Developer neste link. http://www.oracle.com/technetwork/pt/developer-tools/sql-developer/downloads/index.htm

3) Converter para .deb com Alien e instalar

Descompacte o arquivo. Abra a pasta onde está o arquivo .rpm e converta para .deb com o seguinte comando:

sudo alien --scripts sqldeveloper-17.4.0.355.2349-1.noarch.rpm

Execute o arquivo .deb gerado. A instalação será efetuada.

4) Iniciar o SQL Developer

No diretório /opt/sqldeveloper, localizar o arquivo sqldeveloper.sh e executar no terminal

Se for solicitado o diretório do JDK, basta informar o diretório onde está o Java, provavelmente é este:

/usr/lib/jvm/java-8-oracle ou /usr/lib/jvm/java-8-openjdk-amd64

O SQL Developer irá iniciar.




5) Criar atalho

No terminal, dentro do diretório /opt/sqldeveloper:

Abrir com um editor de texto o arquivo sqldeveloper.sh

sudo gedit /opt/sqldeveloper/sqldeveloper.sh

Comentar o que tiver lá e acrescentar o seguinte:

unset -v GNOME_DESKTOP_SESSION_ID
cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*

No diretório /usr/share/applications:

sudo gedit sqldeveloper.desktop

No arquivo de texto, digitar o seguinte:

[Desktop Entry]
Exec=sqldeveloper
Terminal=false
startupNotify=true
Categories=GNOME;Oracle;
Type=Application
Icon=/opt/sqldeveloper/icon.png
Name=Oracle SQL Developer

Após salvar, atualize a lista do menu de aplicativos:

sudo update-desktop-database

Sexta parte: configurar conexão no SQL Developer

Antes de abrir o SQL Developer, deve-se iniciar a base de dados do Oracle XE. Para isso, basta digitar start no menu de aplicações do Mint e clicar em "Start Database" ou "Iniciar banco de dados".

Depois, ao digitar SQL já deve aparecer o Oracle SQL Developer, e então basta abri-lo.

Deve-se criar uma nova conexão, onde você decide o nome, e então entra com o usuário "system" e a senha definida para ele nas configurações. Depois basta clicar em "Connect" ou "Conectar". 




O SQL Developer está pronto para uso.