quarta-feira, 30 de março de 2016

Desativar SELinux no CentOS 7 64 bits

Acesse o arquivo: vi /etc/sysconfig/selinux e altere a linha abaixo:

de:

SELINUX=enforcing

para:

SELINUX=disabled

Execute o comando abaixo para o parâmetro acima seja carregado.

setenforce 0

Verifique se funcionou executando o comando abaixo. Deve retornar o valor "Disabled"

getenforce


Instalar Client Oracle CentOS 7 64 bits

Realizar a instalação dos pacotes abaixo com o comando rpm -ivh

# rpm -ivh oracle-instantclient-basic-10.2.0.4-1.i386.rpm
# rpm -ivh oracle-instantclient-devel-10.2.0.4-1.i386.rpm
# rpm -ivh oracle-instantclient-sqlplus-10.2.0.4-1.i386.rpm

Após a instalação os arquivos ficarão armazenados nos diretórios:

- Código Fonte em: /usr/include/oracle
- Binários e bibliotecas em: /usr/lib/oracle

Após a instalação, verifiquei que ainda não era possível executar, por exemplo, o SQLPlus, provavelmente por não ter criado a variável ORACLE_HOME e ORACLE_BASE no PATH do meu usuário no Linux. Identifiquei que o Linux conseguiu localizar o binário no /usr/bin/sqlplus, mas retornando a mensagem abaixo:

-bash: /usr/bin/sqlplus: /lib/ld-linux.so.2: bad ELF interpreter: Arquivo ou diretório não encontrado

Inseri as variáveis abaixo no .bash_profile:

# VARIAVEIS ORACLE CENTOS 7
export ORACLE_BASE="/usr/lib/oracle/10.2.0.4"
export ORACLE_HOME="/usr/lib/oracle/10.2.0.4/client"
export LD_LIBRARY_PATH="/usr/lib/oracle/10.2.0.4/client/lib"
export NLS_LANG=ENGLISH.WE8ISO8859P1
export NLS_DATE_FORMAT='DD/MM/RRRR'
export TNS_ADMIN="/etc/tnsnames.ora"

PATH=$PATH:$HOME/bin:$ORACLE_BASE:$ORACLE_HOME:$LD_LIBRARY_PATH:$TNS_ADMIN

Mesmo após ter inserido as variáveis acima, a mensagem de erro continuava. 

Identifiquei que essa mensagem ocorria, devido ao fato que os rpms do client Oracle instalado eram de 32 bits e o CentOS 7 era de 64 bits. A instalação minima do CentOS não instala a glibc de 32 bits, somente a de 64 bits, com isso, os programas de 32 bits podem apresentar a mensagem acima. Devido a isso, realizei a instalação da glic 32 bits, conforme as linhas abaixo:

yum install glibc.i686
yum install glibc-devel.i686
yum install glibc-static.i686

Após a instalação, consegui executar o sqlplus normalmente:

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Mar 30 10:03:32 2016

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Enter user-name:

Falta copiar o arquivo tnsnames.ora para o /etc

Após isso, consegui me conectar no Oracle nas TNS listados no arquivo tnsnames.ora

domingo, 27 de março de 2016

Oracle - Procedimentos, Comandos e Selects Úteis



Post Oracle - Procedimentos, Comandos e Selects Úteis Resenha feita por Breny Ricardo Martins Coelho em 28/03/2016. Muito útil no dia a dia Conteúdo deste post foi validado! Classificação: 5

ASM:


- Verificar espaço disponível dentro do ASM

Data Base:

- Identificando a versão do banco de dados Oracle Server

Funções:

- Deletando uma função

Tablespaces:

- Dropar uma Tablespace
- Informa as Tablespaces existentes
- Verifica o Tamanho das Tablespaces
- Informa o espaço ocupado nas Tablespaces system e sysaux
- Colocar Tablespace em modo off line
- Verifica quais objetos estão crescendo
- Verifica o espaço livre nas Tablespaces
- Verifica se a Tablespace está gerenciada localmente
- Gerenciando Tablespace TEMP

ASM

Verificar espaço disponível dentro do ASM

Logar com o usuário: grid para executar o comando abaixo:
asmcmd lsdg


Data Base

Identificando a versão do banco de dados Oracle Server

COL PRODUCT FORMAT A35
COL VERSION FORMAT A15
COL STATUS FORMAT A15
SELECT * FROM PRODUCT_COMPONENT_VERSION;


Funções

Deletando uma função

Execute o comando abaixo para deletar uma função específica.


DROP FUNCTION OWNER_FUNCTION.FUNCTION_NAME;

Tablespaces

Dropar uma Tablespace

DROP TABLESPACE TABLESPACE_NAME INCLUDING CONTENTS AND DATAFILES;

Informa as Tablespaces existentes

SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;

Verifica o Tamanho das Tablespaces

SET LINESIZE 100
COLUMN TABLESPACE FORMAT A15
select
t.tablespace,
t.totalspace as " Totalspace(MB)",
round((t.totalspace-fs.freespace),2) as "Used Space(MB)",
fs.freespace as "Freespace(MB)",
round(((t.totalspace-fs.freespace)/t.totalspace)*100,2) as "% Used",
round((fs.freespace/t.totalspace)*100,2) as "% Free"
from
(select round(sum(d.bytes)/(1024*1024)) as totalspace,
d.tablespace_name tablespace
from
dba_data_files d group by d.tablespace_name) t,
(select round(sum(f.bytes)/(1024*1024)) as freespace,
f.tablespace_name tablespace
from dba_free_space f group by f.tablespace_name) fs
where
t.tablespace=fs.tablespace order by t.tablespace;

Informa o espaço ocupado nas Tablespaces system e sysaux

Observação

  • As colunas USED_SPACE e TABLESPACE_SIZE são mostrados em blocos de dados, devido a isso, é necessário multiplicar o valor informado nas duas colunas pelo valor padrão do tamanho do bloco Oracle, que é normalmente 8192.
  • O interessante a ser notar nos resultados da view DBA_TABLESPACE_USAGE_METRICS é que ela não leva em conta somente a soma do tamanho atual dos arquivos de dados que compõem uma tablespace, mas o tamanho máximo que eles poderão atingir de acordo com a configurações de cada um, ou seja, dependerá também do valor de MAXSIZE caso a opção AUTOEXTEND do arquivo de dados esteja habilitada.
Na instrução abaixo, notar que foi selecionada somente duas tablespaces (system, sysaux), mas poderia ser qualquer uma existente no Oracle.

SELECT *
FROM dba_tablespace_usage_metrics
WHERE tablespace_name in ('SYSTEM', 'SYSAUX')
ORDER BY 1;



Colocar Tablespace em modo off line

ALTER TABLESPACE TABLESPACE_NAME OFFLINE;

Verifica quais objetos estão crescendo

Observação

A instrução abaixo deve ser executada a cada hora para se ter a idéia do que está crescendo.

SELECT SEGMENT_NAME, EXTENTS, BYTES, MAX_EXTENTS, NEXT_EXTENT, SEGMENT_TYPE FROM DBA_SEGMENTS WHERE OWNER = 'SYS' ORDER BY BYTES DESC;

Verifica o espaço livre nas Tablespaces

SELECT TABLESPACE_NAME, SUM(BYTES) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME;


Verifica se a Tablespace está gerenciada localmente

SELECT TABLESPACE_NAME, EXTENT_MANAGEMENT FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'SYSTEM';

Gerenciando Tablespace TEMP

Adicionando um tempfiles

ALTER TABLESPACE TABLEPSACE_TEMP_NAME ADD TEMPFILE 'ENDEREÇO_DATA_FILE' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 512M;

Deletando um tempfile

ALTER DATABASE TEMPFILE 'ENDEREÇO_DATA_FILE' OFFLINE;
ALTER DATABASE TEMPFILE 'ENDEREÇO_DATA_FILE' DROP;
SELECT FILE_NAME, TABLESPACE_NAME FROM DBA_TEMP_FILES

O datafile que você excluiu, não pode ser mais listado
Acesse o diretório no sistema operacional onde o datafile está armazenado e a princípio mova-o para outro diretório;
Se possível, realize um shutdown, seguido de um startup na instância com o objetivo de verificar se o Oracle retornará algum erro, caso não retorne, delete o arquivo movido.