Instalando Oracle 10 no Windows 7

Para instalar o Oracle 10 no Windows 7 é necessário rodar o instalador com opção de compatibilidade.

Oracle 10g works property on Windows 7. You just need to download Oracle 10g Release 2 for Windows Vista and install it on Windows 7 using “Windows Vista SP 2 Compatibility Mode” and “As Administrator”.

Baixe o Oracle 10 para Windows Vista Oracle 10.2.0.3 para Vista depois clique com o botão direito sobre o programa e escolha “Rodar em modo de compatibilidade”, “Windows Vista SP2”.

Se não funcionar, baixe o Oracle 10 para Windows 32 . Rode com “Solucionar Problemas de Compatibilidade” e escolha “windows XP SP 3”.

Se não funcionar, instale a Versão 11
Referencia: Fórum OTN

Ativar Trace de uma Sessão no Oracle

Para efetuar o trace em uma sessão no Roacle seguir os passos abaixo:

  • Descobrindo o ID e o SERIAL da sessão

Para descobrir a sessão, usualmente utilizamos a view V$SESSION e com alguma informação relevante, tipo o usuário do banco, o aplicativo utilizado ou mesmo o nome do computador utilizado. No meu caso o usuário era único no banco de dados, portanto efetuei uma consulta simples.

SQL> select sid, serial# from v$session where username = ‘USER’;
SID SERIAL#
——- ————
25 1468

De posse dos dados, vamos habilitrar o trace.

  • Habilitando o trace

SQL> exec dbms_system.set_sql_trace_in_session(25, 1468, TRUE);

Trace ativo, a partir deste momento tudo que ocorrer na sessão será gravada em arquivo de trace. Aguarde a finalização da sessão ou a confirmação do usuário para encerrar o trace.

  • Desabilitando o trace

SQL> exec dbms_system.set_sql_trace_in_session(25, 1468, FALSE);

Os arquivos de trace são gravados no diretório dump de usuários, localize através do parâmetro USER_DUMP_DEST.

SQL> show parameter user_dump_dest

Neste diretório estarão os arquivos de trace dos usuários e o arquivo que foi gravado através deste procedimento.

Refere4ncia: http://profissionaloracle.com.br/blogs/braga/2009/07/19/trace-em-uma-sessao/

Compilar objetos invalidos no Oracle

Um select pode garar o script para compilar objetos inválidos.

-- Objetos Invalidos
SELECT * FROM all_objects WHERE status <> 'VALID';
SELECT 'ALTER ' || object_type || ' ' || owner || '.' || object_name || ' compile;'  FROM all_objects WHERE status <> 'VALID' and object_type <> 'PACKAGE BOY';
SELECT 'ALTER ' || object_type || ' ' || owner || '.' || object_name || ' compile body;'  FROM all_objects WHERE status <> 'VALID' and object_type = 'PACKAGE BOY';

Script para backup em PHP

O script facilita o backup, porem nao esquecer que o SSH2 do PHP retorna caracteres de controle misturados (chr(27)).

#!/usr/bin/php
<?php
/* 
 * bkp.php - Copia backup do BD Oracle
 * Helder - 08-12-2009
 */

$nl = "\n";
$data = date('Y_m_d');
$dir = '/home/helder/Oracle/bkp_'.$data;
echo "Criando diretorio $dir $nl";
@mkdir($dir);

echo "Conectando...$nl";
if (!($connection = ssh2_connect('192.168.1.20', 22))) {
 echo "Falhou $nl"; exit;
}
if (!ssh2_auth_password($connection, 'oracle', 'suporte')) {
 echo "Falhou $nl"; exit;
}

echo "Lista de arquivos $nl";
if (!($files = @ssh2_shell($connection,"xterm"))) {
 echo "Falhou $nl "; exit;
}
fwrite($files,"ls /u01/oracle/backup/orcl/* $nl");
sleep(1);
$arquivos = '';
while($line = fgets($files)) {
 flush();
 $arquivos .= $line;
}
$arquivos = str_replace(chr(27),"\n",$arquivos);
fclose($files);
preg_match_all('/\/u.*[\n\r]/',$arquivos,$files);

// Nova conexao .............
echo "Conectando...$nl";
if (!($connection = ssh2_connect('192.168.1.20', 22))) {
 echo "Falhou $nl"; exit;
}
if (!ssh2_auth_password($connection, 'oracle', 'suporte')) {
 echo "Falhou $nl"; exit;
}

$arquivo = 'vns.dmp'     ; echo "Copiando $arquivo $nl";
ssh2_scp_recv($connection, '/tmp/vns.dmp', $dir.'/'.$arquivo);
$arquivo = 'dbnoite.dmp' ; echo "Copiando $arquivo $nl";
ssh2_scp_recv($connection, '/u01/oracle/admin/orcl/dmp/dbnoite01.dmp', $dir.'/'.$arquivo);
$arquivo = 'dbdia.dmp'   ; echo "Copiando $arquivo $nl";
ssh2_scp_recv($connection, '/oracle/admin/orcl/dmp/dbdia01.dmp', $dir.'/'.$arquivo);

$dir = $dir."/rman";
@mkdir($dir);


echo "Criando diretorio $dir $nl";
foreach($files[0] as $arquivo) {
 $arquivo = chop(rtrim($arquivo));
 if (strpos($arquivo,'*')===FALSE) {
 $destino = $dir.'/'.basename($arquivo);
 echo "Copiando $arquivo para $destino $nl";
 ssh2_scp_recv($connection, $arquivo, $destino);
 }
}

?>

Ajustando NLS_LANG para formato de Data no PHP-Apache-Oracle

Para que a data fique na forma personalizada do Brasil, ajustar a variavel NLS_LANG no script que inicializa o apache.

vi /etc/init.d/apache2
export NLS_LANG=”BRAZILIAN PORTUGUESE_BRAZIL.WE8ISO8859P1″

Dependendo da versão do apache pode ser necessário alterar o envvars
vi /etc/apache2/envvars
export NLS_LANG=”BRAZILIAN PORTUGUESE_BRAZIL.WE8ISO8859P1″

No windows o NLS_LANG fica dentro do “regedit”, ou tambem pode ser colocado nas varáveis de ambiente.

Monitorando Performace Linux / Oracle

Para monitorar performace temos vários aplicativos no linux.

vmstat 1

Com o vmstat é possivel saber o volume de uso da memoria swap.

Observar as seguintes colunas: swap si e so para ver se esta usando a memoria em disco .

Observar io bi e bo para identificar gargalo de escrita ou leitura no HD.

Observar o cpu id para verificar o percentual de espera da cpu.

watch free

Executa consecutivamente o comando free mostrando os valores de uso da memoria. Observar o swap.

top

O top traz bastante informação. Para ver por cpu usar o comando “1” para mostrar separadamente.

O campo id (espera) deve estar com valores altos pois significa que a cpu esta esperando e não tem nada para fazer.

No canto superior direito, temos uma informação muito importante chamada “Load Average”. O valor ideal deste campo é abaixo de 1, para cada processador. OU seja dividir o numero obtido pelo numero de processadores de sua maquina, conforme explica este artigo: Understanding Linux CPU Load – when should you be worried?.

Maiores informações em Load Average

Teclando cbx destaca o comando que mais esta usando a cpu. Permite usar < e > para navegar entre as colunas.

Referencia: Linux Na Rede

Recuperando Backup Oracle exp/imp

Apos criar os tablespaces e o usuario, utilizar o comando grant para garantir recursos ao novo usuario:

sqlplus sys/senha as sysdba
grant dba, resource, connect to c5;
grant select on gv_$session to c5;
grant select on v_$session to c5;

Usar o comando imp para importar os dados

imp system/senha file=arq.dmp fromuser=c5 touser=c5 log=log.txt

Se precisar apagar primeiro, RETIRAR DA REDE:

drop user consinco cascade;
drop tablespace tsd_consinco;
drop tablespace tsi_consinco;
create tablespace tsd_consinco datafile ‘\u01\orcl\tsd_consinco.dbf’ size 500m autoextend on;
create tablespace tsi_consinco datafile ‘\u01\orcl\tsi_consinco.dbf’ size 500m autoextend on;
create user consinco identified by senha default tablespace tsd_consinco;
grant dba to consinco;

Lembrar de colocar o segundo servidor no sql.ini e no tnsnames.ora