Postagens

Comparando estruturas de tabelas entre diferentes esquemas

Hoje precisei comparar a estrutura das tabelas criadas na base oficial e base de testes de um cliente para verificar se havia alguma diferença entre ambas e para isso montei o script abaixo: select a.table_name tabela,a.column_name coluna, a.data_type tipo_a, a.data_length tamanho_a, a.data_precision precisao_a, b.data_type tipo_b, b.data_length tamanho_b, b.data_precision precisao_b from dba_tab_cols a inner join dba_tab_cols b on a.table_name=b.table_name and a.column_name=b.column_name where (a.data_type b.data_type or a.data_length b.data_length or a.data_precision b.data_precision) and a.owner = 'BASE_OFICIAL' --Informe aqui o nome da base oficial and b.owner='BASE_TESTES' --informe aqui o nome da base de testes order by 1,2,3,4 Obs.: * Tem que rodar com grant de DBA. * Dúvidas ou sugestões de melhoria postem nos comentários.

Problema da Manhã: Erro no Agendador de Tarefas do Windows 2003 Server

Recebi este erro "0x80090016: O conjunto de chaves não existe" ao tentar criar uma tarefa agendada de um batch de backup do Oracle no Windows 2003 Server. Consegui resolver a questão simplesmente renomeando o arquivo corrompido d42cc0c3858a58db2db37658219e6400_xxxx no caminho: "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\S-1-5-18\" para .old. Obs.: o valor final xxxx do nome do arquivo varia. Procure pela chave que começa com d42. Deve ter apenas uma. Encontrei várias sugestões para resolver este problema, mas a que realmente solucionou com a dica acima foi o blog do Anil John .

Recriar Tablespace temporária TEMP

Segue abaixo procedimento para recriar a tablespace TEMP do Oracle: 1)Primeiro, é necessário criarmos uma tablespace intermediária: CREATE TEMPORARY TABLESPACE TEMP2 TEMPFILE 'E:\ORADATA\XE\TEMP2_01.DBF' SIZE 5M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; 2)Tornamos esta tablespace temporária como padrão: ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP2; 3)Apagamos a tablespace TEMP que já não é mais a padrão: DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES; Observações: Embora tenhamos informado para apagar fisicamente o datafile da tablespace é necessário que verifiquemos se o mesmo foi apagado, pois, principalmente com Windows isso pode não ocorrer. Se for o caso devemos então apagar manualmente o arquivo após o comando acima. Caso não consiga apagar a tablespace com o comando acima é porque ela está em uso por alguém, então é necessário que todos saiam do sistema e que seja repetido o comando novamente. 4) Criamos novamente ...

LiveCD para treinar certificação LPI

Para quem está se preparando para alguma prova de Certificação LPI do Linux vai aqui um link para download bem interessante, de um instituto que criou um liveCD com dual boot (CentOS e Knoppix) focado em treinamento e preparação para as provas de certificação do Linux, as famosas LPI. Ainda não testei o liveCD, pois estou fazendo o download, mas resolvi compartilhar o link para que possam também avaliar o produto. Segue o link para download: http://www.elearnit.de/live_cds/elpicx/download/index.html Comentei o que acharam da ferramenta. Achei uma ótima iniciativa. Quem sabe não montamos também algum material assim para o mesmo propósito com documentação em português...

Trocar o caminho da pasta ORADATA no Oracle

Hoje precisei realizar um procedimento em um cliente para mudar a pasta oradata de um disco para outro com o intuito de agilizar o desempenho geral do sistema. Para isso fui pesquisar no Google e encontrei esta dica de um fórum: http://www.dbforums.com/showthread.php?t=790559 Seguindo esta sugestão, com alguns ajustes que vou detalhar abaixo consegui facilmente realizar o procedimento que queria, sem mistérios. O primeiro passo é fazer um backup do control file para um arquivo de trace SQL> alter database backup controlfile to trace; Após isso devemos criar também um arquivo pfile baseado no spfile atual para podermos alterar o caminho do control file. SQL> create pfile from spfile; Feito isso podemos dar um shutdown no banco e mover a pasta "oradata" para o seu novo destino SQL> shutdown immediate; Obs.: Não é necessário fechar o sqlplus pois vamos precisar utilizá-lo na seqüência. Movo a pasta oradata para o seu novo destino, de C:\ORACLEXE\ORADATA para E:\ORADATA...

Pegar o momento de uma inserção através do SCN

Olá pessoal, me deparei estes dias com uma situação interessante. Um colega precisava descobrir o momento exato em que houve uma determinada inserção de um registro em uma tabela de movimentos de estoque de um cliente, mas o único campo de data da tabela guardava apenas dia/mês/ano, sem a hora. O Oracle não trabalha com datas diretamente em seus controles, pois a data do sistema operacional pode ser alterada e comprometer a sua consistência. Desta forma ele utiliza um número sequencial conhecido como SCN. Aí imaginei que houvésse uma forma de converter este SCN para um horário válido e fiz a seguinte pesquisa no banco, como usuário sys: select object_name from all_objects where upper(object_name) like '%SCN%' Esta consulta me retornou vários resultados, dentre eles o que chamou a atenção foi o SCN_TO_TIMESTAMP. Pesquisei no Google e verifiquei o uso desta função com a pseudo-coluna ORA_ROWSCN que armazena o SCN corrente no momento da inclusão do novo registro. Com isso utilize...

Serviço oracle-xe no Linux executa mas não levanta o banco

Pessoal, hoje me deparei com o problema abaixo ao instalar o Oracle-XE em um Servidor Linux (FC5): Fiz todas as configurações que julgava necessárias, porém quando reiniciei o Linux o script /etc/init.d/oracle-xe rodou automaticamente com a opção "start" porém o banco não subiu. Rodei o /etc/init.d/oracle-xe stop seguido de um start, não recebi erro nenhum, teoricamente parou o banco e iniciou novamente. O detalhe é que foi rápido demais e novamente o banco não subiu. A única forma que fiz o banco subir foi conectando no sqlplus e dando um startup. Analisando o script cheguei no sript sql startupdb.sql que é o responsável por fazer o startup do banco. Rodei o comando abaixo e recebi estas mensagens: -bash-3.1$ $ORACLE_HOME/bin/sqlplus /nolog @$ORACLE_HOME/config/scripts/startdb.sql SQL*Plus: Release 10.2.0.1.0 - Production on Mon Nov 26 11:06:34 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. ERROR: ORA-01031: insufficient privileges ORA-01031: insuffici...