quinta-feira, 14 de junho de 2018

Os três principais Shells do Unix

Vou tirar um tempinho hoje para escrever um pouco sobre os 3 principais shells na maioria dos Sistemas Unix, hoje há algumas controversas pelo crescimento do Linux que utiliza o Bash Shell, porem o Bash não deixa de ser uma evolução do Bourne Shell que é um dos principais no qual vou comentar, mas vamos lá. Esses três Shell são:

  • Bourne Shell (AT&T shell)
  • C Shell (Berkeley shell)
  • Korn Shell ( Um superconjunto do Bourne Shell
Esses shells se comportam praticamente da mesma maneira quando executados de forma interativa, mas possuem algumas diferenças de sintaxe e eficiência quando usados como linguagens de scripts.

O Bourne Shell é o shell padrão na maioria dos Unix's,  muito utilizado para administrar o sistema. A maioria dos scripts de administração de sistema, como os scripts rc start / stop e shutdown são escritos em Bourne Shell, é o shell padrão também utilizado pelo root quando o sistema esta no estado de single mode. Esse Shell foi escrito pela AT&T e é conhecido por ser um shell consistente, compacto e rapido. O símbolo do prompt default do Bourne Shell é um sinal de dólar ($).

O C Shell foi desenvolvido em Berkeley e adicionou vários recursos, como o history de linha de comando, aliases, aritmética integrada, nome de arquivo completo, e controles de jobs. O C Shell tem algumas vantagens sobre o Bourne Shell na interactividade, mas os administradores preferem o Bourne Shell para scripts, porque os shells scripts do Bourne são mais simples e mais rápidos do que os mesmos scripts escritos no C Shell. O símbolo do prompt default do C Shell é um sinal de percentagem (%).

O Korn Shell é um superconjunto do Bourne Shell, escrito por David Korn na AT&T. Vários recursos foram adicionados a esse shell muito alem do C Shell. Os recursos do Korn Shell incluem um history evitável, aliases, funções, wildcards (curingas) de expressões regulares, aritmética incorporada, controle de Jobs, coprocessamento e recursos de debug. O Bourne Shell é quase totalmente compatível com o Korn Shell, portanto, programas do Bourne Shell rodarão normalmente nesse Shell. O símbolo do prompt default do Korn Shell é um sinal de dollar também ($).

No proximo post, vou descrever um pouco da historia do Shell.

quarta-feira, 13 de junho de 2018

Backup e Restore utilizando o I/O padrão (STDIO) - Informix

O Ontape permite utilizar o STDIO para operações físicas de backup e restore. Durante o backup, o ontape pode gravar dados no STDOUT. Durante o restore, o ontape pode ler o STDIN. O ontape utiliza pipes como um mecanismo de buffer de memória fornecido pelo sistema operacional para executar backup e restore utilizando o STDIO. As vantagens de utilizar o STDIO com o ontape são:
  • Nenhuma operação de leitura ou gravação para mídia de armazenamento é necessária (se você decidir direcionar diretamente os dados de  backup para uma operação de restauração).
  • Você pode usar os utilitários do sistema operacional para compactar os dados de backup antes do armazenamento.
  • Você pode enviar os dados de backup por meio de qualquer utilitário.
  • Você pode criar um servidor de banco de dados, restaurando imediatamente os dados em outro servidor, como configurar um servidor secundário (HDR) ou (RSS).
Configure o valor do parametro TAPEDEV como STDIO.

Os parâmetros de configuração TAPEBLK e TAPESIZE não são utilizados para fazer backup usando o STDIO. No entanto, o valor de TAPEBLK ainda é usado para a transferencia de dados entre o servidor de banco de dados e o processo ontape. O parametro TAPESIZE não é usado, porque a capacidade de STDIO é assumida como ilimitada.

O backup utilizando o STDIO é gravado diretamente no STDOUT. Portanto, o fluxo de dados precisa redirecionar para um arquivo. Caso contrario, o fluxo de dados sera enviado para a tela. Ao redirecionar o STDOUT para um arquivo, certifique-se que há espaço suficiente disponível no file system. Mensagens de erros e informações são gravadas no STDERR.

ontape -s -L 0 > /informix/backup/archive_L0


Executa o backup de nivel 0 utilizando o STDIO. O stdout do comando ontape é redirecionado para um arquivo chamado archive_L0 no diretório /informix/backup. O comando é o mesmo que o backup físico padrão ontape, exceto neste cenário, o sistema operacional manipula o fluxo de dados para o arquivo de saída.




ontape -s -L 0 | compress -c > /informix/backup/archive_L0

Executa backup de nivel 0, em que o comando ontape é redirecionado para um canal e os dados são compactados antes de serem gravados nos nomes de arquivos archive_L0 no diretorio /informix/backup.

O Backup e a restauração do lógico log não são compatíveis com o ontape usand o STDIO. No entanto, se houver backups de lógico logs padrao disponíveis, eles poderão ser restaurados usando o comando ontape -l após uma restauração fisico do ontape utilizando o STDIO. Alem disso, o salvamento de lógico logs não é possivel durante o processo de restauração. Portanto voce deve salvar manualmente todos os logs usando o comando ontape -S antes de executar uma restauração utilizando STDIO.

Durante a restauração padrão, o ontape imprime informações para stdout, mas com STDIO, as mensagens são omitidas. Da mesma forma, após restaurar um backup de nível 0,  o ontape solicita a restauração de backups de nível 1 e nível 2. Ma durante uma restauração para STDIO, esses prompts são omitidos. Em vez disso, o fluxo de entrada é varrido para mais dados. Se mais dados forem encontrados, o próximo nível de backup poderá ser restaurado. Portanto, todos os dados necessários devem fazer parte do fluxo de entrada para o comando de restauração, e os dados devem estar na ordem correta. 

cat /informix/backup/archive_L0 /informix/backup/archive_L1 | ontape -p

A função STDIO permite clonar um servidor de banco de dados Informix ou configurar rapidamente o HDR executando um backup simultâneo  para stdout e restaurando de stdin. Se o backup e restauração forem feitos apenas para duplicar um servidor de banco de dados Informix, use a opção -F para evitar que o archive seja salvo. Durante o backup e a restauração simultâneos, embora um backup seja feito, ele não pode ser restaurado posteriormente porque o backup não é salvo em um dispositivo de armazenamento; os dados de backup serão transferidos para outro sistema através de um pipe e, usando uma operação rsh, os dados serão imediatamente restaurados para outro sistema.

ontape -s -L 0 -F | rsh serverB "ontape -p"

O backup ontape nivel 0 é executado na maquina local. Os dados são canalizados para stdout em uma máquina remota chamada serverB usando o utilitário do sistema operacional rsh e uma restauração física é executada na máquina remota.
O Comando ontape ignora a opção -F se TAPEDEV não estiver configurado como STDIO. A opção ontape -F com a configuração STDIO significa que as informações do arquivo não são registradas nas paginas reservadas.

quarta-feira, 6 de junho de 2018

ORACLE - OPTIMIZER_INDEX_COST_ADJ

PROPRIEDADES, DESCRIÇÃO

Parameter type, integer
Default value, 100
Modifiable, ALTER SESSION - ALTER SYSTEM
Range of Values, 1 to 10000

OPTIMIZER_INDEX_COST_ADJ - permite ajustar o comportamento do otimizador para que a seleção do caminho de acesso seja mais ou menos amigável ao índice, ou seja, tornar o otimizador mais ou menos propenso a selecionar um caminho de acesso ao índice em uma varredura completa da tabela.

O padrão para esse parâmetro é 100%, no qual o otimizador avalia os caminhos de acesso ao índice no custo regular. Qualquer outro valor faz com que o otimizador avalie o caminho de acesso nessa porcentagem do custo regular. Por exemplo, uma configuração  de 50 faz com que o caminho de acesso ao índice pareça tao caro quanto o normal.

segunda-feira, 28 de maio de 2018

Status e informações sobre o Banco de Dados Oracle


conn sys/oracle as sysdba ou sqlplus sys/oracle as sysdba

Localizar o spfile

SHOW PARAMETER spfile;

no prompt do SO

vi /opt/oracle/product/12cR1/db/dbs/spfileajmsolutions.ora

Diferenciar o tipo de escopo com o SPFILE - SPFILE fica ativo somente em memória

SHOW PARAMETER db_cache_size;

ALTER SYSTEM SET db_cache_size=32m SCOPE=memory;

SHOW PARAMETER db_cache_size;

SHUTDOWN IMMEDIATE;

STARTUP;

SHOW PARAMETER db_cache_size

Diferenciar o tipo de escopo com o SPFILE - SPFILE fica ativo a partir do próximo startup


ALTER SYSTEM SET db_cache_size=32m SCOPE=spile;

SHOW PARAMETER db_cache_size;

SHUDOWN IMMEDIATE;

STARTUP;

SHOW PARAMETER db_cache_size;

Diferenciar o tipo de escopo com o SPFILE - BOTH (fica ativo na memória e a partir do proximo startup


ALTER SYSTEM SET db_cache_size=32m SCOPE=both;

SHOW PARAMETER db_cache_size;

SHUTDOWN IMMEDIATE;

STARTUP;

SHOW PARAMETER db_cache_size;

Alguns parâmetros necessitam de um SHUTDOWN


ALTER SYSTEM SET log_archive_start=true; /*(erro)*/

ALTER SYSTEM SET log_archive_start=true SCOPE=spfile;

ALTER SYSTEM SET sag_max_size=256m SCOPE=spfile;

SHUTDOWN IMMEDIATE;

STARTUP;

SHOW PARAMETER SGA_MAX_SIZE;

SHOW PARAMETER log_archive_start;

Verificar estados do Banco / Mudar os estados do banco

SHUTDOWN IMMEDIATE;

STARTUP NOMOUNT;

SELECT instance_name, host_name
FROM v$instance;

SELECT name, open_mode
FROM v$database; /*(erro)*/

STARTUP MOUNT; /*(erro)*/

ALTER DATABASE MOUNT;

SELECT name, open_mode
FROM v$database;

SELECT owner, table_name
FROM dba_tables
WHERE owner = 'AJMSOLUTIONS'; /*(erro)*/

ALTER DATABASE OPEN;

SELECT owner, table_name
FROM dba_tables
WHERE owner = 'AJMSOLUTIONS';

ALTER DATABASE MOUNT; /*(erro)*/

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

Subir o Banco como somente leitura


ALTER DATABASE OPEN READ ONLY;

CREATE TABLE teste (id number); /*(erro)/

SHUTDOWN IMMEDIATE;

STARTUP;

CREATE TABLE teste (id number);

Subir Banco em modo restrito 

conn sys/oracle as sysdba;

SHUTDOWN IMMEDIATE;

STARTUP RESTRICT;

abrir uma sessão com ajmsolutions /*(erro)*/

sqlplus ajmsolutions/ajmsolutions

SHUTDOWN IMMEDIATE;

STARTUP;

abrir 2 sessões uma com o sys e outra com o ajmsolutions
na sessão do sys

Matar sessão dos usuários

na sessão do sys

SELECT sid, serial#, username
FROM v$session
WHERE username IS NOT NULL;

ALTER SYSTEM KILL SESSION 'sid,serial#';

ir na sessão do ajmsolutions e tentar fazer alguma coisa


Para testar os vários tipos de shutdown

Abrir duas sessões uma com o SYS e outra como AJMSOLUTIONS

na sessão do SYS

SHUTDOWN;

---------------------------------------

na sessão do AJMSOLUTIONS

CREATE TABLE xpto (ID NUMBER);
INSERT INTO xpto (1);

COMMIT;

Observar o que acontece na sessão do SYS.

exit

---------------------------------------

na sessão SYS

STARTUP;

--------------------------------------

Abrir a sessão do AJMSOLUTIONS

--------------------------------------

na sessão do SYS

SHUTDOWN TRANSACTIONAL

---------------------------------------

na sessão do AJMSOLUTIONS

INSERT INTO XPTO VALUES (1);
COMMIT;

---------------------------------------
na sessão do SYS

Observar o que acontece na sessão do SYS

STARTUP;

SHUTDOWN ABORT;

STARTUP FORCE;

Arquivo de alerta / rastreamento

SHOW PARAMETER background_dump_dest   /* (arquivo de alerta/arquivo de rastreamento - processo de segundo plano) */

No Sistema Operacional

#> vi /opt/oracle/diag/rdbms/ajmsolutions/AJMSOLUTIONS/trace/alert_AJMSOLUTIONS.log

#> cd /opt/oracle/diag/rdbms/ajmsolutions/AJMSOLUTIONS/trace

#> ls -a

Listar todas as views de desempenho dinâmico


SELECT name
FROM v$fixed_table
WHERE name LIKE 'V$%'
ORDER BY 1;

Listar todas as views de dicionário de dados DBA_

SELECT object_name
FROM dba_objects
WHERE object_name LIKE 'DBA_%'
ORDER BY 1;

Listar todas views de dicionários de dados ALL_

SELECT object_name
FROM dba_objects
WHERE object_name LIKE 'ALL_%'
ORDER BY 1;

Listar todas as views de dicionário de dados USER_


SELECT object_name
FROM dba_objects
WHERE object_name LIKE 'USER_%'
ORDER BY 1;







quinta-feira, 24 de maio de 2018

Gerenciamento de dados no Oracle


Localizar arquivo de parametros


SHOW PARAMETER SPFILE;

Localizar arquivo de alerta


SHOW PARAMETER BACKGROUND_DUMP_DEST

Localizar arquivos de Dados (DATAFILE)


SELECT name "Loc_Nome_Arq_Dados"
FROM v$datafile;

Localizar arquivos de REDO LOG


SELECT member "Loc_Nome_Arq_Redo_Log"
FROM v$logfile;

Localizar arquivos de controle

SELECT name "Loc_Nome_Arq_Control"
FROM v$controlfile;

Quantidades de leituras e escritas dos arquivos de dados

SELECT d.tablespace_name tablespace, d.file_name arquivo_dados, f.phyrds leituras, f.phywrts escritas
FROM v$filestat f, dba_data_files d
WHERE f.file# = d.file_id
ORDER BY f.phyrds desc;

Gerenciamento de Memória no Oracle

Gerenciamento automático da memória

show parameter memory_target;

show parameter sga_target;

show parameter shared_pool_size;

Desabilitar o gerenciamento automatico

alter system set memory_target=0;

alter system set sga_target=0;

show parameter shared_pool_size;

Tamanho da SGA

show parameter sga_max_size;

SELECT name, round((value/1024/1024),2) SGA_MB, description
FROM v$parameter
WHERE name ='sga_max_size';

Tamanho do POOL Compartilhado

show parameter shared_pool_size

SELECT name, round((value/1024/1024),2) POOL_COMPARTILHADO_MB, description
FROM v$parameter
WHERE name ='shared_pool_size';

Tamanho do BUFFER de REDO LOG


show parameter log_buffer

SELECT name, round((value/1024/1024),2) BUFFER_REDO_LOG_MB, description
FROM v$parameter
WHERE name ='log_buffer';

Tamanho da PGA


show parameter pga_aggregate_target;

SELECT name, round((value/1024/1024),0) PGA_MB, description
FROM v$parameter
WHERE name ='pga_aggregate_target';

Tamanho do bloco

show parameter db_block_size;

Alterar o tamanho do cache de BUFFER DE DADOS

show parameter db_cache_size;

alter system set db_cache_size=16m;

SELECT name, round((value/1024/1024),2) CACHE_BUFFER_DADOS_MB, description
FROM v$parameter
WHERE name ='db_cache_size';

quarta-feira, 23 de maio de 2018

Guia de Instalação do Oracle no SuSE Linux 12

Instação do Oracle 12c no SuSE 12 SP3

No Yast selecionar o pacote Oracle Server Database, como mostra a figura abaixo:



(orarun)

  • Criar usuário
    • oracle
  • Criar grupos
    • dba, oinstall
  • Instalar pacotes de pré-requisitos
    • bc
    • binutils-2.24-2.165.x86_64
    • gcc-c++-32bit-4.8-6.189.x86_64
    • gcc-c++-4.8-6.189.x86_64
    • gcc48-c++-4.8.3+r212056-6.3.x86_64
    • gcc-32bit-4.8-6.189.x86_64
    • gcc-4.8-6.189.x86_64
    • gcc-info-4.8-6.189.x86_64
    • gcc-locale-4.8-6.189.x86_64
    • gcc48-32bit-4.8.3+r212056-6.3.x86_64
    • gcc48-4.8.3+r212056-6.3.x86_64
    • gcc48-info-4.8.3+r212056-6.3.noarch
    • gcc48-locale-4.8.3+r212056-6.3.x86_64
    • glibc-2.19-17.72.x86_64
    • glibc-devel-2.19-17.72.x86_64
    • libaio-devel-0.3.109-17.15.x86_64
    • libaio1-0.3.109-17.15.x86_64
    • libaio1-32bit-0.3.109-17.15.x86_64
    • libgfortran3-4.8.3+r212056-6.3.x86_64
    • libX11-6-1.6.2-4.12.x86_64
    • libX11-6-32bit-1.6.2-4.12.x86_64
    • libXau6-1.0.8-4.58.x86_64
    • libXau6-32bit-1.0.8-4.58.x86_64
    • libXtst6-1.2.2-3.60.x86_64
    • libXtst6-32bit-1.2.1-2.4.1.x86_64
    • libcap-ng-utils-0.7.3-4.125.x86_64
    • libcap-ng0-0.7.3-4.125.x86_64
    • libcap-ng0-32bit-0.7.3-4.125.x86_64
    • libcap-progs-2.22-11.709.x86_64
    • libcap1-1.10-59.61.x86_64
    • libcap1-32bit-1.10-59.61.x86_64
    • libcap2-2.22-11.709.x86_64
    • libcap2-32bit-2.22-11.709.x86_64
    • libgcc_s1-32bit-4.8.3+r212056-6.3.x86_64
    • libgcc_s1-4.8.3+r212056-6.3.x86_64
    • libpcap1-1.5.3-2.18.x86_64
    • libstdc++6-32bit-4.8.3+r212056-6.3.x86_64
    • libstdc++6-4.8.3+r212056-6.3.x86_64
    • make-4.0-2.107.x86_64
    • mksh-50-2.13.x86_64
    • net-tools-1.60-764.185.x86_64 (for Oracle RAC and Oracle Clusterware)
    • nfs-kernel-server-1.3.0-6.9.x86_64 (for Oracle ACFS)
    • smartmontools-6.2-4.33.x86_64
    • sysstat-8.1.5-7.32.1.x86_64
    • xorg-x11-libs-7.6-45.14
  • Configurar parametros de Kernel requeridos para o SUSE Linux Enterprise Server 
  • Estar variáveis de ambientes Oracle
    • ORACLE_SID
    • ORACLE_BASE
    • ORACLE_HOME
Passos para alterar o diretório padrão /opt/oracle para /usr/oracle:
  • Criar o novo diretório: #mkdir /usr/oracle
  • Setar propriedades de usuário e grupo
    • chown oracle /usr/oracle
    • chgrp install /usr/oracle
  • Setar a variável ORACLE_BASE=/usr/oracle no /etc/sysconfig/oracle
  • Alterar a variável ORACLE_BASE no arquivo /etc/profile.d/oracle.sh
    • ORACLE_BASE=/usr/oracle