Re: [oracle_br] Re: Medir desempenho de banco Oracle

2011-08-19 Por tôpico Vitor Hugo
Chiappa,


Muito obrigado pela resposta, que na verdade foi de super alto nível.

O meu grande problema está referente ao DB Link citado por você, dá maneira 
que construíram a arquitetura da aplicação. Sendo que tenho dois Database A e 
B, onde acesso os mesmos através de DB Link, a única coisa é que os dois estão 
instalados no mesmo banco de dados Oracle 10g, o que me intriga o porque não 
fizeram dois tablespace , desta forma não precisaríamos ter o dblink é a 
consulta seria sem dúvidas muito mais rápido.

O problema foi causado talvez por falta de conhecimento da equipe anterior, 
pois como estamos falando do mesmo Database, poderiamos estar criado apenas 
tablespace e usuários diferentes para cada banco.

De qualquer forma obrigado pelas dicas anteriores.

Abraços,
 
Vitor Hugo Brito de Oliveira
Decimal Tecnologia Em Informatica LTDA.
BLOG: http://emdia.wordpress.com/
MSN: hugov1...@hotmail.com



De: José Laurindo 
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quinta-feira, 18 de Agosto de 2011 21:32
Assunto: [oracle_br] Re: Medir desempenho de banco Oracle


  
A guia geral é vc verificar a Eficiência dos seus SQLs : quando eu disse "SQL 
mal escrito", não quis dizer SQL que não segue um "padrão", nem SQL que segue 
ou não segue uma determinado sintaxe, eu queis me referir a SQLs 
ineficientes... 
Pra vc verificar a eficiência dos seus SQLs, há basicamente 3 coisas a se fazer 
:

a) conferir quantos LIOs (Logical I/Os. ie, quantos blocos Oracle) são 
acessados pra se produzir as linhas-destino : em caso de acesso sequencial via 
índice o ideal é se ter uma proporção por volta de 6 LIos por linha (digamos, 
um LIO pra se ler o root block do índice, um pra se ler o branch, outro pra se 
ler o leaf, mais um pra se obter o bloco de dados, com uma adiçãozinha de 
margem chegamos nos 6 LIOs), enquanto no caso de fast full index scan/table 
scan aí (claro) não dá pra saber onde os dados vão estar (pode ser que vc tenha 
ler a tabela inteira pra achar um dado), então não se pode estabelecer uma 
escala , mas o fato é , vc TEM que reduzir ao máximo os LIOs , portanto em caso 
de scan vc TEM que se assegurar que não há white-space sem dados sendo lido, 
que o high-water mark não esteja absurdamente alto, que as opções de Redução de 
LIOs em scans (como Particionamento, por exemplo) estão presentes e sendo 
usadas... Em caso de
 scan ainda há a questão de se assegurar I/O otimizado, o que implica em 
tamanho de extent aproipriado, db_file_multiblock_read_count (se viável) bem 
ajustado, etc...

b) WAITs : todo SQL, óbvio, tem algum tipo de WAIT, o objetivo nesta 
verificação é não ter nada absolutamente desbalanceado , nenhum wait que 
sozinho responda por uma percentagem significativa do total, SE houver isso 
deve ser corrigido / melhorado...

c) consumo de recursos : todo SQL consome alguma CPU, algum I/O, implica em 
algum nível de tráfego de rede, pode sofrer/participar de concorrência outras 
sessões querendo acessar os exatos mesmos blocos que o seu SQL tá 
usando/querendo usar) ... Aqui novamente não há um número ideal, o objetivo é 
ter o menos possível de consumo, E evitar o desperdício... Exemplos típicos de 
desperdício são SQLs sendo reparseados frequentemente (o que gasta cliclos e 
ciclos de CPU à toa), montes de SQLs semelhantes sendo gerados por não-uso de 
BIND VARIABLEs, a mesma informação sendo lidas várias vezes (por exemplo, em 
sub-queries), coisas assim... 

Tools : para a) e b) a tool é o TKPROF em cima de um trace de SQL. Para c) 
pode-se usar a V$SQL e as V$ de eventos de performance da sessão, mas não há um 
método único pra isso, a idéia é que um DBA ** experiente ** consulte as V$ 
necessárias (principalmente a V$SQL, ela tem colunas aonde se registram consumo 
de CPU, concorrência, LIOs, linhas processadas, etc) e também revise os planos 
(planos reais, extraídos da V$SQL_PLAN e similares, não estimadas com EXPLAIN) 
- uma pessoa experiente, E que conheça o negócio/saiba o que o SQL deveria 
produzir, só de olhar um plano já pode avaliar algo da eficiência dele : por 
exemplo, SQL usando nested loops num JOIN aonde se sabe que as tabelas 
envolvidas são "grandes" provavelmente pode ser substituído com vantagem por um 
HASH, coisa do tipo...

Referência : eu DESCONHEÇO um documento apropriado pra isso, o que vc poderá 
usar são :

- manuais Oracle Concepts e Tuning 
- livro "Oracle SQL High-Performance Tuning (2nd Edition)", Guy Harrison : fala 
bastante sobre análise de TKPROF e algoritmos de JOIN
- livro "Cost-Based Oracle Fundamentals (Expert's Voice in Oracle)", de 
Jonathan Lewis : nos releases modernos, já há vários anos o Oracle usa 
otimização por Custo (baseada em coleta de estatísticas e Histogramas) para 
otimização de SQLs, este livro é o melhor para referência nesse assunto
- livro "Oracle Wait Interface: A Practical Guide to Performance Diagnostics & 
Tuning", de  

Re: [oracle_br] Re: Medir desempenho de banco Oracle

2011-08-18 Por tôpico Vitor Hugo
Chiappa,


Tenho certeza que os SQL estão bem escritos, mais acredito que então tenha um 
documento que possa me auxiliar a conferir os meus SQLs novamente.

Será que você teria algum documento que poderia me auxiliar nesta questão.

Abraços,
 
Vitor Hugo Brito de Oliveira
Decimal Tecnologia Em Informatica LTDA.
BLOG: http://emdia.wordpress.com/
MSN: hugov1...@hotmail.com



De: José Laurindo 
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quinta-feira, 18 de Agosto de 2011 14:07
Assunto: [oracle_br] Re: Medir desempenho de banco Oracle


  
Colega, seguinte : primeiro de tudo, existem sim diversas tools e referências 
pra vc fazer verificação do cluster (no metalink, o site de Suporte da Oracle, 
indico as notas "Introducing Cluster Health Monitor (IPD/OS)" (Doc ID 736752.1) 
, "RAC Assurance Support Team: RAC and Oracle Clusterware Starter Kit and Best 
Practices (Generic)" (Doc ID 810394.1) e a "RAC: Frequently Asked Questions" 
(Doc ID 220970.1) , bem como os links citados nelas, mas tenha Claro em mente 
que NENHUMA dessas tools/técnicas é point-and-click e cabou, vai ser sim 
TOTALMENTE EXIGIDO um DBA Oracle ** experiente ** para as aplicar, okdoc ??

Quanto à outra pergunta : a adição  de um outro nó implica em um pouco mais de 
poder de CPU e em mais RAM pro cluster (no RAC cada cache de cada nó se junta 
para formar um só cache, logicamente falando, através do cache fusion ), além 
de vc poder aliviar um pouco a carga dos outros nós com o load balance tendo 
mais um destino a balancear - então é claro que só vai ser benéfica a adição de 
um novo nó SE, e APENAS SE, o problema com os teus relatórios é consumo de CPU 
ou máquina muito acessada ou coisa do tipo : SE o problema nos seus relatórios 
for SQL malfeito/porcamente escrito, fazendo I/Os em excesso ou coisa do tipo, 
não vai ajudar EM NADA um nó a mais, muito provavelmente 

==> Então a minha Recomendação é lapidar : faça o healthcheck do seu cluster, 
ok, e do banco também (não é de forma alguma tempo perdido), MAS 
NECESSARIAMENTE um DBA experiente vai ter que além disso analisar os SQLs / 
sessões dos tais relatórios e ver qual é o gargalo, qual é o problema, blz ?? 


[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br, Vitor Hugo  escreveu
>
> Bom dia a todos,
> 
> Estou tendo alguns problemas de performance no meu banco de dados produtivo.
> 
> O meu banco de dados tem 2 nós , eu gostaria de saber como descobrir seu meu
> Oracle RAC está configurado corretamente, e quais seriam os processos ou 
> documento
> disponiveis na Oracle que poderiam me ajudar, com o diagnostico de problemas.
> 
> Se eu acrescentar mais um nó ao meu Oracle RAC, quais seriam os beneficios 
> que eu 
> poderia obter no tempo de resposta dos meus relatórios.
> 
> Abraços,
>  
> Vitor Hugo Brito de Oliveira
> Decimal Tecnologia Em Informatica LTDA.
> BLOG: http://emdia.wordpress.com/
> MSN: hugov1983@...
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


 

[As partes desta mensagem que não continham texto foram removidas]



Re: [oracle_br] Re: [Oracle Tools] Procedure em Thread

2011-08-16 Por tôpico Vitor Hugo
Chiappa,


Obrigado pela resposta ficou bem claro. Estou analisando qual a melhor forma de 
implementar a procedure, e chamar via JOB, mais este controle paralelo talvez, 
use o hint ?*+ PARALLEL (tabela, 2) */ , qualquer novidade. 

E progresso , posto para compartilhar a solução.

Abraços, 
 
Vitor Hugo Brito de Oliveira
Decimal Tecnologia Em Informatica LTDA.
BLOG: http://emdia.wordpress.com/
MSN: hugov1...@hotmail.com



De: José Laurindo 
Para: oracle_br@yahoogrupos.com.br
Enviadas: Terça-feira, 16 de Agosto de 2011 8:50
Assunto: [oracle_br] Re: [Oracle Tools] Procedure em Thread


  
Vitor Hugo, deixe-me fazer umas colocações aí, vamos ver se esclareço uns 
pontos : Primeiro de tudo, uma procedure PL/SQL necessariamente roda numa 
sessão conectada ao banco, e uma sessão só pode executar um comando por vez 
(rigorosamente não há o conceito de thread no PL/SQL) então a sua resposta é, 
Não há como vc executar na mesma sessão vários 
comandos/funcções/procedures/blocos PL/SQLs simultaneamente, ok ? 
O que vc PODE fazer é abrir novas sessões a partir do seu programa PL/SQL, aí 
cada uma dessas sessões executa uma procedure , certo ? O ponto principal a se 
preocupar, CLARO, é que é um conceito Básico de rdbms Oracle, CADA sessão é 
absolutamente Independente da outra, uma NÃO ENXERGA as atualizações feitas 
pela outra até que sejam efetivadas via COMMIT - sendo assim, se o alvo (ie, as 
tabelas a se processar) são as mesmas, Evidentemente vc terá que programar no 
seu código pra que uma não interfira na outra, provavelmente lockando os 
registros que cada uma está processando E tendo uma flag indicando que o 
registro foi processado, info que vc comita no fim, evitando reprocessamento

Antes de falar sobre como se faz isso, um aviso : SE o teu objetivo é ter 
múltiplas executando o mesmo e único SQL gigante (seja query, seja DML) , 
Please considere com carinho a hipótese de Parallel SQL - isso é uma built-in 
do RDBMS Oracle, aonde ele mesmo cria as múltiplas sessões, ele mesmo já divide 
o acesso e controla quais sessões vão ler/processar cada pedaço das tabelas, 
ele mesmo já coordena o envio de informações a processar e já processadas entre 
as sessões slave e a sessão principal.

Caso não caiba Parallel SQL no seu problema, aí, para começo, vc tem que abrir 
as múltiplas sessões manualmente : há várias maneiras de se fazer isso (pode 
ser com SQL dinâmico, pode ser com autonomous transaction) , E NADA impede de 
vc fazer isso até FORA DO DATABASE (por exemplo, mandando vários nohup sqlplus 
@scriptquerodaaprocedure & , por exemplo, OU escrevendo uma rotina numa 
linguagem que aceite abrir múltiplas conexões com o banco, como java ou pro*c, 
talvez),  MAS imho o mais correto/fácil/Recomendado meio é vc chamar a proc via 
DBMS_JOB, seria + ou - tipo :

declare
vJob number;
begin
dbms_job.submit(job  => vJob,
what => 'PROCEDURE1');
--
dbms_job.submit(job  => vJob,
what => 'PROCEDURE2');
-- 
dbms_job.submit(job  => vJob,
what => 'PROCEDURE3');
--
COMMIT; -- Ativa a Execução dos JOBs acima 
...
.. neste ponto em diante as 3 procedures estão sendo executadas, é só fazer um 
LOOP pesquisando a DBA_JOBS_RUNNING e a DBA_JOBS 
.. pra monitorar a execução
end;

===> O que eu disse antes, E vou repetir de novo, é mesmo Crítico quando vc faz 
paralelismo faça-você-mesmo : fica POR SUA CONTA o controle de acesso e 
registros processados/em processamento, E também a divisão dos registros, ie, 
quais registros vão ser processados por cada proc 
Supondo que haja um atributo fácil pra indicar cada procedure faz quais 
registros (digamos, o código de cliente), aí Provavelmente as suas procedures 
seriam algo do tipo :

CREATE OR REPLACE PROCEDURE procedure1 IS 
row_locked EXCEPTION;
PRAGMA EXCEPTION_INIT(row_locked, -54);
cursor C is 
SELECT colunas FROM tabelas WHERE codigodocliente=1
FOR UPDATE NOWAIT;
r C%rowtype;
BEGIN
OPEN C;
loop
Begin
fetch C into R;
exit when C%NOTFOUND;
...
-- SE chegou aqui, o registro é a processar, processo ele
...
-- aí após o processamento atualizo a FLAG pra mostrar esse registro como 
processado
UPDATE tabela SET flagprocessado='S' where current of;
... e não faço mais nada, o end loop vai voltar ao loop e o FETCH busca o 
próximo
-- 
Exception
when row_locked then
null; -- Não faz nada, ignora as linhas já lockadas
End;
end loop;
close C;
COMMIT;
END;

> PLEASE não use esse código como exemplo, ele NÂO FOI TESTADO, é 
praticamente pseudocódigo, mas a idéia geral é essa, blz ?

[]s

Chiappa


--- Em oracle_br@yahoogrupos.com.br, Vitor Hugo  escreveu
>
> Marcio Castro,
> 
> Estas procedures estão sendo chamadas por 1 uma procedure que tem o objetivo 
> de apurar os dados das outras, e ela está agendada e um Job.
> 
> Mais a única, coisa que este processamento de rodando em 16 horas.
>  
> Vitor Hugo Brito de Oliveira

Re: [oracle_br] Re: [Oracle Tools] Procedure em Thread

2011-08-15 Por tôpico Vitor Hugo
Marcio Castro,

Estas procedures estão sendo chamadas por 1 uma procedure que tem o objetivo de 
apurar os dados das outras, e ela está agendada e um Job.

Mais a única, coisa que este processamento de rodando em 16 horas.
 
Vitor Hugo Brito de Oliveira
Decimal Tecnologia Em Informatica LTDA.
BLOG: http://emdia.wordpress.com/
MSN: hugov1...@hotmail.com



De: MARCIO CASTRO 
Para: "oracle_br@yahoogrupos.com.br" 
Enviadas: Segunda-feira, 15 de Agosto de 2011 18:00
Assunto: Re: [oracle_br] Re: [Oracle Tools] Procedure em Thread


  
Vitor:

  Jah pensou em utilizar um  job para isto?

 
Atenciosamente,

Márcio de Figueiredo Moura e Castro

Oracle 10g DBA OCA
Oracle PL/SQL Developer OCA

____
De: Vitor Hugo 
Para: "oracle_to...@yahoogrupos.com.br" 
Cc: "oracle_br@yahoogrupos.com.br" ; Oracle Group 
; Oracle Group 
Enviadas: Segunda-feira, 15 de Agosto de 2011 14:16
Assunto: [oracle_br] Re: [Oracle Tools] Procedure em Thread

  
Edson,

Obrigado, pelo retorno.

Vou explicar qual é o problema , que estou tentando resolver. Tenho 4 
procedures, idependentes que devem processar uma determinada quantidade de 
informação e "jogar" em uma tabela que farei a consulta.

Hoje a minha rotina está desta forma.

PRC_1
PRC_2
PRC_3

PRC_4

SELECT * FROM tabela_resultado;

Desta forma as operações são sequências , tenho que esperar a PRC_1 terminar, 
para começar a PRC_2 e assim por diante.

Gostaria de startar todas as procedures ao mesmo tempo , sendo que assim , o 
tempo de retorno "pode" ser mais rápido.

Será que consegui passar o meu problema.

Abraços,

 
Vitor Hugo Brito de Oliveira
Decimal TI
BLOG: http://emdia.wordpress.com/
MSN: hugov1...@hotmail.com
Cel: (11) 8938-9473


De: Edson Almeida Junior (Consulting) 
Para: oracle_to...@yahoogrupos.com.br
Cc: "oracle_br@yahoogrupos.com.br" ; Oracle Group 
; Oracle Group 
Enviadas: Segunda-feira, 15 de Agosto de 2011 12:38
Assunto: Re: [Oracle Tools] Procedure em Thread

  
Vitor,

Existe o autonomous transactions

Veja os links abaixo
http://psoug.org/reference/autonomous_tx.html
http://www.oradev.com/autonomous_transaction.jsp
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:2212445691154

Edson Almeida Jr

Em 15 de agosto de 2011 11:58, Vitor Hugo  escreveu:

>  
>Gostaria de saber se é possível executar duas procedures simultaneamente.
> 
>Vitor Hugo Brito de Oliveira
>Decimal TI
>BLOG: http://hugov-manjava.blogspot.com/
>MSN: hugov1...@hotmail.com
>Cel: (11) 8938-9473

-- 

Edson Almeida Junior
Consulting Tecnologia & Sistemas Ltda
Telefones..: (021) 8600-8439 
Nextel..:  (021) 7803-3448 - ID: 120*61725
MSN: e...@hotmail.com
SKYPE: edsonalmeidajr

Visite www.consulting.com.br

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]


 

[As partes desta mensagem que não continham texto foram removidas]



[oracle_br] Re: [Oracle Tools] Procedure em Thread

2011-08-15 Por tôpico Vitor Hugo
Edson,

Obrigado, pelo retorno.

Vou explicar qual é o problema , que estou tentando resolver. Tenho 4 
procedures, idependentes que devem processar uma determinada quantidade de 
informação e "jogar" em uma tabela que farei a consulta.

Hoje a minha rotina está desta forma.

PRC_1
PRC_2
PRC_3

PRC_4


SELECT * FROM tabela_resultado;

Desta forma as operações são sequências , tenho que esperar a PRC_1 terminar, 
para começar a PRC_2 e assim por diante.

Gostaria de startar todas as procedures ao mesmo tempo , sendo que assim , o 
tempo de retorno "pode" ser mais rápido.

Será que consegui passar o meu problema.

Abraços,

 
Vitor Hugo Brito de Oliveira
Decimal TI
BLOG: http://emdia.wordpress.com/
MSN: hugov1...@hotmail.com
Cel: (11) 8938-9473



De: Edson Almeida Junior (Consulting) 
Para: oracle_to...@yahoogrupos.com.br
Cc: "oracle_br@yahoogrupos.com.br" ; Oracle Group 
; Oracle Group 
Enviadas: Segunda-feira, 15 de Agosto de 2011 12:38
Assunto: Re: [Oracle Tools] Procedure em Thread


  
Vitor,

Existe o autonomous transactions

Veja os links abaixo
http://psoug.org/reference/autonomous_tx.html
http://www.oradev.com/autonomous_transaction.jsp
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:2212445691154

Edson Almeida Jr


Em 15 de agosto de 2011 11:58, Vitor Hugo  escreveu:

 
>  
>Gostaria de saber se é possível executar duas procedures simultaneamente.
> 
>Vitor Hugo Brito de Oliveira
>Decimal TI
>BLOG: http://hugov-manjava.blogspot.com/
>MSN: hugov1...@hotmail.com
>Cel: (11) 8938-9473


-- 


Edson Almeida Junior
Consulting Tecnologia & Sistemas Ltda
Telefones..: (021) 8600-8439 
Nextel..:  (021) 7803-3448 - ID: 120*61725
MSN: e...@hotmail.com
SKYPE: edsonalmeidajr

Visite www.consulting.com.br


 

[As partes desta mensagem que não continham texto foram removidas]



[oracle_br] Database Link

2011-07-06 Por tôpico Vitor Hugo
Boa Tarde,

Estou com a seguinte dúvida, tenhos dois OWNER's ou seja, duas TABLESPACE no 
mesmo DATABASE, é necessário um DBLINK para que eu possa acessar um tabela de 
outro TABLASPACE.

Exemplo:

T1  > T2.TABELA_1 
T2  > T1.TABELA_2
 
Vitor Hugo Brito de Oliveira
Decimal TI
BLOG: http://emdia.wordpress.com/
MSN: hugov1...@hotmail.com
Cel: (11) 8938-9473

[As partes desta mensagem que não continham texto foram removidas]



Re: [oracle_br] Abrir transação explicitame nte

2008-03-03 Por tôpico Vitor Hugo Campos
Isso é mania de programador SQL Server (ou de qualquer outro BD cujos 
comandos são auto-commit por padrão). Em bancos desse tipo, o 
programador tem que executar um comando do tipo "open transaction" para 
dizer que os comandos seguintes deverão ser "commitados" explicitamente.

O Oracle até tem o comando SET TRANSACTION, mas o melhor é falar para o 
desenvolvedor ESQUECER que isso existe e entender que todo DML abre uma 
transação e que ela só será fechada por um COMMIT (ou um ROLLBACK), 
porque senão fatalmente ele esquecerá do bendito COMMIT e você terá 
vários problemas de lock por causa de esquecimento de programador.

Mais detalhes sobre o SET TRANSACTION:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_10005.htm#sthref9947

cido_re escreveu:
>
> Boa tarde Senhores(as).
>
> Por favor, alguém pode me dizer se posso abrir uma transação
> explicitamente, algo do tipo "open transaction", etc...
>
> Sei que abro uma transação a cada comando DML, porém fui questionado
> quanto a abrir explicitamente e não soube responder.
>
> Só pra explicar o motivo, o desenvolvedor está querendo aninhar as
> transações.
>
> Obrigado pela atenção.
>
> Cordialmente.
>
> Cido
>
>  

-- 
Vitor Hugo Campos
Desenvolvedor / DBA 

Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



Re: [oracle_br] Quando reconstruir indice

2007-12-28 Por tôpico Vitor Hugo Campos
Algumas informações interessantes sobre a reconstrução de índices:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:6601312252730
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:2913600659112
http://www.actoug.org.au/Downloads/oracle_index_internals.pdf

Zumba escreveu:
>
> Olá pessoal,
>
> como faço pra descobrir quando deve reconstruir um
> indice por ter muitos nós folhas em branco?
>
> Abraço e otimo findi ano a todos
>
> Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
> armazenamento!
> http://br.mail.yahoo.com/ <http://br.mail.yahoo.com/>
>
>  

-- 
Vitor Hugo Campos
Desenvolvedor / DBA 

Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



Re: [oracle_br] Quando reconstruir indice

2007-12-28 Por tôpico Vitor Hugo Campos
Algumas informações interessantes sobre a reconstrução de índices:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:6601312252730
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:2913600659112
http://www.actoug.org.au/Downloads/oracle_index_internals.pdf

Zumba escreveu:
>
> Olá pessoal,
>
> como faço pra descobrir quando deve reconstruir um
> indice por ter muitos nós folhas em branco?
>
> Abraço e otimo findi ano a todos
>
> Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
> armazenamento!
> http://br.mail.yahoo.com/ <http://br.mail.yahoo.com/>
>
>  

-- 
Vitor Hugo Campos
Desenvolvedor / DBA 

Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



Re: [oracle_br] Acertar horários para Jobs

2007-11-14 Por tôpico Vitor Hugo Campos
Baseando no SQL abaixo:

SELECT SYSDATE AS AGORA,
   TRUNC (SYSDATE) + (((17 * 60) + 55) / 1440) AS HOJE,
   TRUNC (SYSDATE) + (((17 * 60) + 55) / 1440) + 1 AS AMANHA
  FROM DUAL

Então você pode fazer algo como:

SYS.DBMS_JOB.SUBMIT (V_JOB,
 'PROCEDURE_TAL;',
 TRUNC (SYSDATE) + (((17 * 60) + 55) / 1440),
 'TRUNC (SYSDATE) + (((17 * 60) + 55) / 1440) + 1'
);

sidney_dias2000 escreveu:
>
> Preciso rodar um job todos os dias exatamente as 17:55.
> Criei da seguinte forma :
>
> sys.dbms_job.submit(v_job, 'PROCEDURE_TAL;', to_date('08/11/2007
> 17:55:00','dd/mm/ hh24:mi:ss'), 'SYSDATE+1');
>
> Mas o infeliz executou nos seguintes horarios :
>
> 2007-11-08 17:55:05
> 2007-11-09 17:55:10
> 2007-11-12 07:52:25
> 2007-11-13 07:52:29
>
> Alguem tem uma dica de como rodar o job num horario especifico ?
>
>  

-- 
Vitor Hugo Campos
Desenvolvedor / DBA 

Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



Re: [oracle_br] Sequencia no select

2007-09-25 Por tôpico Vitor Hugo Campos
Em 25/09/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> escreveu:
>  Tem como fazer um select da seguinte forma?
>  codigo descricao linha
>  125
>  tenis 1
>  125
>   tenis 2
>  894  chinelo1
>  126  sapato 1
>  126  sapato 2
>
>  o campo linha (vai ser tipo uma função) seria uma
>  sequencia do codigo, quando o codigo do produto for diferente do anterior
>  ele volta para 1, se for igual ele soma mais 1.
Bom, você pode usar uma query analítica para isso, mais ou menos assim:

select codigo,
  descricao,
  row_number() over (partition by codigo order by algumcampo) as linha
from tabela

A função row_number() retorna o número da linha (mais ou menos como o
ROWNUM), só que pode ser particionado por um ou mais campos - no caso,
o campo codigo - e ordenado pelos campos que você desejar).

Espero que ajude.

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] Imagens Armazenadas no banco

2007-09-19 Por tôpico Vitor Hugo Campos
Em 19/09/07, am_balielo <[EMAIL PROTECTED]> escreveu:
> Boa Tarde
>
>  Tenho um banco de dados Oracle 10g R2 instalado em servidor Windows
>  2003.
>  Estou gravando fotos no banco utilizando um campo Blob. O Problema
>  que gravo, +/- 300 fotos por dia e o espaço ocupados por estas fotos
>  está ficando grande. Em aproximadamente em 35 dias estou registrando
>  450 MB, só de fotos.
>  Gostaria de saber se eu consigo compactar estas fotos.
>
>  Alguém tem alguma sugestão p/ o meu problema.
>
>  Desde já muito obrigado.
>  Alessandro
Bom, tentar compactar as fotos não vai ajudar muito, principalmente se
for um formato de foto já compactada (ex: JPG), já que a compactação
resultante não reduziria quase nada (experimenta zipar um arquivo JPG,
a diferença de tamanho é mínima).

Além disso, 450MB para 10.500 fotos (=35 * 300) não é muita coisa,
cada foto tem em média menos de 45KB (uma foto 1600x1200 com qualidade
boa tem entre 500KB e 1MB). Então, você só tem 2 opções, ou apaga as
fotos que não precisa ou compra mais HD.

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] Query rownum sem FTS

2007-09-04 Por tôpico Vitor Hugo Campos
Em 04/09/07, Marco <[EMAIL PROTECTED]> escreveu:
> Boa tarde pessoal,
>
>  Gostaria de saber se existe alguma maneira de reescrever a query abaixo para 
> executar a mesma consulta sem fazer full table scan.
>
>  SELECT /*+ FIRST_ROWS(10)*/ *
>  FROM
>  (
>  SELECT ROWNUM AS ROW_NUM, T.*
>  FROM TESTE T
>  )
>  WHERE ROW_NUM <= 10
Em primeiro lugar, jogue no lixo essa idéia de que FTS = lento e
ÍNDICE = rápido: há várias situações em que usar índices é MAIS LENTO
do que acessar a tabela inteira. Mais detalhes em:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:9422487749968

Voltando ao SQL, você não evitará o full table scan, mas pode agilizar
muito o tempo de resposta, usando simplesmente:

SELECT ROWNUM AS ROW_NUM,
   T.*
  FROM TESTE T
 WHERE ROWNUM <= 10

Mas, se precisar fazer alguma ordenação, você pode usar o seguinte:

SELECT *
  FROM (SELECT T.*
  FROM TESTE T
 ORDER BY ALGUMCAMPO)
 WHERE ROWNUM <= 10

A idéia é usar o ROWNUM do lado de FORA do sub-select, e não do lado
de dentro, como você tinha feito. Os tempos de resposta são totalmente
diferentes: do lado de dentro, todas as linhas são processadas e só
depois filtra; do lado de fora, o filtro é feito ENQUANTO o resultado
está sendo gerado, ou seja, quando chegar no 10o. registro, a operação
termina.

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] Tuning SQL

2007-08-30 Por tôpico Vitor Hugo Campos
Em 30/08/07, fabiopdb <[EMAIL PROTECTED]> escreveu:
> Amigos estou com um problema nessa consulta será alguem (iluminado)
>  pode me ajudar pois esta consulta esta demorando 7hs 
>  Se alguem tiver alguma ideia eu agradeço muito.
>
>  CREATE OR REPLACE VIEW VENDAS_INDIRETAS AS (...)

Bom, você pode começar a resolver tirando esses /*+RULE*/ da sua
query, e de preferência esqueça que esse hint existe. Só de fazer isso
já pode fazer uma diferença razoável no tempo de execução (desde, é
claro, que suas tabelas sejam analisadas de tempos em tempos).

Além disso, se você já souber de antemão que os registros de cada uma
das subconsultas não repitam registros entre cada uma das partes, você
pode trocar o UNION por UNION ALL, que é muito mais rápido mas não
verifica se já existe um registro igual no conjunto resultante.

Colocar também a condição:

WHERE cod_classe_extra not in (6, 7, 11, 12, 13, 15, 16, 17, 19, 20)

dentro de cada subquery dos UNION's também vai te ajudar.

Uma última coisa, mas isso não faz tanta diferença de performance:
você pode trocar o seu:

to_date('01' || '/' || TO_CHAR(vpc.dt_parcelamento,
'mm/'), 'dd/mm/') REFERENCIA,

por:

TRUNC(vpc.dt_parcelamento, 'mm') REFERENCIA,

já que assim ele não precisa converter de date para varchar e vice-versa.

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] array de bytes

2007-08-14 Por tôpico Vitor Hugo Campos
Em 14/08/07, Andre Santos <[EMAIL PROTECTED]> escreveu:
> Vitor
>
>  Mas, independente do conjunto de caracteres configurado, o código numérico
>  armazenado sempre é o mesmo, não?
>  Por exemplo, um CHR(200) pode representar caracteres diferentes (dependendo
>  da configuração), mas o código numérico (binário) armazenado sempre será o
>  200. Não é isso?
>  Imagino que o Eric precise apenas do código numérico (não da representação
>  do caractere)...
Nem sempre. Suponha que no characterset WE8MSWIN1252 o caracter
CHR(200) seja "£", e no WE8ISO8859P1 o mesmo caracter seja o CHR(210).
Se a função do Eric tiver um byte que seja 200, for gravado em um
cliente WE8MSWIN1252 e for lido em um cliente WE8ISO8859P1, o retorno
do outro cliente vai ser 210, já que o banco vai converter
automaticamente. Para o tipo VARCHAR2, o que importa é a representação
do caracter, e não o seu valor binário, já que a idéia é seu conteúdo
ser lido pelo usuário.

Como a grande maioria das tabelas de caracteres define o conjunto de
caracteres "genéricos" da tabela ASCII da mesma forma, então usar
hexadecimal ou Base64 não vão te dar problema, já que não terão
problema de conversão.

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] EXPORT Lento

2007-08-03 Por tôpico Vitor Hugo Campos
Em 03/08/07, cegoncalvesvr <[EMAIL PROTECTED]> escreveu:
> Amigos,
>
>  O meu servidor é um Pentium IV 2.4 Ghz
>1,5 Gb de RAM
>Oracle 9.2.0.7
>Disco de 100 Gb
>C: com o SO = 10 GB
>D: (oracle e datafiles)= 30 GB (Livre: 26 MB)
>E: Datafiles = 35 GB (Livre: 9,77 GB)
>
>  O meu export esta muito lento.
>  Detalhe: o banco esta parado, ninguem esta acessando-o
>  Restringi o acesso.
>
>  O exp gerado é um arquivo de aproximadamente 06 a 07 GB
>  Comando executado:
>  Exp userid=dbamv/[EMAIL PROTECTED] file=arquivo_de_saida
>  owner=dbamv,dbasgu consistent=y  statistics=none log=mv2000_exp.log
>
>  Podemos melhorar a velocidade ou não.
>  O servidor esta fraco nos discos?
>  O disco é 5.200 rpm e SATA
>  Abs.
Bom, colocar o banco e o sistema operacional no mesmo HD não é uma
idéia das melhores se o objetivo é performance, já que a
leitura/gravação de dados do BD concorre, por exemplo, com a geração
de swap do SO (principalmente no Windows, que não me parece ser o
melhor gerenciador de swap do mundo). O ideal seria você colocar um
disco separado para seus datafiles, de preferência o HD mais rápido
que você conseguir encontrar.

Quanto ao comando que você está usando, tem algumas coisas que você pode fazer:
1) Se você está exportando os dados no próprio servidor, então você
pode tirar o "@servidordeproducao" para tirar o overhead de acesso à
rede;
2) Já que o banco de dados está parado e os dados não vão mudar, então
não há necessidade de usar a opção "consistent=y";
3) Se a sua idéia é exportar os dados para serem usados em outro
servidor com o mesmo character set, então você pode usar a opção
"direct=y" para aumentar a performance.

Espero que ajude.

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] Validação de master/detail pelo Oracle

2007-07-25 Por tôpico Vitor Hugo Campos
Em 25/07/07, Vitor Hugo Campos<[EMAIL PROTECTED]> escreveu:
> Em 25/07/07, Josinei Barbosa da Silva <[EMAIL PROTECTED]> escreveu:
> > Boa tarde a todos?
> >
> >  Tenho uma tabela de nota fiscal e outra de itens da nota. Como manda
> >  os bons costumes de modelagem, a minha tabela de itens tem um foreign
> >  key para a tabela de nota fiscal. Eu não posso permitir que uma nota
> >  fiscal exista sem itens. Como faço isso?
> >  Meu primeiro impulso foi pensar em uma trigger, mas os itens são
> >  incluídos depois da nota, logo não consigo executar um SELECT na
> >  tabela de itens durante a inclusão de uma nota.
> >
> >  Como eu poderia resolver isso pelo banco de dados?
> >
> >  Desde já, obrigado.
>
> Há um link explicando isso no site do AskTom:
> http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:42170695313022
>
> No seu caso, você poderia criar um campo VALTOTALITENS para isso...
> além de resolver seu problema, você não precisa fazer um join para
> fazer consultas relativas ao total dos itens das notas!! :D
Só explicando melhor o que o artigo sugere: em vez de você fazer uma
constraint "normal" (já que ao inserir a constraint já seria violada
porque seu valor é zero), colocando a constraint como DEFERRED, a
constraint só é verificada na hora do COMMIT, e como a gravação da
nota é atômica (espero eu... :P), na hora em que a constraint for
verificada (ou seja, no COMMIT), o valor já vai ter sido incrementado
pela trigger dos itens.

Essa técnica também é útil para o caso de, por algum motivo, você
precisar mudar o valor de um campo chave de uma tabela que tenha uma
FK relacionada, mas isso também permite algumas bizarrices do tipo
"poder inserir em uma tabela filha antes de inserir na tabela mãe",
enlouquecendo qualquer trigger que dependa que a filha exista antes da
mãe...

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] Validação de master/detail pelo Oracle

2007-07-25 Por tôpico Vitor Hugo Campos
Em 25/07/07, Josinei Barbosa da Silva <[EMAIL PROTECTED]> escreveu:
> Boa tarde a todos?
>
>  Tenho uma tabela de nota fiscal e outra de itens da nota. Como manda
>  os bons costumes de modelagem, a minha tabela de itens tem um foreign
>  key para a tabela de nota fiscal. Eu não posso permitir que uma nota
>  fiscal exista sem itens. Como faço isso?
>  Meu primeiro impulso foi pensar em uma trigger, mas os itens são
>  incluídos depois da nota, logo não consigo executar um SELECT na
>  tabela de itens durante a inclusão de uma nota.
>
>  Como eu poderia resolver isso pelo banco de dados?
>
>  Desde já, obrigado.

Há um link explicando isso no site do AskTom:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:42170695313022

No seu caso, você poderia criar um campo VALTOTALITENS para isso...
além de resolver seu problema, você não precisa fazer um join para
fazer consultas relativas ao total dos itens das notas!! :D

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: Re: [oracle_br] Ferramenta de Adminsitração ORACLE 10G

2007-07-17 Por tôpico Vitor Hugo Campos
Há também uma outra ferramenta, da própria Oracle, que é um pouco mais
barata (R$ 0,00!!)... :D

Oracle SQL Developer:
http://www.oracle.com/technology/software/products/sql/index.html

Em 17/07/07, Luiz Fernando G. Verona <[EMAIL PROTECTED]> escreveu:
> Tem uma ferramenta, TOAD da quest...
>
>  Só não sei o valor da licença.
>
>  http://www.quest.com/
>
>  Abraços

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] Re: Oracle ou DB2 ?

2007-07-16 Por tôpico Vitor Hugo Campos
Em 14/07/07, rei_do_delphi <[EMAIL PROTECTED]> escreveu:
> boa tarde a todos.
>  Bom, gostaria de dar minha contribuição a vocês sobre o que eu "ACHO".
>
>  tanto Oracle quanto o Db2 da Big Blue são excelentes produtos, isso é
>  indiscutível. Quanto a qual é o melhor, depende. Comparando-se
>  plataformas idênticas, mesmo  hardware, mesmo SO etc, ambos tem
>  performance quase que idênticas, porém, DB2 pode-se rodar em
>  Mainframe, onde acredito que Oracle não possa, pelo menos nunca ouvi
>  falar de oracle em Z/Os. As pessoas pensam que Mainframe é plataforma
>  ultrapassada, com certeza afirmo a todos vocês que não. Se vocês
>  pegarem 10 dos maiores bancos do mundo, 7 deles no mínimo utiliza
>  mainframe, pois o poder de processamento dessas maquinas é algo
>  incrível. Voltando a comparação, eu sinceramente acho o DB2 mais
>  performatico, embora esteja estudando ainda o Oracle. O problema é o
>  seguinte: Existem vagas para DBA Db2? Sim, existem, mas infelizmente,
>  essas só estão reservadas aos DBA´s SENIOR, sendo você que acabou de
>  estudar e passar nas provas de certificação 700 e 701(para 8.1) ou
>  730 e 731( para 9.1) ,assim como eu passei na versão 8.1,
>  impossibilitado de encontrar vagas em seu perfil para treinar seu
>  skill e trabalhar no que gosta. Portanto, se você pretende estudar
>  algum banco de dados hoje em dia, faça a escolha para o Oracle, pois
>  mesmo sendo menos performatico que o DB2( minha mera opinião), há
>  muito mais vagas disponíveis no mercado, em minha consultoria mesmo,
>  tem umas 4 ou 5 vagas de oracle para Junior e 2 ou 3 para Senior e
>  Pleno. Espero ter contruibuido para todos, expressando minha opinião.
>  Obrigado.
Só para informação: o Oracle tem versões para uma variedade bem grande
de sistemas operacionais/plataformas, incluindo o z/OS. Só não posso
falar da performance dele porque nunca vi um pessoalmente.

A lista das versões disponíveis do Oracle 10g está no link abaixo:
http://www.oracle.com/technology/software/products/database/oracle10g/index.html

Para facilitar, segue a lista, abaixo:

* Oracle Database 10g Release 2 (10.2.0.3) for Microsoft Windows Vista
* Oracle Database 10g Release 2 (10.2.0.2) for HP OpenVMS Alpha
* Oracle Database 10g Release 2 (10.2.0.2) for OpenVMS Itanium
* Oracle Database 10g Release 2 (10.2.0.2) for Solaris Operating System (x86)
* Oracle Database 10g Release 2 (10.2.0.2) for HP Tru64 UNIX
* Oracle Database 10g Release 2 (10.2.0.2) for z/Linux
* Oracle Database 10g Release 2 (10.2.0.2) for z/OS (OS/390)
* Oracle Database 10g Release 2 (10.2.0.1.0) for Solaris Operating
System (x86-64)
* Oracle Database 10g Release 2 (10.2.0.1.0) for HP-UX Itanium
* Oracle Database 10g Release 2 (10.2.0.1.0) for Linux Itanium
* Oracle Database 10g Release 2 (10.2.0.1.0) for Linux on Power
* Oracle Database 10g Release 2 (10.2.0.1.0) for Microsoft Windows (x64)
* Oracle Database 10g Release 2 (10.2.0.1.0) for Microsoft Windows
(64-bit Itanium)
* Oracle Database 10g Release 2 (10.2.0.1.0) for Linux x86-64
* Oracle Database 10g Release 2 (10.2.0.1.0) for Microsoft Windows
* Oracle Database 10g Release 2 (10.2.0.1.0) for Linux x86
* Oracle Database 10g Release 2 (10.2.0.1.0) for Solaris Operating
System (SPARC) (64-bit)
* Oracle Database 10g Release 2 (10.2.0.1.0) for AIX5L
* Oracle Database 10g Release 2 (10.2.0.1.0) for HP-UX PA-RISC

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] Informações Técnicas - Oracle 10g Enterprise Edition (EE)

2007-07-16 Por tôpico Vitor Hugo Campos
Em 13/07/07, junior.alexandre <[EMAIL PROTECTED]> escreveu:
> Salve galera,
>
>  Alguém saberia me informar onde conseguir, ou então me passar algumas
>  caracteristicas técnicas do Oracle Enterprise Edition 10g tipo:
>
>  - Tamanho Máximo de um Database:
>  - Tamanho Máximo de uma tabela:
>  - Quantidade Máxima de linhas em uma tabela:
>  - Quantidade Máxima de colunas em uma tabela:
>  - Quantidade Máxima de Index por tabela:
>  - Quantidade Máxima de Processador:
>
>  Para a edição Express Edition (XE) achei facilmente a informação,
>  porem, para a EE está meio complicado. Quem puder me ajudar agradeço!
>
>  Valeu, fico no aguardo.
>
>  Alê Junior.
A lista de limites do banco de dados está disponível no link abaixo:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/limits.htm

-- 
Vitor Hugo Campos
Desenvolvedor/DBA Oracle 10g

E-mail/MSN: [EMAIL PROTECTED]
Telefones: (27) 2121-5531 / 8819-2643
skype:vitorh.campos


Re: [oracle_br] Select não retorna DATA

2007-07-06 Por tôpico Vitor Hugo Campos
Use a função TO_DATE para formatar uma string para o formato de data.

Seu SQL ficaria mais ou menos assim:

SELECT count(*)
FROM interface.fol_cubo_inadimplencia

WHERE ind_processado IS NULL
AND to_char(dat_processamento) = TO_DATE('30/5/2007 15:52:22',
'DD/MM/ HH24:MM:SS')

Mais detalhes sobre o TO_DATE podem ser vistos em
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions183.htm#SQLRF06132
.

OBS: a formatação dos minutos está incorreta. Você pode dar uma olhada
no link acima para poder ver a formatação correta.

Alex Ferreira escreveu:
>
> Bom dia Pessoal,
> Estou tentando fazer um select para me trazer detalhe da tabela onde
> as informações são Datas, ex:
> 30/5/2007 15:52:22
> 30/5/2007 15:52:33
> 30/5/2007 15:52:45
> 30/5/2007 15:52:54
> 28/6/2007 12:20:06
> 28/6/2007 12:20:14
> 28/6/2007 12:20:22
> 28/6/2007 12:20:30
> Qdo dou um select, ele não me retorna nada:
> SELECT count(*)
> FROM interface.fol_cubo_inadimplencia
> WHERE ind_processado IS NULL
> AND dat_processamento = '28/6/2007 12:20:30'
> Já tentei:
> SELECT count(*)
> FROM interface.fol_cubo_inadimplencia
> WHERE ind_processado IS NULL
> AND to_char(dat_processamento) = '30/5/2007 15:52:22, DD/MM/
> HH24:MM:SS'
> E continua me retorando nada...
> Alguém pode me dar um Help
> Obrigado!
>
> -- 
> "O Rio atinge seus objetivos porque aprendeu a contornar seus obstáculos"
> Lao Tsé
>
> Atividade nos últimos dias
>
>*
>12
>   Novos usuários
>   
> <http://br.groups.yahoo.com/group/oracle_br/members;_ylc=X3oDMTJmMHJpMDc5BF9TAzk3NDkwNDM3BGdycElkAzE2ODI4OTYEZ3Jwc3BJZAMyMTM3MTE0Njg5BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzExODM3MTk3NzI->
>
> Visite seu Grupo
> <http://br.groups.yahoo.com/group/oracle_br;_ylc=X3oDMTJlYWkzaXNpBF9TAzk3NDkwNDM3BGdycElkAzE2ODI4OTYEZ3Jwc3BJZAMyMTM3MTE0Njg5BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTE4MzcxOTc3Mg-->
>
> Yahoo! Mail
>
> Conecte-se ao mundo
> <http://us.lrd.yahoo.com/_ylc=X3oDMTJscG4wZWdmBF9TAzk3NDkwNDM3BF9wAzEEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawNtYWlsBHN0aW1lAzExODM3MTk3NzI-;_ylg=1/SIG=10ujd6ds6/**http%3A//mail.yahoo.com.br/>
>
> Proteção anti-spam
>
> Muito mais espaço
>
> Yahoo! Barra
>
> Instale grátis
> <http://us.lrd.yahoo.com/_ylc=X3oDMTJvc29lNHJhBF9TAzk3NDkwNDM3BF9wAzIEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawN0b29sYmFyBHN0aW1lAzExODM3MTk3NzI-;_ylg=1/SIG=111ngvtas/**http%3A//br.toolbar.yahoo.com/>
>
> Buscar sites na web
>
> Checar seus e-mails .
>
> Yahoo! Grupos
>
> Crie seu próprio grupo
> <http://br.groups.yahoo.com/;_ylc=X3oDMTJvdHU4dnI1BF9TAzk3NDkwNDM3BF9wAzMEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawNncm91cHMyBHN0aW1lAzExODM3MTk3NzI->
>
> A melhor forma de comunicação
>
> .
>
>  

-- 
Vitor Hugo Campos

Desenvolvimento - Informática
Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



Re: [oracle_br] Segurança

2007-05-24 Por tôpico Vitor Hugo Campos
Bia, impedir que o usuário acesse o banco através do seu executável não
adianta de nada porque o usuário pode simplesmente renomear o sqlplus
para seuprograma.exe e rodar normalmente. Uma idéia do que você pode
fazer para atrapalhar a vida de algum engraçadinho que tente entrar via
SQLPlus seria você deixar o usuário só com acesso de CONNECT e criar uma
ROLE identificada por senha que conteria os acessos às tabelas dos seus
sistemas. Então, logo depois de entrar no sistema, a aplicação deve
executar o comando:

SET ROLE  IDENTIFIED BY ;

Para poder ter acesso ao resto dos dados.

A parte chata é definir onde vai ficar essa senha: ou você deixa no
próprio executável (daí a pessoa teria que usar um disassembler para
poder descobrir) ou você coloca em uma tabela em que os usuários
"normais" teriam acesso (mas qualquer curioso que fosse olhar as tabelas
que ele tem direito em ALL_TABLES poderia descobrir essa tabela e
identificar a senha). A partir dessas opções você pode escolher como
impedir que o usuário descubra essa senha (normalmente usando
criptografia, mas isso não tornaria impossível que a pessoa descubra, só
tornaria bem mais complicado, mas para a maioria dos casos já seria
suficiente).

O correto mesmo é não dar ao usuário mais acesso do que deveria ter (ex:
não dar qualquer grant do tipo ANY, como SELECT ANY TABLE, para os
usuários), e colocar auditoria nas tabelas importantes para descobrir
quem fez o que com seus dados. Daí, mesmo se alguém entrar com o
sqlplus, não conseguirá fazer muita coisa a mais do que faria através do
sistema.

Bia Fitzgerald escreveu:
>
> Olá pessoal...
>
> Alguém sabe como impedir que um determinado usuário acesse o BD via
> aplicativos como sqlplus e TOAD e somente acesse via sistema?
> Obrigada,
> Bia.
>
> __
> Fale com seus amigos de graça com o novo Yahoo! Messenger
> http://br.messenger.yahoo.com/ <http://br.messenger.yahoo.com/>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  


-- 
Vitor Hugo Campos

Desenvolvimento - Informática
Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



Re: Res: [oracle_br] ORA-00604: error occurred at recursive SQL level 2

2007-05-21 Por tôpico Vitor Hugo Campos
Pois é, por isso que falei que essa solução deve ser temporária. Essa
opção nem deve existir em desenvolvimento, já que o correto é
desenvolver SEMPRE usando variáveis de bind. Além desse seu problema com
locks, eu já vi problemas  na execução de algumas queries paralelas (nem
sei se foi antes ou depois do último patchset da Oracle, mas já vi).
Portanto, o quanto mais rápido o desenvolvimento lançar uma versão com
BIND para voltar ao CURSOR_SHARING=EXACT, melhor.

Nelson Cartaxo escreveu:
>
> Me intrometendo um pouco ai, muito cuidado com o cursor_sharing=force.
> Já parei um banco de produção por causa desse parametro. Ele começou a
> fazer blocking locks e no final tinha mais de 1000 sessões presas.
> Portanto aconselho a fazer primeiro em desenvolvimento e testar.
>
> Att,
>
> Nelson Cartaxo
>
> Atividade nos últimos dias
>
>*
>31
>   Novos usuários
>   
> <http://br.groups.yahoo.com/group/oracle_br/members;_ylc=X3oDMTJmaWo2cDNnBF9TAzk3NDkwNDM3BGdycElkAzE2ODI4OTYEZ3Jwc3BJZAMyMTM3MTE0Njg5BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzExNzk3NjAxMTk->
>
> Visite seu Grupo
> <http://br.groups.yahoo.com/group/oracle_br;_ylc=X3oDMTJldnV0cmlyBF9TAzk3NDkwNDM3BGdycElkAzE2ODI4OTYEZ3Jwc3BJZAMyMTM3MTE0Njg5BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTE3OTc2MDExOQ-->
>
> Yahoo! Mail
>
> Conecte-se ao mundo
> <http://us.lrd.yahoo.com/_ylc=X3oDMTJsdWZkYm52BF9TAzk3NDkwNDM3BF9wAzEEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawNtYWlsBHN0aW1lAzExNzk3NjAxMTg-;_ylg=1/SIG=10ujd6ds6/**http%3A//mail.yahoo.com.br/>
>
> Proteção anti-spam
>
> Muito mais espaço
>
> Yahoo! Barra
>
> Instale grátis
> <http://us.lrd.yahoo.com/_ylc=X3oDMTJvbjJ2a3YyBF9TAzk3NDkwNDM3BF9wAzIEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawN0b29sYmFyBHN0aW1lAzExNzk3NjAxMTg-;_ylg=1/SIG=111ngvtas/**http%3A//br.toolbar.yahoo.com/>
>
> Buscar sites na web
>
> Checar seus e-mails .
>
> Yahoo! Grupos
>
> Crie seu próprio grupo
> <http://br.groups.yahoo.com/;_ylc=X3oDMTJvdWxtMmJnBF9TAzk3NDkwNDM3BF9wAzMEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawNncm91cHMyBHN0aW1lAzExNzk3NjAxMTg->
>
> A melhor forma de comunicação
>
> .
>
>  


-- 
Vitor Hugo Campos

Desenvolvimento - Informática
Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



Re: [oracle_br] Opinião para melhorar des empenho

2007-05-21 Por tôpico Vitor Hugo Campos
Olá,

Já vi gente pela internet reclamando da performance do RAID5,
principalmente em servidores com muitas inserções/atualizações.

Acho melhor você usar RAID 1+0 (ou RAID 1 usando o ASM do Oracle 10g).
Se puder, arranje mais uns 2 discos menores (não precisa ser SCSI, pode
ser SATA mesmo), faça RAID1 com eles e coloque o sistema operacional e a
instalação do banco lá, deixando os outros 4 discos só para os dados.

Heber Blain Gonçalves escreveu:
>
> Olá, pesesoal,
>
> Tenho nível de conhecimento apenas operacional (instalação,
> configuração básica, ...) de Oracle, mas agora estou participando de
> um projeto em que não existe um DBA e precisamos resolver um problema
> de performance de uma aplicação, a qual está sendo migrada para um
> novo servidor. Estou sendo responsável por montar a arquitetura da
> solução, mas estou bastante inseguro se o que estou propondo pode ou
> não ajudar a melhorar a performance do lado da Infra-estrutura. (o
> pessoal de desenvolvimento já fez todo o tuning sql possível, o
> problema tem sido realmente IO em excesso para a máquina que não
> suportava).
>
> A nova solução compreende um hw comprado pelo cliente, um Servidor
> Dell com 4 HDs de 165 Gb e provavelmente uma controladora RAID, não
> tenho acesso de que máquina específica estamos tratando, então
> trabalho com essa suposição.
>
> Abaixo descrevo como pretendo montar a arquitetura desse servidor, por
> favor, gostaria que comentassem se a idéia que tenho está correta e se
> algo mais pode ajudar.
>
> - RAID 5
>
> Estou pensando em dispor os 4 HDs no esquema de RAID 5, pois acredito
> que esse tem um ótimo custo benefício, tendo redundância (segurança
> também é um requisito), e aumentando as taxas de leitura pelo
> paralelismo, já que os dados estarão distribuídos nos 4 discos. Mas e
> quanto as operações de escrita? Existe um overhead por causa da
> paridade ou isso tem pouco impacto?
>
> - LVM
>
> Já considerando que tenho um RAID 5, existe alguma vantagem em
> distribuir os datafiles em diferentes volumes lógicos num VG? Por
> exemplo: além das partições do SO, poderia ter particionado /LVdata1
> /LVdata2 e /LVdata3, cada um tendo uma parcela dos datafiles do banco.
> Eu sei que isso pode me aumentar a segurança caso tenha um LV
> corrompido ou se houver um erro na aplicação e essa começar a escrever
> indiscriminadamente no datafile que encheria a partição. Se tive
> apenas uma partição, nesse caso, com certeza todo o sistema estaria
> comprometido, certo? Mas e quanto a performance, há algum ganho/perda
> de desempenho em se utilizar LVM?
>
> - ÍNDICES
>
> Outro ponto diz respeito aos arquivos de índices, que no caso dessa
> aplicação são enormes. Existe alguma best practice quanto a eles?
> Deveria deixá-los num LV a parte?
>
> - PARTITIONING
>
> Essa foi uma sugestão dos DBAs do cliente, existe uma tabela que pode
> ser facilmente particionada pelo campo mês. A minha dúvida aí reside
> se nesse esquema de particionamento são criados vários arquivos, um
> pra cada partição, ou se tudo se resume a um datafile. Se forem vários
> arquivos, tenho vantagem em distribuí-los pelos diferentes LVs? (Se
> não fosse usar RAID 5, a pergunta seria: teria vantagem em
> distribuí-los nos vários discos?)
>
> Qualquer idéia ou comentário será muito bem-vindo !!!
>
> Obrigado,
>
> Atividade nos últimos dias
>
>*
>30
>   Novos usuários
>   
> <http://br.groups.yahoo.com/group/oracle_br/members;_ylc=X3oDMTJmajIwdXZyBF9TAzk3NDkwNDM3BGdycElkAzE2ODI4OTYEZ3Jwc3BJZAMyMTM3MTE0Njg5BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzExNzk3NDUwOTg->
>
> Visite seu Grupo
> <http://br.groups.yahoo.com/group/oracle_br;_ylc=X3oDMTJldTNoZGY1BF9TAzk3NDkwNDM3BGdycElkAzE2ODI4OTYEZ3Jwc3BJZAMyMTM3MTE0Njg5BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTE3OTc0NTA5OA-->
>
> Yahoo! Mail
>
> Conecte-se ao mundo
> <http://us.lrd.yahoo.com/_ylc=X3oDMTJsdnNrcGcwBF9TAzk3NDkwNDM3BF9wAzEEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawNtYWlsBHN0aW1lAzExNzk3NDUwOTg-;_ylg=1/SIG=10ujd6ds6/**http%3A//mail.yahoo.com.br/>
>
> Proteção anti-spam
>
> Muito mais espaço
>
> Yahoo! Barra
>
> Instale grátis
> <http://us.lrd.yahoo.com/_ylc=X3oDMTJvNGtoYzFqBF9TAzk3NDkwNDM3BF9wAzIEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawN0b29sYmFyBHN0aW1lAzExNzk3NDUwOTg-;_ylg=1/SIG=111ngvtas/**http%3A//br.toolbar.yahoo.com/>
>
> Buscar sites na web
>
> Checar seus e-mails .
>
> Yahoo! Grupos
>
> Crie seu próprio grupo
> <http://br.groups.yahoo.com/;_ylc=X3oDMTJvZGdmNWUyBF9TAzk3NDkwNDM3BF9wAzMEZ3JwSWQDMTY4Mjg5NgRncnBzcElkAzIxMzcxMTQ2ODkEc2VjA25jbW9kBHNsawNncm91cHMyBHN0aW1lAzExNzk3NDUwOTg->
>
> A melhor forma de comunicação
>
> .
-- 
Vitor Hugo Campos

Desenvolvimento - Informática
Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



[oracle_br] (unknown)

2007-05-21 Por tôpico Vitor Hugo Campos
Tem, sim, é o Oracle Data Guard. Mais informações sobre ele no link abaixo:

http://www.oracle.com/technology/deploy/availability/htdocs/DataGuardOverview.html

OBS: só funciona na versão Enterprise do banco.

moreninho123 escreveu:
>
> Existe alguma ferramenta de replicação oracle com front web e asincrona
> que garanta a integridade do bando destino?
>
>  

-- 
Vitor Hugo Campos

Desenvolvimento - Informática
Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



Re: [oracle_br] ORA-00604: error occurred at recursive SQL level 2

2007-05-21 Por tôpico Vitor Hugo Campos
Vinicius, a última linha da mensagem já está dando a dica: ele não
conseguiu alocar 4200 bytes na shared pool.

O que pode ter acontecido é que a shared pool esteja toda ocupada com
cursores SQL abertos e faltou memória para colocar mais um objeto.
Normalmente isso acontece porque o sistema está gerando SQL's sem
variáveis de bind (ex: SELECT * FROM CLIENTES WHERE CODCLIENTE = 1, em
vez de SELECT * FROM CLIENTES WHERE CODCLIENTE = :CODCLIENTE). Dá uma
olhada em V$SQL, se houver muitos SQL's com valores literais em vez de
variáveis de bind, você pode fazer o seguinte:

1) ALTER SYSTEM SET CURSOR_SHARING=FORCE
O comando acima vai fazer com que o banco pegue o SQL que a aplicação
mandou e trocar todos os literais por variáveis de bind. Isso deve ser
uma solução temporária, porque o banco gasta um pouco mais de CPU
fazendo essas conversões e, francamente, quem deveria criar as variáveis
de bind deveria ser a própria aplicação.

2) Solicitar a correção da aplicação para usar variáveis de BIND em vez
de literais (e dar uns cascudos nos programadores para eles nunca mais
fazerem isso)... :P

Se mesmo assim o erro continuar aparecendo, aumente o valor da shared pool.

Vinicius Amorim escreveu:
>
> Estou com esse problema, alguem pode ajudar...
>
> O banco esta sendo populando por uma aplicacao, nao tem mais nada alem do
> oracle e da aplicacao rodando.
>
> Quando chega em um determinado ponto, temos esse erro na log do banco.
>
> Errors in file
> /opt/ora817/OraHome/admin/ora817/bdump/ora817_snp2_21949.trc:
> ORA-00604: error occurred at recursive SQL level 2
> ORA-04031: unable to allocate 4200 bytes of shared memory ("shared
> pool","JOB$","sga heap","state objects")
>
> Aguem sabe o q fazer?
>
> -- 
> Vinícius Amorim Teixeira
>
> 9965 90 18
>
> Email - [EMAIL PROTECTED] <mailto:vini.rcc%40gmail.com>
> MSN - [EMAIL PROTECTED] <mailto:vini.amorim%40hotmail.com>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  


-- 
Vitor Hugo Campos

Desenvolvimento - Informática
Autoglass - Especialista em Vidro Automotivo
+55 (27) 2121-5531
http://www.autoglass.com.br/



[oracle_br] Forms

2006-10-25 Por tôpico Vitor Hugo
Boa Tarde a Todos,

Será que alguém teria um bom tutorial para um iniciante em Forms reports, onde 
eu pede-se aprender.

Obrigado pela ajuda.

Vitor Hugo Brito de Oliveira


-
 Você quer respostas para suas perguntas? Ou você sabe muito e quer 
compartilhar seu conhecimento? Experimente o Yahoo! Respostas!

[As partes desta mensagem que não continham texto foram removidas]




Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle
VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas"

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
--
Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/  

  
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 



[oracle_br] Conexão JDBC Oracle

2006-10-19 Por tôpico Vitor Hugo
Prezado Senhores(as)

Estou passando uma dificuldade para resolver o problema de conexão utilizando 
JDBC no ORACLE 9i, para continuar trabalhando eu configurei uma conexão ODBC 
está está funcionanco será que alguem poderia me auxiliar nesta enorme dúvida.

Vitor Hugo Brito de Oliveira


-
 Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! 

[As partes desta mensagem que não continham texto foram removidas]



Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle
VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas"

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
--
Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: WWW.ORACLEBR.COM.BR 

  
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html