[oracle_br] ORA-29283 - urgente
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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]
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
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
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
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
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
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
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
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
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
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
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]