CentOS, Oracle E SQL Server  

Publicado em fevereiro/2020 (Instalação executada em outubro/2018)


Frequentemente necessitamos de um ambiente para fazer alguns testes ou mesmo para estudar, e neste caso utilizei uma configuração com CentOS, Oracle e SQL Server em um desktop que estava encostado (processador Intel CoreI3 e 8GB de RAM). Adicionalmente foram instalados o TeamViewer para acesso remoto, servidor FTP e o Oracle Virtual Box para instalação de máquinas virtuais.

Instalação mínima, selecionado apenas ferramentas administrativas. Opções utilizadas:

  • ✔ Teclado: Português (Brasil, sem teclas mortas)
  • ✔ Rede: enp3s0 dhcp
  • ✔ Host: i3centos
  • ✔ Sem política de segurança

Hardware com 3 HDs instalados, sendo 2 discos de 500GBytes e 1 disco de 1000GBytes, totalizando aproximadamente 2TBytes particionados conforme tabela a seguir:

Particionamento CentoOS


Adicionada uma área de SWAP de 20GBytes, sendo “/mssql” e “/u01” respectivamente para as bases Microsoft SQL Server e Oracle.

SELINUX setado como "permissive" (SELINUX=permissive), pois trata-se de requisito instalação Oracle. O arquivo de configuração encontra-se em “/etc/selinux/config” (atenção para não errar, pois impede o boot normal em caso de erro!).

Instalado o KDE conforme mostrado a seguir:

$yum update
$yum groupinstall "KDE Plasma Workspaces"
$startx #inicializa a GUI (Graphical User Interface)

Versão utilizada: "https://download.teamviewer.com/download/version_12x/teamviewer.i686.rpm".
Instalação utilizando o YUM:

$yum install teamviewer_12.0.93330.i686.rpm

Alterar o boot para iniciar no modo gráfico para caso de "reboot" remoto e ter o TeamViewer disponível sem precisar acessar a máquina localmente:

$systemctl set-default graphical.target

Se quiser voltar para o modo texto:

$systemctl set-default multi-user.target

Instalada a versão 11g, observando que no particionamento criamos a partição “/u01” para instalação do Oracle.

Usuários e grupos necessários (usuário root):

$ groupadd -g 501 oinstall
$ groupadd -g 502 dba
$ groupadd -g 503 oper
$ groupadd -g 504 asmadmin
$ groupadd -g 506 asmdba
$ groupadd -g 505 asmoper
$ useradd -u 502 -g oinstall -G dba,asmdba,oper oracle
$ passwd oracle

Pastas e permissões onde será instalado o Oracle (usuário root):

$ mkdir -p /u01/app/oracle/product/11.2.0/db_1
$ chown -R oracle:oinstall /u01
$ chmod -R 775 /u01

Inserir a identificação do nome do host no arquivo de configuração “/etc/hosts” (usuário root), responsável pela associação “ip-nome”, neste exemplo:

127.0.0.1   i3centos i3centos.localhost localhost localhost.localdomain
::1         i3centos i3centos.localhost localhost localhost.localdomain
192.168.1.39 i3centos i3centos.localhost localhost localhost.localdomain

Para setar as variáveis de ambiente logar com o usuário oracle criado e ajustar o .bash_profile.

vi .bash_profile
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=i3centos; export ORACLE_HOSTNAME
ORACLE_UNQNAME=desemp; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=desemp; export ORACLE_SID

PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

Atenção para alterar o hostname (ORACLE_HOSTNAME , “i3centos” neste caso) e a identificação que for usar para o banco (ORACLE_UNQNAME e ORACLE_SID, “desemp” neste caso). Observar ainda que está sendo utilizado o caminho padrão da instalação do oracle, por isso foi provisionada a partição “/u01” no início do processo, caso for utilizar um caminho diferente não esquecer de ajustar todas as variáveis de ambiente.

Precisamos também ajustar alguns parâmetros do sistema operacional necessários para instalação do oracle (usuário root). Vamos editar o arquivo de configuração “/etc/sysctl.conf” e inserir ou ajustar os paramêtros como mostrado a seguir:

fs.suid_dumpable = 1
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586

Aplicar as alterações:

$ /sbin/sysctl -p

Adicionar ou alterar o arquivo de configuração “/etc/security/limits.conf” como mostrado a seguir:

oracle              soft    nproc   16384
oracle              hard    nproc   16384
oracle              soft    nofile  4096
oracle              hard    nofile  65536
oracle              soft    stack   10240

Adicionar ou alterar o arquivo de configuração "/etc/security/limits.d/90-nproc.conf" como abaixo:

* - nproc 16384

Vale ressaltar que se o arquivo existir e tiver a configuração “* soft nproc 1024”, esta deve ser substituída para mostrada acima.

Instalar os pacotes que são pré-requisitos para a instalação do oracle

$ yum install binutils-2*x86_64*
$ yum install glibc-2*x86_64* nss-softokn-freebl-3*x86_64*
$ yum install glibc-2*i686* nss-softokn-freebl-3*i686*
$ yum install compat-libstdc++-33*x86_64*
$ yum install glibc-common-2*x86_64*
$ yum install glibc-devel-2*x86_64*
$ yum install glibc-devel-2*i686*
$ yum install glibc-headers-2*x86_64*
$ yum install elfutils-libelf-0*x86_64*
$ yum install elfutils-libelf-devel-0*x86_64*
$ yum install gcc-4*x86_64*
$ yum install gcc-c++-4*x86_64*
$ yum install ksh-*x86_64*
$ yum install libaio-0*x86_64*
$ yum install libaio-devel-0*x86_64*
$ yum install libaio-0*i686*
$ yum install libaio-devel-0*i686*
$ yum install libgcc-4*x86_64*
$ yum install libgcc-4*i686*
$ yum install libstdc++-4*x86_64*
$ yum install libstdc++-4*i686*
$ yum install libstdc++-devel-4*x86_64*
$ yum install make-3.81*x86_64*
$ yum install numactl-devel-2*x86_64*
$ yum install sysstat-9*x86_64*
$ yum install compat-libstdc++-33*i686*

Neste momento seria interessante reiniciar o sistema para confirmar se nada deu errado, e no momento de carregar a GUI utilizar o usuário “oracle”, para iniciarmos finalmente a instalação do banco de dados.

No link http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html podemos baixar os arquivos para instalação do oracle, neste caso a versão 11G.

Utilizar o usuário oracle para os procedimentos de instalação relacionados a partir deste momento.
Descompactar os arquivos de instalação:

$ unzip linux.x64_11gR2_database_1of2.zip
$ unzip linux.x64_11gR2_database_1of2.zip

Executar o programa de instalação do oracle:

$ /home/oracle/Downloads/database/runInstaller

Observar que o caminho vai depender de onde os arquivos foram descompactados.

Print das telas durante a instalação do Oracle:


Não esquecer de anotar o URL do Database Control, no caso "http://i3centos:1158/em", e executar os scripts de configuração quando solicitado:

$ /u01/app/oraInventory/orainstRoot.sh
$ /u01/app/oracle/product/11.2.0/db_1/root.sh

Neste momento é necessário liberar a porta 1521 no firewall para que possamos conectar:

$ firewall-cmd --zone=public --add-port=1521/tcp --permanent
$ firewall-cmd --zone=public --add-port=1158/tcp --permanent
$ firewall-cmd --reload

Conexões com o "SQL Developer" e via "Enterprise Manager":


Criação da Tabespace:

CREATE BIGFILE
TABLESPACE "DESEMP"
DATAFILE '/u01/app/oracle/oradata/desemp/desmp'
SIZE 100M
AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED
LOGGING EXTENT
MANAGEMENTLOCAL
SEGMENT SPACE
MANAGEMENT AUTO

Criar usuários desejados:


Se reinciar a máquina não esquecer de subir todos os serviços Oracle e liberar as portas no firewall (usuário "oracle"):

[oracle@i3centos ~]$ sqlplus / as sysdba
SQL> startup

Após subir a instancia com sucesso subir o listener

[oracle@i3centos ~]$ lsnrctl start

Se desejar testar o listener:

[oracle@i3centos ~]$ tnsping desemp

Abrir as portas no firewall (aqui como root):

[root@i3centos ~]# iptables -I INPUT -p tcp --dport 1521 -j ACCEPT
[root@i3centos ~]# iptables -I OUTPUT -p tcp --dport 1521 -j ACCEPT
[root@i3centos ~]# iptables -I INPUT -p tcp --dport 1158 -j ACCEPT
[root@i3centos ~]# iptables -I OUTPUT -p tcp --dport 1158 -j ACCEPT

Finalmente subir o enterprise manager

[oracle@i3centos ~]$ emctl start dbconsole

Subir o serviço de FTP para facilitar a transferência de arquivos

$ yum install vsftpd ftp -y

Ajustar o arquivo de configuração “/etc/vsftpd/vsftpd.conf” ajustando os parâmetros como mostrado a seguir:

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES

Liberar o tráfego na porta 21 para o serviço FTP no firewall:

firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-service=ftp
firewall-cmd –reload

Habilitar e iniciar o serviço:

systemctl enable vsftpd
systemctl start vsftpd

Apesar de não ser necessário, podemos criar o usuário para associar ao SQL Server:

[root@i3centos ~]# adduser mssql
[root@i3centos ~]# passwd mssql
[root@i3centos ~]# groupadd mssql

Ajustar as permissões do particionamento onde colocaremos a base para este usuário:

[root@i3centos ~]# chown mssql: mssql /mssql/
[root@i3centos ~]# chmod 777 /mssql

Instalação do serviço MSSQL:

[root@i3centos ~]# curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
[root@i3centos ~]# yum install -y mssql-server

Escolher a versão a ser instalada e fazer as configurações de usuário e senha:

[root@i3centos ~]# /opt/mssql/bin/mssql-conf setup

Liberar a porta do SQL Server no firewall:

[root@i3centos ~]# firewall-cmd --zone=public --add-port=1433/tcp --permanent
[root@i3centos ~]# firewall-cmd –reload

Instalar as ferramentas do SQL Server:

[root@i3centos ~]# curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
[root@i3centos ~]# yum remove unixODBC-utf16 unixODBC-utf16-devel
[root@i3centos ~]# yum install -y mssql-tools unixODBC-devel

Configurar as variáveis de ambiente do usuário “mssql”, permitindo que as ferramentas sejam executadas sem especificar o caminho completo:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

Para a a conexao local fazemos:

sqlcmd -S localhost -U SA -P 'oraculo@2018'

Seria intereressante ainda mover o “tempdb” para as partição que criamos para as bases de dados, na consulta a seguir podemos verificar os nomes de arquivo lógicos do banco de dados tempdb e o seu local atual no disco:

SELECT name, physical_name AS CurrentLocation
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');

Obsevamos que por padrão encontra-se no seguinte caminho:

/var/opt/mssql/data/tempdb.mdf   mudar para /mssql/bases

Vamos então alterar o local de cada arquivo usando ALTER DATABASE.

ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = '/mssql/bases/tempdb.mdf');
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = '/mssql/bases/templog.ldf');
                

Para efetivar a alteração precisamos reiniciar sql server:

systemctl stop mssql-server  parar o serviço
systemctl start mssql-server  reiniciar o serviço
systemctl status mssql-server  verificar o serviço
                
cd /etc/yum.repos.d
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
yum --enablerepo=epel install dkms
yum groupinstall "Development Tools"
yum install kernel-devel

Verificar as versões disponíveis no repositório YUM e instalar a mais recente:

yum search VirtualBox

Para cada usuário que for executar uma máquina virtual:

usermod -a -G vboxusers username


Podemos subir um Windows para trabalhar como servidor WEB suportando o IIS (Internet Information Services) , por exemplo: