Automatizando o startup e shutdown das bases de dados Oracle 12c

Quando realizamos a instalação do Oracle Database, são instalados os binários e os referidos bancos de dados (dbca). Ror default os bancos não startam nem fazem o shutdown de maneira autônoma, é preciso entrar no SQLPLUS, rodar o comando shutdown quando necessita desligar o servidor ou o comando startup após o religamento ou reboot do servidor para que o banco seja startado e suas tabelas ficarem acessíveis.

O primeiro passo para automatizar esse processo, é acessando o arquivo /etc/oratab no servidor Linux e chegar algumas informações:

[root@localhost /]# vi /etc/oratab

verificar-oratab-linux

Para cada vez que você roda o DBCA e cria um banco de dados, uma nova linha é adicionada nesse arquivo com o nome do banco. No nosso caso o banco em questão é o cdb1. Note que há uma letra N no final da linha, que indica se o banco será startado quando o utilitário dbstart invocá-lo ou se será desligado quando o comando dbshut for utilizado.

Faça a edição dessa linha para Y e saia do editor do VI, deixando o arquivo desse jeito:

verificar-oratab-linux2

Depois de feito isso, basta configurar um serviço na pasta /etc/init.d com o nome dbora com os comandos abaixo:

#vi /etc/init.d/dbora

Copie e cole o comando abaixo, alterado o ORACLE_HOME para o que está setado no bash_profile do usuário oracle:

[code lang=”sql”]
!/bin/sh
chkconfig: 345 99 10
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1

ORACLE=oracle
PATH=${PATH}:$ORACLE_HOME/bin
export ORACLE_HOME PATH

case $1 in
‘start’)
runuser -l $ORACLE -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME &"
touch /var/lock/subsys/dbora
;;
‘stop’)
runuser -l $ORACLE -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
rm -f /var/lock/subsys/dbora
;;
*)
echo "usage: $0 {start|stop}"
exit
;;
esac

exit
[/code]

No meu ambiente ficou exatamente dessa maneira:

arquivo-etc-initd-dbora

Veja que no ORACLE_HOME eu coloquei o caminho da instalação do ORACLE em meu servidor, isso pode mudar de instalação pra instalação. Para verificar qual seu ORACLE_HOME, basta logar co mo usuário oracle no terminar e digitar o comando env e listar as variáveis.

Após criar o arquivo acima, basta setar as permissões corretas e definir o dbora como um serviço, conforme scripts abaixo:
[code lang=”sql”]
chmod 750 /etc/init.d/dbora
chkconfig –add dbora
[/code]
verificando-servico-e-permissoes

Verificando pelo chkconfig, podemos chegar a conclusão que o dbora foi incluído como serviço e com as opções: 3, 4 e 5 setadas como ON. isso aconteceu pelo fato de a 2ª linha do arquivo dbora conter essas informações: # chkconfig: 345 99 10 !

Para testar o funcionamento do script basta fazer um reboot no seu servidor de testes e atestar o correto desligamento e startup do banco através dos logs do Oracle.

 

Preparando o OracleLinux 7 para instalação do Oracle 12c

Baixe e instale o Oracle Linux 7 diretamente do site da Oracle, após concluir a instalação rode o YUM UPDATE para atualizar todos os pacotes do Sistema operacional.

– Garanta que no arquivo /etc/hosts tem o nome completo da máquina, conforme exemplo abaixo:

[root@localhost ~]# vi /etc/hosts

192.168.0.1        localhost.localdomain         localhost
10.0.12.15       localhost.localdomain  localhost

– Ajustar o SELINUX, editar o arquivo config e alterar a linha SELINUX de enforced para permissive. Logo depois digitar o comando setenforce Permissive:

[root@localhost ~]# vi /etc/selinux/config
[root@localhost ~]# SELINUX = permissive
[root@localhost ~]# setenforce Permissive

Para verificar se as configurações foram aplicadas, digite o comando [root@localhost ~]# sestatus no shell e verificar a saída:

oracle-linux-selinux

 

– Crie os usuários e grupos abaixo:

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin

Crie um usuário chamado oracle e o adicione nos grupos oinstall, dba e oper, conforme script abaixo:
[root@localhost ~]# useradd -u 54321 -g oinstall -G dba,oper oracle

Altere a senha do usuário oracle:

[root@localhost ~]# passwd oracle

Para visualizar os grupos criados, basta digitar: # cat /etc/group

oracle-linux-grupos-criados

 

– Desabilitar o Firewall, em algumas distribuições é preciso rodar o comando somente para o desabilitar o IPTABLES, em outras, tais como Oracle Linux 7 é preciso parar e desabilitar o serviço FIREWALLD:

[root@localhost ~]# service iptables stop
[root@localhost ~]# chkconfig iptables off
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld

– Instale os pré-requisitos da oracle para o banco de dados. Esse pacote cria usuários, ajusta arquivos de configuração e instala os pacotes necessários.

[root@localhost ~]# yum install oracle-rdbms-server-12cR1-preinstall -y
Após rodar o comando acima, execute as instalações abaixo que são um complemento do preinstall:
# From Public Yum or ULN
 yum install binutils -y
  yum install compat-libcap1 -y
  yum install compat-libstdc++-33 -y
  yum install compat-libstdc++-33.i686 -y
  yum install gcc -y
  yum install gcc-c++ -y
  yum install glibc -y
  yum install glibc.i686 -y
  yum install glibc-devel -y
  yum install glibc-devel.i686 -y
  yum install ksh -y
  yum install libgcc -y
  yum install libgcc.i686 -y
  yum install libstdc++ -y
  yum install xhost -y
  yum install unzip -y
  yum install xclock -y
  yum install libstdc++.i686 -y
  yum install libstdc++-devel -y
  yum install libstdc++-devel.i686 -y
  yum install libaio -y
  yum install libaio.i686 -y
  yum install libaio-devel -y
  yum install libaio-devel.i686 -y
  yum install libXext -y
  yum install libXext.i686 -y
  yum install libXtst -y
  yum install libXtst.i686 -y
  yum install libX11 -y
  yum install libX11.i686 -y
  yum install libXau -y
  yum install libXau.i686 -y
  yum install libxcb -y
  yum install libxcb.i686 -y
  yum install libXi -y
  yum install libXi.i686 -y
  yum install make -y
  yum install sysstat -y
  yum install unixODBC -y
  yum install unixODBC-devel -y

– Permitir a execução de programas de modo interativo. Edite o arquivo sshd_config para permitir a emulação de softwares via terminal e deixe as configurações abaixo habilitadas:

[root@localhost ~]# vi /etc/ssh/sshd_config
AllowAgentForwarding yes
AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
PermitTTY yes
PrintMotd yes

Saia do linux e conecte novamente para que as configurações acima façam efeito e digite o comando abaixo com o usuário root, veja que aparecerá uma mensagem informativa logo após o comando ser executado:

[root@localhost ~]# xhost +
access control disabled, clients can connect from any host

E os comandos abaixo com o usuário oracle:

[oracle@localhost ~]# export DISPLAY

[oracle@localhost ~]# DISPLAY=:0.0

Para mais informações visitar o link: http://www.cyberciti.biz/faq/x11-connection-rejected-because-of-wrong-authentication/

–  Alterar o arquivo /etc/security/limits.d/[??]-nproc.conf, sendo que o sinal de interrogação deve ser trocado pelos números que estiverem em seu arquivo:

[root@localhost ~]# vi /etc/security/limits.d/20-nproc.conf

Comentar a linha abaixo:
#*          soft    nproc    1024

E adicionar essa linha no arquivo:
* - nproc 16384

 

 – Adicionar as seguintes linhas no arquivo /etc/security/limits.conf:

[root@localhost ~]# vi /etc/security/limits.conf

oracle        soft         nofile      1024
oracle        hard       nofile      65536
oracle        soft         nproc      16384
oracle        hard       nproc      16384
oracle        soft         stack       10240
oracle       hard        stack       32768

 

– Criar o diretório de instalação do Oracle e dar as devidas permissões:

[root@localhost ~]# mkdir -p /u01/app/oracle/product/12.1.0.2/db_1
[root@localhost ~]# chown -R oracle:oinstall /u01
[root@localhost ~]# chmod -R 775 /u01

10º – Adicionar o conteúdo abaixo no bash_profile do usuário Oracle (/home/oracle/.bash_profile):

[root@localhost ~]# vi /home/oracle/.bash_profile

# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=nomedasuamaquina.nomedoseudominio
export ORACLE_UNQNAME=cdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2/db_1
export ORACLE_SID=cdb1

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

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

11º – Copiar a instalação do oracle (parte 1 e 2) e descompactar:

[root@localhost ~]# unzip linuxamd64_12102_database_1of2.zip
[root@localhost ~]# unzip linuxamd64_12102_database_2of2.zip

 

12º – Acessar a pasta database (# cd /database ) e listar os arquivos com o ls -l

 

Por aqui terminamos a configuração do S.O. Oracle Linux para suportar a instalação do SGBD Oracle. No próximo artigo daremos início á instalação do banco de dados através do comando ./runInstaler de dentro da pasta database.

Habilitar automaticamente a placa de rede no Centos / Oracle Linux

Na configuração padrão, a placa de rede do S.O. CentOS ou Oracle Linux não é habilitada automaticamente após o boot do servidor, sendo necessário usar o comando IFUP para subir a interface de rede toda vez que houver desligamento ou reboot do servidor.

Uma maneira simples de automatizar esse processo é editando o arquivo de configuração da placa de rede e habilitar a opção ONBOOT com o valor YES ao invés de NO:

Rede_oracleLInux

Editando o arquivo com o VIM, localiza a opção ONBOOT, basta trocar o valor no por yes e salvar as configurações e sair da edição do arquivo:

Rede_oracleLInux

Após realizar essa configuração, a placa de rede subirá automaticamente a cada boot.

 

 

Listar tamanho de backups dos bancos de dados

Vira e mexe precisamos listar o tamanho dos backups de banco de dados da nossa instância, com a demanda recorrente por essa informação precisei criar um script que lista o nome da base, tamanho com e sem compressão, caminho onde o arquivo foi salvo, taxa de compressão, dentre outros.

O script abaixo é foi utilizado e retorna inúmeras informações úteis:

USE msdb
GO
SELECT
bs.database_name as ‘Database’,
bm.physical_device_name as ‘Caminho’,
CAST(CAST(bs.backup_size / 1000000 AS BIGINT) AS VARCHAR(100)) + ‘ MB’ AS ‘Tamanho do Backup’,
CAST(CAST(compressed_backup_size / 1000000 as BIGINT) AS VARCHAR(100)) + ‘ MB’ AS ‘Tamanho do Backup Comprimido’,
bs.backup_start_date,
CASE bs.[type] WHEN ‘D’ THEN ‘Full’
WHEN ‘I’ THEN ‘Differential’
WHEN ‘L’ THEN ‘Transaction Log’
END AS BackupType,
backup_size / compressed_backup_size as ‘Taxa de compressão’
FROM msdb.dbo.backupset bs
JOIN msdb.dbo.backupmediafamily bm
ON bs.media_set_id = bm.media_set_id
ORDER BY database_name ASC, backup_start_date DESC
GO

Output do comando:

Backup

Como pode ser visto, o backup do banco BDTESTE tem um ganho significativo de economia de espaço quando utiliza a compressão de dados, sendo que seu tamanho cresce naturalmente ao passar dos dias, conforme utilização por parte dos sistemas/usuários.

Carregar mais