[oracle_br] ORA-29283 - urgente

2010-08-26 Por tôpico Carlos Martello
pessoal, boa tarde. Estou com um problema que deve ser resolvido
urgentemente, pois tenho uma apresentação a ser feita amanha.

possuia o seguinte ambiente em um dos clientes:

servidor de app - windows
servidor de oracle 10g 64bits - windows

sendo assim desenvolvi uma procedure que gera arquivos atraves do server
oracle no servidor de app. para tal precisei subir o serviço da instancia do
banco com um usuário de rede. sem isso, nao conseguiria escrever em um
diretório na rede, apenas localmente.

hoje em dia precisei implantar a mesma rotina em outro cliente, com o
seguinte ambiente:

servidor de app - windows
servidor de oracle 10g 64bits - AIX

pedi diversas vezes a tarceirizada reponsavel pelos servidores que fizessem
alteração para subir a instancia do Oracle no AIX com um usuário de rede,
mas acredito q isso nao seja possivel. para ser bem sincero, desconheço esse
caso em ambiente Unix. Sendo assim, ontem explicando mais uma vez, muito
pacientemente o que eu queria, o atendente me disse entao que iria criar um
mapeamento no Unix apontando para o tal diretorio. Feito isso, continuo com
o mesmo problema, que é o erro em questão no assunto. Estou meio desesperado
pois tenho que rodar esta rotina até amanhã sem falta para uma apresentação
e pesquisei bastante já no google sobre isso sem sucesso.

Lembrando que faço este acesso através de DIRECTORIES criados no oracle...

segue exemplo:

SERVER AIX ORACLE
Nome do Directory Oracle - KML_82
Caminho - /RI_ENERGIA/KML_RELATORIOS/82/
Nome do compartilhamento de rede criado no AIX - RI_ENERGIA
Caminho de rede apontado pelo compartilhamento de rede -
\\10.1.1.111\ri_energia\

Ou seja, gostaria de através de uma procedure no servidor AIX, escrever
dados no diretório c:/ri_energia/kml_relatorios/82/ de um servidor WINDOWS
com IP 10.1.1.111. Neste a pasta c:/ri_energia/ está compartilhada como
RI_ENERGIA, com todas as permissões possíveis para todos os usuários.

O directory no Oracle tb está com todas as permissões possíveis para PUBLIC.

Confirmaram o funcionamento do compartilhamento com o seguinte comando:

BPORA / cd /RI_ENERGIA
BPORA /RI_ENERGIA ls -la
total 14575
drwxrwxr-x1 oracle   system16384 Aug 26 10:29 .
drwxr-xr-x   82 root system 8192 Aug 26 10:28 ..
-rwxrwxr-x1 oracle   system  242 Nov 14 2009
App_TesteResource.compiled
-rwxrwxr-x1 oracle   system   720896 Nov 14 2009
App_TesteResource.dll
drwxrwxr-x1 oracle   system16384 Jul 13 11:36 Abcdef
drwxrwxr-x

Sinceramente, não sei mais o que fazer.

Se alguem puder ajudar, ficarei muito grato.

Att,

Carlos Martello.


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



[oracle_br] Nome da procedure

2010-06-14 Por tôpico Carlos Martello
Pessoal, boa tarde.

Estou criando um package que será responsável por todo um processo de carga.
O mesmo faz referências às diversas procedures que são executadas, e todo o
acompanhamento pode ser feito através de uma tabela que armazena o log de
execução. Sendo assim, gostaria de saber se há alguma forma de assim como
conseguimos capturar o username de uma sessão através do comando USER
(select user from dual), capturar o nome da procedure que está sendo
executada.

Att,

Carlos Martello.


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



Re: [oracle_br] Nome da procedure

2010-06-14 Por tôpico Carlos Martello
Raul, na verdade o que eu gostaria era de pegar o nome do objeto como se
fosse alguma variavel de sessao dentro da própria procedure. Sei que isso
não existe, mas seria algo do tipo:

create or replace procedure owner.proc1 as

   v_proc constant varchar2(150) := *NAME_SELF_OBJECT*;

begin

 insert into tab_log (nome_procedure, descricao)
  values (v_proc, 'realizando merge de tabela origem com tabela
destino');
 commit;

merge into table1 etc;
commit;


 insert into tab_log (nome_procedure, descricao)
  values (v_proc, 'esvaziando tabela origem');
 commit;

delete * from tab2;
commit;
end;

Em 14 de junho de 2010 16:48, Raul Francisco Costa F. de Andrade, DBA 
raulf...@gmail.com escreveu:

 Este script mostra todos os usernames que estão usando determinado objeto:

 select /*+ rule */ a.SID, s.username from gv$access a, gv$session s
 where object = 'NOME_OBJETO'
 and s.inst_id = a.inst_id
 and s.sid = a.sid


 Espero que ajude

 Att.

 Raul


 Em 14 de junho de 2010 15:17, Carlos Martello 
 carlos.marte...@choice.com.br
  escreveu:

 
 
  Pessoal, boa tarde.
 
  Estou criando um package que será responsável por todo um processo de
  carga.
  O mesmo faz referências às diversas procedures que são executadas, e todo
 o
  acompanhamento pode ser feito através de uma tabela que armazena o log de
  execução. Sendo assim, gostaria de saber se há alguma forma de assim como
  conseguimos capturar o username de uma sessão através do comando USER
  (select user from dual), capturar o nome da procedure que está sendo
  executada.
 
  Att,
 
  Carlos Martello.
 
  [As partes desta mensagem que não continham texto foram removidas]
 
 
 



 --
 --
 Raul Francisco da Costa Ferreira de Andrade
 DBA - OCA - Oracle Certified Associate
 COBIT Foundation 4.1
 Fone: (41)8855-8874 Brt
 email: raulf...@gmail.com
 Skype: raul.andrade
 www.clickdba.com

 A adversidade leva alguns a serem vencidos
 e outros a baterem recordes.
 William Arthur Ward


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



 


 --
 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/

 --
 Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure
 » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
 http://www.oraclebr.com.br/
 
 Links do Yahoo! Grupos





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



[oracle_br] DBMS_SCHEDULER

2010-04-10 Por tôpico Carlos Martello
Pessoal, estou com um grande problema.

Tenho uma procedure que cria dentro de uma variavel CLOB, um bloco PL/SQL
maior que 32k (por isso uso a var CLOB), e precisaria executá-la em forma de
JOBS. Estou utilizando o DBMS_SCHEDULER.CREATE_JOB, porém o mesmo não aceita
como job_action uma variável CLOB (só aceitar varchar2).

Alguém sabe alguma forma de burlar essa limitação?

Att,

Carlos Martello.


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



RES: [oracle_br] Curso DBA oracle

2009-11-19 Por tôpico Carlos martello
Priscilla, a melhor opção que vejo entao é o da infnet...

tb estou cogitando fzr esse curso (por ser de menor duração que o da veiga) 
se nao me engano abre uma turma agora em dezembro.

Tem outros curaos muito mais baratos, mas nao oferecem parceria com o Oracle, o 
que impede a realização dos exames para certificação OCP e OCM.

Carlos Martello
DBA Oracle / Consultor de Tecnologia
TEL:  55+21+3094-6250
Choice Technologies S/A - Inteligência em Energia
e-mail: carlosmarte...@choice.com.br



-Mensagem original-
De: oracle_br@yahoogrupos.com.br em nome de Priscila Viana
Enviada: qui 19/11/2009 10:44
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Curso DBA oracle
 
Olá Edson,
eu conheço esse MBA já ouvi falar muito bem, mas no momento preciso de
listagem com os cursos rápidos aqui no rio de janeiro.

Muito obrigada.

2009/11/19 Edson Almeida (Tecnico) tecn...@consulting.com.br

 Priscila,

 Tem uma boa opção, o curso de MBA Banco de Dados Oracle da Veiga de Almeida
 no RJ

 Nessa PÓS vc tem toda formação de DBA Oracle (Cursos Oficiais) e ainda tem
 um titulo de Pós-Graduação com um custo mais barato.

 Veja o link


 http://uvaonline.uva.br/mkt/site/curso,80,100,__pos-graduacao_mba_sistema_de_gestao_empresarial_integrada_em_banco_de_dados_oracle_objetivos.html

 Se tiver alguma dúvida pode me contatar, eu sou professor e coordenador
 desse curso.

 e-mail: ed...@consulting.com.br

 Próxima turma em Feveiro/2010

 Att.

 Edson Almeida Jr



 2009/11/19 Priscila Viana priska@gmail.com

 
 
  Olá,
  Se alguem souber dos cursos para oracle que existem no rio de
  janeiro...estou precisando ...muito urgente...
 
  Obrigada.
  Priscila Viana
 
  [As partes desta mensagem que não continham texto foram removidas]
 
 
 



 --
 Edson Almeida Junior
 Consulting Tecnologia  Sistemas Ltda
 Telefones: (021) 8600-8439 / Celular (081) 9922-7401
 E-MAIL.: ed...@consulting.com.br
 MSN: e...@hotmail.com
 SKYPE: edsonalmeidajr

 VISITE: http://www.consulting.com.br


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



 


 --
 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/

 --
 Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure
 » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
 http://www.oraclebr.com.br/
 
 Links do Yahoo! Grupos





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




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



RES: [oracle_br] Curso DBA oracle

2009-11-19 Por tôpico Carlos martello
Priscilla, recebo informativos sempre desta empresa

http://www.gcm.com.br/treinamento.asp

é bem mais barato que Infnet, mas em compensaçãoa  empresa não oferece parceria 
Oracle, ou seja, não se trata de um curso oficial.

Como o mercado, por muitas vezes exige a certificação optarei pela Infnet ou 
pela Veiga.

Se procurar no Google, outras diversas opções como a DBA, Steffanini, etc, irão 
aparecer.

Espero ter ajudado. Qualquer coisa, fique a vontade para entrar em contato.

Att,

Carlos Martello
DBA Oracle / Consultor de Tecnologia
TEL:  55+21+3094-6250
Choice Technologies S/A - Inteligência em Energia
e-mail: carlosmarte...@choice.com.br



-Mensagem original-
De: oracle_br@yahoogrupos.com.br em nome de Priscila Viana
Enviada: qui 19/11/2009 10:56
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Curso DBA oracle
 
Isoo não tem problema pode me passar pq a faculdade da pessoa que estou
vendo isso tem, quanto a isso está tranquilo...é só um curso mesmo...

Muito obrigada.

2009/11/19 Carlos martello carlos.marte...@choice.com.br



 Priscilla, a melhor opção que vejo entao é o da infnet...

 tb estou cogitando fzr esse curso (por ser de menor duração que o da
 veiga) se nao me engano abre uma turma agora em dezembro.

 Tem outros curaos muito mais baratos, mas nao oferecem parceria com o
 Oracle, o que impede a realização dos exames para certificação OCP e OCM.

 Carlos Martello
 DBA Oracle / Consultor de Tecnologia
 TEL: 55+21+3094-6250
 Choice Technologies S/A - Inteligência em Energia
 e-mail: carlosmarte...@choice.com.br carlosmartello%40choice.com.br

 -Mensagem original-
 De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br em nome
 de Priscila Viana
 Enviada: qui 19/11/2009 10:44
 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br
 Assunto: Re: [oracle_br] Curso DBA oracle


 Olá Edson,
 eu conheço esse MBA já ouvi falar muito bem, mas no momento preciso de
 listagem com os cursos rápidos aqui no rio de janeiro.

 Muito obrigada.

 2009/11/19 Edson Almeida (Tecnico) 
 tecn...@consulting.com.brtecnico%40consulting.com.br
 

  Priscila,
 
  Tem uma boa opção, o curso de MBA Banco de Dados Oracle da Veiga de
 Almeida
  no RJ
 
  Nessa PÓS vc tem toda formação de DBA Oracle (Cursos Oficiais) e ainda
 tem
  um titulo de Pós-Graduação com um custo mais barato.
 
  Veja o link
 
 
 
 http://uvaonline.uva.br/mkt/site/curso,80,100,__pos-graduacao_mba_sistema_de_gestao_empresarial_integrada_em_banco_de_dados_oracle_objetivos.html
 
  Se tiver alguma dúvida pode me contatar, eu sou professor e coordenador
  desse curso.
 
  e-mail: ed...@consulting.com.br edson%40consulting.com.br
 
  Próxima turma em Feveiro/2010
 
  Att.
 
  Edson Almeida Jr
 
 
 
  2009/11/19 Priscila Viana priska@gmail.com priska.san%40gmail.com
 
 
  
  
   Olá,
   Se alguem souber dos cursos para oracle que existem no rio de
   janeiro...estou precisando ...muito urgente...
  
   Obrigada.
   Priscila Viana
  
   [As partes desta mensagem que não continham texto foram removidas]
  
  
  
 
 
 
  --
  Edson Almeida Junior
  Consulting Tecnologia  Sistemas Ltda
  Telefones: (021) 8600-8439 / Celular (081) 9922-7401
  E-MAIL.: ed...@consulting.com.br edson%40consulting.com.br
  MSN: e...@hotmail.com eajr%40hotmail.com
  SKYPE: edsonalmeidajr
 
  VISITE: http://www.consulting.com.br
 
 
  [As partes desta mensagem que não continham texto foram removidas]
 
 
 
  
 
 
  --
  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/
 
  --
  Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
 Procedure
  » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
  http://www.oraclebr.com.br/
  --
  Links do Yahoo! Grupos
 
 
 

 [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]





--
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/ 
--
Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
http://www.oraclebr.com.br

[oracle_br] Como pegar comandos ORACLE

2009-04-15 Por tôpico Carlos martello
Pessoal, alguém saberia me informar se existe a possibilidade de fazer o 
seguinte:

 

Pegar todos os comandos DDL e DML executados no banco de dados e gravá-los numa 
tabela?

 

Por exemplo:

Pegar o comando exato de um create, alter, truncate, drop table 
executado pelo Oracle.

Pegar o comando exato de um insert, delete, update executado pelo 
Oracle (mesmo sendo um insert via cursor ou insert-select, resgatar exatamente 
o insert into schema.table (col1, col2, , coln) values ('valor1', 
'valor2', , 'valorn');

 

Selects são totalmente desnecessários.

 

Att,

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: carlos.marte...@choice.com.br mailto:carlosmarte...@choice.com.br 

 



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



[oracle_br] limitar tempo de conexão

2009-03-12 Por tôpico Carlos martello
Pessoal, bom dia a todos

tentei, tentei e não consegui.

Alguém poderia me dizer como definir para que um usuário só possa ficar 
conectado no máximo 3 minutos por exemplo na base de dados?

A base que uso é Oracle 9i.

Obrigado desde já,

Carlos Martello
DBA Oracle / Consultor de Tecnologia
TEL:  55+21+3094-6250
Choice Technologies S/A - Inteligência em Energia
e-mail: carlosmarte...@choice.com.br



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



[oracle_br] Criação de usuários

2008-12-10 Por tôpico Carlos martello
Pessoal, boa tarde a todos.

 

Tenho a seguinte situação: quero criar um usuário para cada pessoa da equipe e 
dar grants de select para todas as tabelas, porém só quero que eles criem 
objetos no banco sob seus owners, assim como não possam criar nada em nenhuma 
tablespace que não seja sua tablespace default. Criei tudo direitinho e a única 
coisa que não funcionou ao efetuar alguns testes foi: o usuário do banco só 
consegue criar objetos sob seu owner, porém em qualquer tablespace. Como fazer 
para que ele crie objetos somente na tablespace USUARIOS conforme indicado 
abaixo? A minha versão do banco é 9i.

 

O  script utilizado é o seguinte:

  create user CMARTELLO 

 identified by teste123

 default tablespace USUARIOS 

 temporary tablespace TEMP

 account unlock;

  grant connect to CMARTELLO;

  grant resource to CMARTELLO;

  grant select any table to CMARTELLO;

 

Abraços,

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 



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



RE: [oracle_br] Criação de usuários

2008-12-10 Por tôpico Carlos martello
Bem pessoal, acredito que resolvi da seguinte forma:

 

drop user CMARTELLO cascade;

  create user CMARTELLO 

 identified by teste123

 default tablespace USUARIOS 

 temporary tablespace TEMP

 account unlock;

  grant create type to CMARTELLO;

  grant create table to CMARTELLO;

  grant create trigger to CMARTELLO;

  grant create sequence to CMARTELLO;

  grant create indextype to CMARTELLO;

  grant create procedure to CMARTELLO;

  grant create view to CMARTELLO;

  grant create session to CMARTELLO;

  grant alter session to CMARTELLO;

  grant select any table to CMARTELLO;

  alter user CMARTELLO quota 30720m on USUARIOS;

 

Abs,

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of 
Carlos martello
Sent: quarta-feira, 10 de dezembro de 2008 17:06
To: oracle_br@yahoogrupos.com.br
Subject: [oracle_br] Criação de usuários
Importance: High

 

Pessoal, boa tarde a todos.

Tenho a seguinte situação: quero criar um usuário para cada pessoa da equipe e 
dar grants de select para todas as tabelas, porém só quero que eles criem 
objetos no banco sob seus owners, assim como não possam criar nada em nenhuma 
tablespace que não seja sua tablespace default. Criei tudo direitinho e a única 
coisa que não funcionou ao efetuar alguns testes foi: o usuário do banco só 
consegue criar objetos sob seu owner, porém em qualquer tablespace. Como fazer 
para que ele crie objetos somente na tablespace USUARIOS conforme indicado 
abaixo? A minha versão do banco é 9i.

O script utilizado é o seguinte:

create user CMARTELLO 

identified by teste123

default tablespace USUARIOS 

temporary tablespace TEMP

account unlock;

grant connect to CMARTELLO;

grant resource to CMARTELLO;

grant select any table to CMARTELLO;

Abraços,

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL: 55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED] mailto:carlosmartello%40choice.com.br 

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

 



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



RES: [oracle_br] order by

2008-11-25 Por tôpico Carlos martello
Elcio, se você não ter um identificador de “peso” você não vai conseguir fazer 
isso entendeu?

 

Porque não cruza com uma tabela de apoio que conteria o seguinte:

 

OBJETOPESO

Rua1

Avenida   2

Praça3

 

E no order by vc faria um order by peso asc.

 

Abs

 

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Elcio 
Francisco
Enviada em: terça-feira, 25 de novembro de 2008 11:56
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] order by

 

ELE PEGA PRIMEIRO LETRA 'A', 'B',, E ASSIM SUCESSIVAMENTE EU QUERIA PEGAR 
PRIMEIRO TODOS OS ENDEREÇOS QUE COMEÇA COM RUA, DEPOIS AVENIDAS,  DEPOIS 
ALAMEDAS ...ETC...

--- Em ter, 25/11/08, Leonardo Rezende [EMAIL PROTECTED] 
mailto:yahoo%40lrezende.eti.br  escreveu:

De: Leonardo Rezende [EMAIL PROTECTED] mailto:yahoo%40lrezende.eti.br 
Assunto: Re: [oracle_br] order by
Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br 
Data: Terça-feira, 25 de Novembro de 2008, 14:44

Eu achei um tanto estranha a sua dúvida, principalmente quando você 
disse: ...eu não consigo porque ele pega primeiro por ordem

Um ORDER BY RUA, AVENIDA, RODOVIA, ALAMEDA, VIELA ... ETC resolve o teu 
caso?

Elcio Francisco escreveu:

 Tenho uma tabela de logradouros onde eu queria trazer na order da 
 seguinte forma
 
 PRIMEIRO : RUA
 SEGUNDO : AVENIDA
 
 e depois os outros itens RODOVIA,ALAMEDA, VIELA..ETC pelo order by eu 
 não consigo pq ele pega primeiro por ordem . Alguem conhece uma 
 maneira de fazer isso
 
 obrigado
 
 elcio francisco

 Veja quais são os assuntos do momento no Yahoo! +Buscados
 http://br.maisbusca dos.yahoo. com http://br.maisbusca dos.yahoo. com

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

 

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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

 



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



RES: [oracle_br] Melhor Performance

2008-11-25 Por tôpico Carlos martello
Napoleão, 

 

Crie um indice nas colunas CAMPO da tabela TABELA

Crie um indice na coluna CAMPO da #TMP

Crie um indice na coluna CAMPOB da #TMP2

 

Depois altere o seu insert into #TMP3 para:

insert into #TMP3 
SELECT Y.CAMPO1, Y.CAMPO2 
FROM TABELA Y

WHERE Y.CAMPO = 'ALGUMA COISA'

AND NOT EXISTS (SELECT 1 FROM #TMP WHERE CODIGO = Y.CAMPO) 
AND EXISTS ( SELECT 1 FROM #TMP2 WHERE CODIGO = Y.CAMPOB )

 

Abs,

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Napoleão 
Cristiano X. Sanabia
Enviada em: terça-feira, 25 de novembro de 2008 14:19
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Melhor Performance

 

Pessoal

Tenho um sistema que cria 3 tabelas temporárias, insere dados nelas e as 
utiliza em outras queries.

Só que a minha tabela #TMP2 tem bastante registros e tá deixando todo meu 
procedimento lento.

Questão: Ilustrei abaixo o que o programa está fazendo. Qualç seria a melhor 
forma de resolver meu problema de performance nesse caso?

CREATE TABLE #TMP (codigo varchar(50) primary key) 
insert into #tmp 
SELECT DISTINCT campo1, campo 2
from tabela
where campo1 = 1

CREATE TABLE #TMP2 (CODIGO VARCHAR(50)) 
INSERT INTO #TMP2 
SELECT DISTINCT campo1, campo 2
from tabela2
where campo = 1

CREATE TABLE #TMP3 (TIPO VARCHAR(100), NM_TIPO VARCHAR(100)) 
insert into #TMP3 
SELECT Y.CAMPO1, Y.CAMPO2 
FROM (SELECT CAMPOA, CAMPOB FROM TABELA WHERE CAMPO = 'ALGUMA COISA') Y 
WHERE Y.CAMPO NOT IN ( SELECT CODIGO FROM #TMP ) 
AND Y.CAMPOB IN ( SELECT CODIGO FROM #TMP2 )

SELECT * FROM TABELA
UNION 
SELECT * FROM #TMP3

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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

 



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



RES: [oracle_br] UNION

2008-11-25 Por tôpico Carlos martello
Napoleão, o problema não necessariamente está no UNION. É lógico que vai 
demorar mais usando ele, mas não se esqueça que o fetch do programa que você 
utiliza para executar a query não realiza o select por inteiro. Por exemplo, 
no TOAD o fetch default é de 500 linhas. o que reduz o tempo de execução da 
query. Ou seja, isso vai depender da quantidade de linhas das tabelas.

 

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Napoleão 
Cristiano X. Sanabia
Enviada em: terça-feira, 25 de novembro de 2008 16:35
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] UNION

 

Amigos,

Eu estou executando uma query num banco e o resultado aparece em menos de 3 
segundos. Até aí normal.

Acontece que dependendo de uma determinada situação, essa query realiza um 
UNION com uma outra tabela. Quando esse UNION ocorre o resultado é exibido após 
uns 3 minutos, ou seja, o problema está no UNION. Se eu rodar as 2 querys 
separadas, até mesmo nessa outra tabela, não há nenhum problema, mas se colocar 
o UNION já era.

O que vocês sugerem. Segue a query abaixo:

SELECT DISTINCT TV.VAGA, 
TV.TIPO_VAGA 
FROM TIPO_VAGA TV
WHERE TV.ANO = 2008
UNION 
SELECT * FROM TV_TMP

Qual seria a solução para eu obter o mesmo resultado sem usar o UNION?

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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

 



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



RES: [SPAM]:[oracle_br] UNION

2008-11-25 Por tôpico Carlos martello
José, o union all é mais rápido pelo fato de ele juntar todos os registros de 
uma query com a outra. já o union puro e simples executa uma interseção dos 
dados

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Jose C 
Carvalho
Enviada em: terça-feira, 25 de novembro de 2008 17:44
Para: oracle_br@yahoogrupos.com.br
Cc: oracle_br@yahoogrupos.com.br
Assunto: Re: [SPAM]:[oracle_br] UNION

 


Cara testa com UNION ALL .. sei que ele é mais rápido ..

Sds

JOSÉ CARLITOS CARVALHO JÚNIOR
Administrador de Banco de Dados

PST Eletrônica S/A
(+55 (19) 3787-6418
Ê+55 (19) 3787-6238
/ [EMAIL PROTECTED] mailto:jccarvalho%40pst.com.br 
web:http://www.pst.com.br
web:http://www.positron.com.br

(Embedded image moved to file: pic15141.jpg)

From: Napoleão Cristiano X. Sanabia [EMAIL PROTECTED] 
mailto:cristiano_sanabia%40yahoo.com.br  

To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  

Date: 25/11/2008 17:36 

Subject: [SPAM]:[oracle_br] UNION 


Amigos, 

Eu estou executando uma query num banco e o resultado aparece em menos de 3 
segundos. Até aí normal. 

Acontece que dependendo de uma determinada situação, essa query realiza um 
UNION com uma outra tabela. Quando esse UNION 
ocorre o resultado é exibido após uns 3 minutos, ou seja, o problema está no 
UNION. Se eu rodar as 2 querys separadas, até 
mesmo nessa outra tabela, não há nenhum problema, mas se colocar o UNION já 
era. 

O que vocês sugerem. Segue a query abaixo: 

SELECT DISTINCT TV.VAGA, 
TV.TIPO_VAGA 
FROM TIPO_VAGA TV 
WHERE TV.ANO = 2008 
UNION 
SELECT * FROM TV_TMP 

Qual seria a solução para eu obter o mesmo resultado sem usar o UNION? 

Veja quais são os assuntos do momento no Yahoo! +Buscados 
http://br.maisbuscados.yahoo.com 

[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]



RES: [oracle_br] UNION

2008-11-25 Por tôpico Carlos martello
Desculpem pessoal, a mensagem saiu cortada.

 

José, o union all é mais rápido pelo fato de ele juntar todos os registros de 
uma query com a outra. já o union puro e simples executa uma interseção dos 
dados, evitando assim que caso existam linhas iguais nas 2 tabelas elas sejam 
suprimidas em uma.

 

Napoleão verifique essa possibilidade de conter dados iguais nas tabelas 
utilizados e caso isso nunca aconteça ou não tenha impacto para você, pode 
utilizar o union all sem problemas.

 

Abraços,

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: Carlos martello 
Enviada em: terça-feira, 25 de novembro de 2008 17:52
Para: 'oracle_br@yahoogrupos.com.br'
Assunto: RES: [SPAM]:[oracle_br] UNION
Prioridade: Alta

 

José, o union all é mais rápido pelo fato de ele juntar todos os registros de 
uma query com a outra. já o union puro e simples executa uma interseção dos 
dados

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Jose C 
Carvalho
Enviada em: terça-feira, 25 de novembro de 2008 17:44
Para: oracle_br@yahoogrupos.com.br
Cc: oracle_br@yahoogrupos.com.br
Assunto: Re: [SPAM]:[oracle_br] UNION

 


Cara testa com UNION ALL .. sei que ele é mais rápido ..

Sds

JOSÉ CARLITOS CARVALHO JÚNIOR
Administrador de Banco de Dados

PST Eletrônica S/A
(+55 (19) 3787-6418
Ê+55 (19) 3787-6238
/ [EMAIL PROTECTED] mailto:jccarvalho%40pst.com.br 
web:http://www.pst.com.br
web:http://www.positron.com.br

(Embedded image moved to file: pic15141.jpg)

From: Napoleão Cristiano X. Sanabia [EMAIL PROTECTED] 
mailto:cristiano_sanabia%40yahoo.com.br  

To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  

Date: 25/11/2008 17:36 

Subject: [SPAM]:[oracle_br] UNION 


Amigos, 

Eu estou executando uma query num banco e o resultado aparece em menos de 3 
segundos. Até aí normal. 

Acontece que dependendo de uma determinada situação, essa query realiza um 
UNION com uma outra tabela. Quando esse UNION 
ocorre o resultado é exibido após uns 3 minutos, ou seja, o problema está no 
UNION. Se eu rodar as 2 querys separadas, até 
mesmo nessa outra tabela, não há nenhum problema, mas se colocar o UNION já 
era. 

O que vocês sugerem. Segue a query abaixo: 

SELECT DISTINCT TV.VAGA, 
TV.TIPO_VAGA 
FROM TIPO_VAGA TV 
WHERE TV.ANO = 2008 
UNION 
SELECT * FROM TV_TMP 

Qual seria a solução para eu obter o mesmo resultado sem usar o UNION? 

Veja quais são os assuntos do momento no Yahoo! +Buscados 
http://br.maisbuscados.yahoo.com 

[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]



RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-19 Por tôpico Carlos martello
Ah sim.

Então cara, vc não consegue pelo fato de um campo ou variável do tipo clob ter 
suas particularidades. 

Eu sinceramente também não sei e até pesquisaria pra vc (até pq também estava 
precisando dessa informação), mas o certo seria fazer uma pesquisa no Google ou 
metalink sobre como converter clob em varchar por exemplo. Assim o problema 
seria resolvido ;).

 

Assim que algum dos dois encontrar a fórmula encaminhamos, beleza?

 

 

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Gabriel 
Herdt
Enviada em: quarta-feira, 19 de novembro de 2008 15:17
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

 

Eu não consigo passar o resultado do Get_dll para uma variavel e 
executar o conteudo dessa variavel. Tem outra forma de executar o 
Resultado do GET_DDL?

--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , 
Carlos Eduardo P. Martello 
[EMAIL PROTECTED] escreveu

 Gabriel, até vi agora de uma forma mais atenta que vc já faz o 
execute
 immediate dentro da função.
 
 
 
 Não entendi o que você quer então
 
 
 
 É o execute immediate que não está funcionando?
 
 
 
 
 
 Abs,
 
 
 
 
 
 
 
 Carlos Martello
 
 DBA Oracle / Consultor de Tecnologia
 
 TEL: 55+21+3094-6250
 
 Choice Technologies S/A - Inteligência em Energia
 
 e-mail: [EMAIL PROTECTED]
 
 
 
 De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
[mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] 
Em
 nome de Gabriel Herdt
 Enviada em: terça-feira, 18 de novembro de 2008 22:33
 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br 
 Assunto: Re: RES: [oracle_br] Ajuda em procedure[URGENTE]
 
 
 
 assim obrigado vou tentar, maas eu quero executar p dll gerado pela 
 funcao. pode me dizer como?
 --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
 mailto:oracle_br%
40yahoogrupos.com.br
 , Carlos Eduardo P. Martello 
 carlos.martello@ escreveu
 
  Gabriel,
  
  
  
  Tente o seguinte:
  
  
  
  
  
  Declare
  
  Vsql varchar2(2000) :='';
  
  Begin
  
  Vsql := fn_compara;
  
  Execute immediate vsql;
  
  End;
  
  
  
  Se ao invés de vc retornar um clob, retornar um varchar2, ajuda.
  
  
  
  Abs,
  
  
  
  
  
  
  
  Carlos Martello
  
  DBA Oracle / Consultor de Tecnologia
  
  TEL: 55+21+3094-6250
  
  Choice Technologies S/A - Inteligência em Energia
  
  e-mail: carlosmartello@
  
  
  
  De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
  mailto:oracle_br%
40yahoogrupos.com.br 
 [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
 mailto:oracle_br%
40yahoogrupos.com.br
 ] Em
  nome de Gabriel Herdt
  Enviada em: segunda-feira, 17 de novembro de 2008 16:49
  Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
  mailto:oracle_br%
40yahoogrupos.com.br
 
  Assunto: [oracle_br] Ajuda em procedure[URGENTE]
  
  
  
  Pessoal como executar o resultado de DBMS_METADATA.get_ddl(...) 
em 
  uma Function? Segue abaixo minmha Function
  
  FUNCTION FN_COMPARA (
  pr_usera IN VARCHAR2,
  pr_userb IN VARCHAR2,
  pr_erro OUT VARCHAR2
  )
  RETURN VARCHAR2
  IS
  vtable_name VARCHAR2 (30);
  DDL CLOB;
  i INTEGER;
  a INTEGER;
  x INTEGER;
  --get dbms_metadata.get_ddl
  (object_type,name,schema,version,model,transform);
  -- variable_name datatype;
  BEGIN
  vtable_name := '';
  i := 0;
  x := 0;
  -- grant select on all_tables to TCCB;
  
  FOR tabela IN (SELECT table_name
  FROM all_tables
  WHERE owner IN (UPPER ('tcca'), UPPER ('TCCB'))
  AND table_name NOT IN (SELECT table_name
  FROM all_tables
  WHERE owner = 'TCCB'))
  LOOP
  vtable_name := tabela.Table_name;
  
  DDL := DBMS_METADATA.get_ddl ('TABLE', vtable_name, pr_usera);
  EXECUTE IMMEDIATE TO_CHAR (DDL);
  
  COMMIT;
  END LOOP;
  
  RETURN TO_CHAR (DDL);
  EXCEPTION
  WHEN OTHERS
  THEN
  pr_erro := ('Erro: ' ||pr_erro||SQLERRM);
  END;
  
  
  
  
  
  [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]



RES: RES: [oracle_br] Tabela temporária

2008-11-14 Por tôpico Carlos martello
E como criar um índice numa tabela temporária?

 

Usando create index normalmente, como se fosse em uma tabela física? 

 

E a performance do índice?

 

Abraços,

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Robert 
Anderson
Enviada em: sexta-feira, 14 de novembro de 2008 10:36
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: [oracle_br] Tabela temporária

 

José, acho que você ainda não pegou o espírito da coisa. :)

Com essa técnica você pode fazer qualquer coisa, tudo é uma questão de
combinar as coisas certas nos lugares certos.

Perguntas que você tem que se fazer:

O que eu quero processar das tabelas? (Provavelmente, vai resolver com
instruções SQL)
O que quero deixar na memória? (Essa informação vai te dizer a estrutura do
registro para armazenamento em memória)
O que quero processar na memória? (Vai guardando no hash baseado no registro
criado no passo anterior)
O que quero fazer com o resultado? (Processo dentro do for, percorrendo a
tabela em memória)

Em todo tempo que trabalho com banco, nunca vi nada que não seja possível
fazer utilizando dessas técnicas. :)

2008/11/14 José Costacurta [EMAIL PROTECTED] 
mailto:jose_costacurta%40yahoo.com.br 

 Então... na verdade eu precisaria fazer o select NO type.

 Algo do tipo:


 procedure demo( )
 is
 TYPE t_rec_demo IS RECORD (num1 number, num2 number);
 TYPE t_vet_tar is table of tarifas.valor%type index by binary_integer;
 tab t_vet_tar;
 begin

 select max(coluna1) + 3/2, avg(coluna3) bulk collect into tab
 from tabela_demo
 order by 1;

 --Aqui meu select

 For n in (

 Select sum(coluna1) soma, coluna2

 From tab

 Group by coluna2) loop

 --aqui qualquer código

 End loop;

 end;

 Entendeu? Pelo menos até agora não descobri nada do tipo pra fazer esse
 select.

 Valeu! Abraços.

 De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
 oracle_br%40yahoogrupos.com.br [mailto:
 oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
 oracle_br%40yahoogrupos.com.br] Em
 nome de Robert Anderson
 Enviada em: sexta-feira, 14 de novembro de 2008 10:21
 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
 oracle_br%40yahoogrupos.com.br
 Assunto: Re: RES: [oracle_br] Tabela temporária

 Por que não conseguiria?

 Imagine o seguinte:

 procedure demo( )
 is
 TYPE t_rec_demo IS RECORD (num1 number, num2 number);
 TYPE t_vet_tar is table of tarifas.valor%type index by binary_integer;
 tab t_vet_tar;
 begin

 select max(coluna1) + 3/2, avg(coluna3) bulk collect into tab
 from tabela_demo
 order by 1;

 for i in tab.first..tab.last loop
 dbms_output.put_line(tab(i).num1 || ' ' || tab(i).num2);
 end;
 end;

 Não resolveria o seu problema?

 2008/11/14 José Costacurta [EMAIL PROTECTED] 
 mailto:jose_costacurta%40yahoo.com.br jose_costacurta%40yahoo.com.br
 mailto:jose_costacurta%40yahoo.com.br jose_costacurta%2540yahoo.com.br
 

  Ótima idéia Robert.
 
  Porém, eu não conseguiria fazer um select nesse type. E é essa minha
  necessidade, fazer um select somando e agrupando valores.
 
  Valeu. Abraço.
 
  De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
  oracle_br%40yahoogrupos.com.brmailto:
 oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br
 oracle_br%40yahoogrupos.com.br [mailto:
  oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
  oracle_br%40yahoogrupos.com.br mailto:
 oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br
 oracle_br%40yahoogrupos.com.br] Em
  nome de Robert Anderson
  Enviada em: sexta-feira, 14 de novembro de 2008 10:02
 
  Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br  
  oracle_br%40yahoogrupos.com.brmailto:
 oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br
 oracle_br%40yahoogrupos.com.br
  Assunto: Re: RES: [oracle_br] Tabela temporária
 
  Em seu caso, usaria uma Tabela PL/SQL (Hash)
 
  TYPE nome do tipo IS TABLE OF tipo dos valores INDEX BY tipo da
  chave;
 
  ou vetor:
 
  TYPE nome do tipo IS VARRAY tamanho máximo OF tipo do elemento;
 
  Você pode fazer algo do tipo:
 
  select coluna bulk collect into nome do tipo tabela
  from tabela;
 
  Fica muito simples e extremamente eficiente.
 
  Até mais,
 
  Robert
 
  2008/11/14 Leonardo Rezende [EMAIL PROTECTED] 
  mailto:yahoo%40lrezende.eti.br yahoo%40lrezende.eti.br
 mailto:yahoo%40lrezende.eti.br yahoo%2540lrezende.eti.br yahoo%
 40lrezende.eti.br
  mailto:yahoo%40lrezende.eti.br yahoo%2540lrezende.eti.br yahoo%
 2540lrezende.eti.br 
 
   Podes tentar com o EXECUTE IMMEDIATE...
  
   José Costacurta escreveu:
   
Wellerson, bom dia.
   
Mas eu consigo criar essa tabela temporária dentro de uma procedure
 ou
tenho
que deixá-la criada já?
   
Eu tentei criar dentro da procedura mas deu erro.
   
Valeu

[oracle_br] PARALLEL DEGREE

2008-11-13 Por tôpico Carlos martello
Pessoal, bom dia.

 

Perguntinha boba

 

Quando crio uma tabela e coloco PARALLEL ele joga o valor do DEGREE como 
DEFAULT. 

 

Existe forma de alterar esse valor default sem forçar na criação da tabela 
através da cláusula abaixo?

PARALLEL ( DEGREE 8 INSTANCES DEFAULT )

 

Traduzindo:

1 - Como saber o valor do DEFAULT?

2 - Como alterar esse valor?

 

Att

 

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

 



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



RES: [oracle_br] DADOS INSERIDOS FORA DE ORDEM

2008-11-13 Por tôpico Carlos martello
Paulo, se entendi bem o propósito, dificilmente você conseguirá inserir dados 
“ordenados”, pois teoricamente não existe maneira alguma de isso ser feito.

 

Para ordenar os dados vc deve utilizar o comando ORDER BY, seja pelo campo que 
deseja ordenar ou caso queira ordenar pela ordem de inclusão no Oracle utilize 
ORDER BY ROWID.

 

A maneira de inserir ordenadamente os dados na tabela, seria você combinar o 
INSERT com um SELECT contendo ORDER BY, mas isso não é garantido de forma 
alguma.

 

Abraços,

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Paulo
Enviada em: quinta-feira, 13 de novembro de 2008 12:24
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] DADOS INSERIDOS FORA DE ORDEM

 

Bom dia pessoal!!!
 
Não tenho muito exp. em bds relacionais, e algumas dúvidas estão aparecendo 
agora que estou utilizando mais.!!!
 
Seguinte, numa tabela onde já haviam dados, (id, descrição), inseri alguns 
outros dados, e persebo que num simples select (sem order by) os dados são 
apresentados desordenadamente, ou seja, os dados que foram inseridos estão fora 
de ordem.
Por que isso acontece?.. oque tenho que fazer para quando inserir os dados não 
sejam fora de ordem:???
 
Obrigado desde já
 
Paulo Cesar
Analista B.Dados

Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara 
@ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

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

 



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



RES: [oracle_br] Re: PARALLEL DEGREE

2008-11-13 Por tôpico Carlos martello
Chiappa, mais uma vez muito obrigado.

 

Sobre o primeiro item eu já sabia, o problema é que utilizamos muitas tabelas 
criadas em tempo de execução e realmente alterar diversas procedures vai ser um 
saco, mas tudo bem, vou recrutar alguém pra fazer isso rs.

 

Grande abraço,

 

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de jlchiappa
Enviada em: quinta-feira, 13 de novembro de 2008 11:45
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: PARALLEL DEGREE

 

vamos por partes aí, colega :

1. Para vc alterar o valor do DEGREE, vc ** absolutamente ** NÂO
precisar fazer o CREATE dela de novo, é só vc pedir um ALTER TABLE
nomedela PARALLEL(DEGREE n); aonde n é o valor desejado, pode
consultar o manual de SQL Reference no comando ALTER TABLE que tá
documentado

2. Praticamente TODOS os defaults do banco Oracle (ie,
valores/parãmetros/propeidades que vc não especificar) são hard-coded,
vc absolutamente NÂO TEM COMO os alterar... No caso do DEGREE, porém,
isso não implica em nada, se vc não quer usar o default, altere as
tabelas pro que vc quer. NEM há a desculpinha da quantidade de
tabelas, basta vc usar a técnica amiga do dba e pedir pro sqlplus
gerar o script com todos os ALTERs, ou derivadas dela.

3. para vc saber o valor dum default qquer, normalmente isso está
documentado no manual onde vc o usa - quero dizer, se é um default de
tabela, aplicável quando vc cria ou altera a tabela, ele via de regra
vai estar documentado no SQL reference, entrada CREATE TABLE e/ou
ALTER TABLE : no caso do degree, o dito-cujo nos diz :

PARALLEL

Specify PARALLEL if you want Oracle to select a degree of parallelism
equal to the number of CPUs available on all participating instances
times the value of the PARALLEL_THREADS_PER_CPU initialization parameter.


== OU seja, o default é o número de CPUs * o param
PARALLEL_THREADS_PER_CPU , e esse comportamento é INALTERÁVEL, é
hard-coded... Vc pode alterar o param de PARALLEL_THREADS_PER_CPU ,
pode alterar qtdade de CPUs, que aí o valor final se altera, MAS o
comportamento, a fórmula, é INALTERÁVEL... Há muitos outros casos
onde o default assume um valor X, muitas vezes independente de qquer
param do banco, isso vai estar documentado normalmente, aí X não tem
como vc alterar.

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , 
Carlos martello
[EMAIL PROTECTED] escreveu

 Pessoal, bom dia.
 
 
 
 Perguntinha boba
 
 
 
 Quando crio uma tabela e coloco PARALLEL ele joga o valor do DEGREE
como DEFAULT. 
 
 
 
 Existe forma de alterar esse valor default sem forçar na criação da
tabela através da cláusula abaixo?
 
 PARALLEL ( DEGREE 8 INSTANCES DEFAULT )
 
 
 
 Traduzindo:
 
 1 - Como saber o valor do DEFAULT?
 
 2 - Como alterar esse valor?
 
 
 
 Att
 
 
 
 
 
 Carlos Martello
 
 DBA Oracle / Consultor de Tecnologia
 
 TEL: 55+21+3094-6250
 
 Choice Technologies S/A - Inteligência em Energia
 
 
 
 
 
 [As partes desta mensagem que não continham texto foram removidas]


 



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



RES: [oracle_br] Registro sendo alterado

2008-11-13 Por tôpico Carlos martello
Claudionor,

 

Sempre que um registro é atualizado ele sofre um lock (fica travado para a 
transação) até a mesma terminar. Caso vc atualize o mesmo registro, enquanto 
outra transação o atualiza, sua transação ficará em wait até a primeira 
terminar.

 

Recomendo-lhe ler um pouco mais sobre formas de lock, onde você pode forçar 
lock na tabela inteira, exclusivo de registros, etc.

 

Abraços,

 

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Claudionor
Enviada em: quarta-feira, 12 de novembro de 2008 17:33
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Registro sendo alterado

 

Boa noite a todos!

Tem como eu saber se um determinado registro de uma tabela no banco de dados 
está sendo alterado no momento em q eu for tentar alterá-lo tambem?

Obrigado,
Claudionor

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

 



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



RES: [oracle_br] PPTs - Treinamento Oficial PL/SQL 9i

2008-11-13 Por tôpico Carlos martello
Também estou interessado no material, de 9i e 10g.

 

Pretendo me certificar em breve e já quero ir estudando e montar um ambiente em 
casa para efetuar testes e usar como laboratório.

 

Att.

 

 

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcos 
Vieira
Enviada em: terça-feira, 11 de novembro de 2008 11:19
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] PPTs - Treinamento Oficial PL/SQL 9i

 

Prezados,

Vou ministrar um curso de PL/SQL 9i e estou procurando as apresentações em
PPT dos cursos oficiais em português.

Se alguém souber aonde tem ou tiver, por favor, me avisar.

*Obrigado.*

*Atenciosamente,*

*Marcos Quintino Vieira*

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

 



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



RES: [oracle_br] Re: RES: ORA-04030

2008-11-12 Por tôpico Carlos martello
Caro chiappa, muito obrigado pelas explicações.

 

Vou ler todo o material que você referenciou e ver o melhor a ser feito de 
acordo com o padrão de programação do pessoal daqui.

 

Infelizmente o banco é liberado pra qualquer um fazer o que bem entender, 
então, já viu né? Mas aos poucos to mudando isso

 

Mais uma vez, muito obrigado.

 

Grande abraço.


Carlos Martello.

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de jlchiappa
Enviada em: quarta-feira, 12 de novembro de 2008 10:33
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: RES: ORA-04030

 

Colega, pra mim o seu problema era (e é, ainda) o PARALLEL_MAX_SERVERS
muito alto (vc o setou para 10x o número de CPUs,
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:39946845137685#117113346589088
e o senso comum sugerem que uma CPU pode ter 2, 3, quatro tarefas
simultãneas, 10 me parece um exagero, inclusive) - aí, com o DOP na
tabela setado como DEFAULT e com um montão de servers permitidos o
banco devia estar abrindo muitas dezenas de parallel slaves, cada um
deles é uma nova sessão, esse monte de sessões devem estar consumindo
a RAM alocada - INCLUSIVE, apesar de (só pra variar) vc NÂO nos dar a
versão, vc diz que está usando PGA automática, é documentado que o
banco dá só 30% do param de PGA para os slaves (nota Subject:
Automatic PGA Memory Management in 9i and 10g, Doc ID: Note:223730.1
), com um monte de processos concorrendo pela memória, que é só uma
fração do que vc especificou, não é difícil dar erro de falta de
RAM Vc setando o DOP para um valor fixo na tabela resolveu a
questão PARA AQUELAS TABELAS, vc ainda corre risco para outras
operações paralelas em outras tabelas, em índices... Sugestão : bota o
PARALLEL_MAX_SERVERS prum valor mais razoável, OU sete o DOP para
TODAS as tabelas/índices que podem ser usadas em parallel (colocando 1
para aquelas que vc não quer), OU deixe todo mundo como DEGREE 1 (que
é não-paralelo) e acione via hint de PARALLEL o paralelismo apenas nos
SQLs em que vc o deseje, OU use o algoritmo de tunning de paralelismo
(parametro de automatic tunning), que aí ele controla o DOP de acordo
com o uso - veja lá o que é mais viável pra vc, no seu caso... 

[]s

Chiappa
--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , 
Carlos Eduardo P. Martello
[EMAIL PROTECTED] escreveu

 Pessoal, bom dia
 
 
 
 Finalmente consegui resolver o problema que vem tirando meu sono
 (literalmente) já que os processos de carga rodam durante a madrugada.
 
 
 
 Fiz as seguintes alterações:
 
 
 
 Setei o parâmetro degree das tabelas de produção onde o valor era
DEFAULT
 para 8.
 
 
 
 Além disso minha memória e o SPFILE ficaram assim:
 
 
 
 Memória Instância Oracle:
 
 Shared Pool = 768mb
 
 Buffer cache = 1504mb
 
 Large pool = 64mb
 
 Java pool = 32mb
 
 
 
 SPFILE:
 
 *.audit_sys_operations=TRUE
 
 *.audit_trail='TRUE'
 
 *.background_dump_dest='F:\Oracle\admin\riprod27\bdump'
 
 *.compatible='9.2.0.0.0'
 

*.control_files='F:\Oracle\oradata\riprod27\control01.ctl','F:\Oracle\oradat
 a\riprod27\control02.ctl','F:\Oracle\oradata\riprod27\control03.ctl'
 
 *.core_dump_dest='F:\Oracle\admin\riprod27\cdump'
 
 *.cursor_space_for_time=FALSE
 
 *.db_block_size=16384
 
 *.db_cache_size=1572864000
 
 *.db_domain=''
 
 *.db_file_multiblock_read_count=64
 
 *.db_name='riprod27'
 
 *.db_writer_processes=0
 
 *.dbwr_io_slaves=0
 
 *.dispatchers='(PROTOCOL=TCP) (SERVICE=riprod27XDB)'
 
 *.fast_start_mttr_target=300
 
 *.hash_area_size=1048576
 
 *.hash_join_enabled=TRUE
 
 *.instance_name='riprod27'
 
 *.java_pool_size=33554432
 
 *.job_queue_processes=10
 
 *.large_pool_size=67108864
 
 *.log_checkpoint_timeout=0
 
 *.max_dump_file_size='1048576'
 
 *.open_cursors=300
 
 *.parallel_automatic_tuning=FALSE
 
 *.parallel_max_servers=80
 
 *.parallel_threads_per_cpu=2
 
 *.pga_aggregate_target = 536870912
 
 *.processes=300
 
 *.query_rewrite_enabled='FALSE'
 
 *.remote_login_passwordfile='EXCLUSIVE'
 
 *.session_max_open_files=20
 
 *.sga_max_size=3221225472
 
 *.shared_pool_size=805306368
 
 *.sort_area_size=1048576
 
 *.sql_trace=FALSE
 
 *.star_transformation_enabled='FALSE'
 
 *.timed_statistics=TRUE
 
 *.undo_management='AUTO'
 
 *.undo_retention=10800
 
 *.undo_tablespace='UNDOTBS1'
 
 *.user_dump_dest='F:\Oracle\admin\riprod27\udump'
 
 
 
 Assim fica documentado e caso alguém sofra com esse mal, podem ter
algumas
 idéias de como resolver o problema RS.
 
 
 
 Abraços a todos.
 
 
 
 De: Carlos martello 
 Enviada em: terça-feira, 11 de novembro de 2008 15:05
 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br 
 Assunto: ORA-04030
 Prioridade: Alta
 
 
 
 Boa tarde a todos.
 
 
 
 Pessoal, essa é minha primeira participação na lista e gostaria de
uma ajuda
 se possível.
 
 
 
 Tenho uns processos de carga que rodam durante a madrugada e em
paralelo.
 
 
 
 Processo A - começa as 20:30
 
 Processo B - começa as 22:00
 
 Processo

RES: [oracle_br] Re: RES: ORA-04030

2008-11-12 Por tôpico Carlos martello
Rodrigo, é 64-bit e o Peak chega em torno de 2,8GB.

 

Resolvi o problema aqui realizando uns ajustes na memória (o problema era o 
grande número de paralelismo) o Chiappa também mandou uma documentação e 
irei me aprofundar no assunto. Essa parte de administração da memória achei 
bastante difícil e interessante ao mesmo tempo.

 

Mesmo tendo resolvido o problema, se puder me mandar as instruções para 
32-bit acho que conhecimento nunca é demais ;) Nunca se sabe o dia de 
amanhã rs.

 

Grande abraço e obrigado pela atenção.

 

Carlos Martello.

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rodrigo 
Moreno
Enviada em: quarta-feira, 12 de novembro de 2008 17:20
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: RES: ORA-04030

 

Carlos,

Está com cara de falta de memoria. Eu tive esse problema aqui semana
passada. Aliás, eu tenho este problema sempre com maquinas windows 32Bit.

Qual o seu ambiente? Windows 32 ou 64 bit? 
Qual o tamanho que ocupa o binario do oracle? Se tiver o tlist.exe vai
te ajudar, veja o tamanho do PeakVirtualSize

Se for 32Bit. Este tem limitacao de 1.7G, se for o caso e o seu
oracle.exe estiver proximo a isso, me avise que lhe passo as
instruções de como habilitar o workaround disponivel para isso.

[]'s
Rodrigo
DBA Oracle Senior.

--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , 
Carlos martello
[EMAIL PROTECTED] escreveu

 Caro chiappa, muito obrigado pelas explicações.
 
 
 
 Vou ler todo o material que você referenciou e ver o melhor a ser
feito de acordo com o padrão de programação do pessoal daqui.
 
 
 
 Infelizmente o banco é liberado pra qualquer um fazer o que bem
entender, então, já viu né? Mas aos poucos to mudando isso
 
 
 
 Mais uma vez, muito obrigado.
 
 
 
 Grande abraço.
 
 
 Carlos Martello.
 
 
 
 De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br 
[mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] 
Em nome de jlchiappa
 Enviada em: quarta-feira, 12 de novembro de 2008 10:33
 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br 
 Assunto: [oracle_br] Re: RES: ORA-04030
 
 
 
 Colega, pra mim o seu problema era (e é, ainda) o PARALLEL_MAX_SERVERS
 muito alto (vc o setou para 10x o número de CPUs,

http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:39946845137685#117113346589088
 e o senso comum sugerem que uma CPU pode ter 2, 3, quatro tarefas
 simultãneas, 10 me parece um exagero, inclusive) - aí, com o DOP na
 tabela setado como DEFAULT e com um montão de servers permitidos o
 banco devia estar abrindo muitas dezenas de parallel slaves, cada um
 deles é uma nova sessão, esse monte de sessões devem estar consumindo
 a RAM alocada - INCLUSIVE, apesar de (só pra variar) vc NÂO nos dar a
 versão, vc diz que está usando PGA automática, é documentado que o
 banco dá só 30% do param de PGA para os slaves (nota Subject:
 Automatic PGA Memory Management in 9i and 10g, Doc ID: Note:223730.1
 ), com um monte de processos concorrendo pela memória, que é só uma
 fração do que vc especificou, não é difícil dar erro de falta de
 RAM Vc setando o DOP para um valor fixo na tabela resolveu a
 questão PARA AQUELAS TABELAS, vc ainda corre risco para outras
 operações paralelas em outras tabelas, em índices... Sugestão : bota o
 PARALLEL_MAX_SERVERS prum valor mais razoável, OU sete o DOP para
 TODAS as tabelas/índices que podem ser usadas em parallel (colocando 1
 para aquelas que vc não quer), OU deixe todo mundo como DEGREE 1 (que
 é não-paralelo) e acione via hint de PARALLEL o paralelismo apenas nos
 SQLs em que vc o deseje, OU use o algoritmo de tunning de paralelismo
 (parametro de automatic tunning), que aí ele controla o DOP de acordo
 com o uso - veja lá o que é mais viável pra vc, no seu caso... 
 
 []s
 
 Chiappa
 --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br 
mailto:oracle_br%40yahoogrupos.com.br , Carlos Eduardo P. Martello
 carlos.martello@ escreveu
 
  Pessoal, bom dia
  
  
  
  Finalmente consegui resolver o problema que vem tirando meu sono
  (literalmente) já que os processos de carga rodam durante a madrugada.
  
  
  
  Fiz as seguintes alterações:
  
  
  
  Setei o parâmetro degree das tabelas de produção onde o valor era
 DEFAULT
  para 8.
  
  
  
  Além disso minha memória e o SPFILE ficaram assim:
  
  
  
  Memória Instância Oracle:
  
  Shared Pool = 768mb
  
  Buffer cache = 1504mb
  
  Large pool = 64mb
  
  Java pool = 32mb
  
  
  
  SPFILE:
  
  *.audit_sys_operations=TRUE
  
  *.audit_trail='TRUE'
  
  *.background_dump_dest='F:\Oracle\admin\riprod27\bdump'
  
  *.compatible='9.2.0.0.0'
  
 

*.control_files='F:\Oracle\oradata\riprod27\control01.ctl','F:\Oracle\oradat
  a\riprod27\control02.ctl','F:\Oracle\oradata\riprod27\control03.ctl'
  
  *.core_dump_dest='F:\Oracle\admin\riprod27\cdump'
  
  *.cursor_space_for_time=FALSE

[oracle_br] ORA-04030

2008-11-11 Por tôpico Carlos martello
Boa tarde a todos.

 

Pessoal, essa é minha primeira participação na lista e gostaria de uma ajuda se 
possível.

 

Tenho uns processos de carga que rodam durante a madrugada e em paralelo.

 

Processo A - começa as 20:30

Processo B - começa as 22:00

Processo C - começa as 06:00

 

Quando os processos A e B entram em paralelo, 99% das vezes recebo erros do 
tipo ORA-04030.

 

Já li bastante material, já pesquisei no histórico da própria lista, no 
metalink do Oracle e ainda não consegui resolver o problema.

 

Vou passar alguns dados e talvez assim possam me ajudar:

 

Servidor:

WINDOWS 2003 Server 64-bit

8 processadores

8 GB RAM

 

Memória Instância Oracle:

Shared Pool = 768mb

Buffer cache = 1504mb

Large pool = 160mb

Java pool = 32mb

 

SPFILE:

*.db_block_size=16384

*.db_cache_size=1572864000

*.db_domain=''

*.db_file_multiblock_read_count=64

*.db_name='riprod27'

*.db_writer_processes=0

*.dbwr_io_slaves=0

*.dispatchers='(PROTOCOL=TCP) (SERVICE=riprod27XDB)'

*.fast_start_mttr_target=300

*.hash_area_size=1048576

*.hash_join_enabled=TRUE

*.instance_name='riprod27'

*.java_pool_size=33554432

*.job_queue_processes=10

*.large_pool_size=167772160

*.log_checkpoint_timeout=0

*.max_dump_file_size='1048576'

*.open_cursors=300

*.parallel_automatic_tuning=FALSE

*.parallel_max_servers=80

*.parallel_threads_per_cpu=2

*.pga_aggregate_target = 805306368

*.processes=300

*.query_rewrite_enabled='FALSE'

*.remote_login_passwordfile='EXCLUSIVE'

*.session_max_open_files=20

*.sga_max_size=3221225472

*.shared_pool_size=805306368

*.sort_area_size=1048576

*.sql_trace=FALSE

*.star_transformation_enabled='FALSE'

*.timed_statistics=TRUE

*.undo_management='AUTO'

*.undo_retention=10800

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='F:\Oracle\admin\riprod27\udump'

 

 

Atenciosamente,

 

Carlos Martello.



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



RES: [oracle_br] Ajuste de desem penho em índices

2008-11-11 Por tôpico Carlos martello
Fábio, boa tarde.

 

Tenho uma tabela em meu sistema, digamos, um pouco parecida com a sua. Tenho 
pouca experiência com tunning (comecei a desenvolver o meu lado dba a partir do 
meio desse ano), mas acho que aprendi coisas boas e acho que posso ajudá-lo, 
porém peço até que pessoas mais experientes, critiquem e opinem junto a mim.

 

O que eu posso lhe sugerir é (e o que eu acho mais conveniente):

 

1 – apesar de os indices não conterem muitos extents, acho que seria legal (até 
mesmo pelo tamanho dos mesmos) você aumentar de 64MB para 128MB ou 256MB.

2 – Sobre os índices, poderia melhor dispor os dados sobre os índices, a 
formatação ficou um pouco ruim e não dá pra entender qual campo é referente ao 
valor do select que você fez. Informe também o tipo dos índices (BITMAP, 
NORMAL, etc). Gostaria de saber a quantidade total de linhas da tabela e a 
quantidade de valores distintos pras colunas dos índices.

 

Poderia dar alguns exemplos do que é feito por exemplo nas operações de sua 
rotina que demora 3 horas?

 

Grande abraço.

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Fábio 
Telles Rodriguez
Enviada em: terça-feira, 11 de novembro de 2008 16:05
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Ajuste de desempenho em índices

 

Senhores, tenho uma tabela num software de folha de pagamento de 9 mil
funcionários que já tem quase 90 milhões de linhas e cresce rapidamente.
Gostaria de algumas dicas para melhorar a performance desta tabela, já que
ela é central no cálculo em batch, o que leva hoje umas 3 horas.
Infelizmente eu não posso alterar a aplicação pois é um pacote de terceiros,
o máximo que posso fazer são sugestões se eu encontrar algo muito grave.

1) Servidor: Oracle 10.2.0.3 SE rodando em Red Hat Linux 4.6.
2) Discos: 3x 146 GB SCSI em RAID 5 (eu sei, é ruim, mas só vou conseguir
melhorar isso no ano que vem).
3) Tabela: quase 90 milhões de registros alocado num único tablespace
ocupando hoje 3,5 GB. O tablespace dele utiliza alocação automática e está
distribuído em 5 datafiles de 800MB com crescimento automático.

Segue a descrição da tabela:
desc resultado;

Name Null Type


ID_RESULTADO NOT NULL NUMBER
CONTA NOT NULL NUMBER

TIPO_LANCAMENTO NOT NULL
CHAR(1)
CENTRO_CUSTO NOT NULL VARCHAR2(10)
QUANTIDADE_RESULTADO NUMBER(11,2)

VALOR_RESULTADO NOT NULL NUMBER(13,2)
LANCAMENTO_MANUAL CHAR(1)

A chave primária está nos campos: id_resultado, conta, tipo_lancamento e
centro_custo

4) índices
* ix_resultado_1 (conta) - Espaço ocupado: 1,5GB
* ix_resultado_2 (centro_custo) - Espaço ocupado: 1,7GB
* ix_resultado_3 (id_resultado) - Espaço ocupado: 1,9GB
* pk_resultado (id_resultado, conta, tipo_lancamento, centro_custo) - Espaço
ocupado: 2,8GB

Índice Tablespace blevel leaf clustering
num
distinct
blocks factor
rows keys
--
IX_RESULTADO_1 AHB_RESULTADO_INDEX_01 2 174580 30966921
83472061 253
IX_RESULTADO_2 AHB_RESULTADO_INDEX_02 3 190047 5492413
80199857 356
IX_RESULTADO_3 AHB_RESULTADO_INDEX_03 3 195895 5024216
83688346 3266453
PK_RESULT AHB_RESULTADO_PK 3 323181 22717985
83373902 83373902

*Pergunto:*
* Valeria a pena utilizar alocação uniforme, ao invés da automática?
Atualmente os meus extents estão todos com 64MB e com cerca de 30 a 40
extents por índice.
* Nos índices IX_RESULTADO_1 e IX_RESULTADO_2 o meu número de distinct keys
é muito baixo. Será que não estou com dois índices inúteis que apenas estão
ajudando a diminuir o desempenho das minhas atualizações?
* Valeria a pena tentar particionar os índices, mesmo não tendo um campo
como data e armazenando todos os tablespaces no mesmo RAID?
* Após realizar um REBUILD nos índices, o clustering factor diminuiu apenas
uns 5%. É normal isso?
* Com o blevel em 3, justificaria-se utilizar um tamanho de bloco maior?
Mesmo em um sistema transacional?

Senhores, desculpa se fui impertinente em minhas perguntas, estou estudando
mais a parte de tuning e gostaria de aprender a fazer as coisas da melhor
forma possível na prática.

Agradeço a qualquer contribuição.

Atenciosamente,
Fábio Telles
-- 
blog: http://www.midstorm.org/~telles/ http://www.midstorm.org/%7Etelles/
e-mail / jabber: [EMAIL PROTECTED] mailto:fabio.telles%40gmail.com 

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

 



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