[oracle_br] Re: Ajuda na consulta
Bem, a efetividade de sub-query do tipo (com MAX) depende fundamentalmente se há um índice no campo : se houver já que o índice é armazenado Ordenado achar o MAX via de regra é rapidinho, mas se não houver esse construto pode levar à um scan desnecessário, com nested loops de sobremesa pra mal dos pecados... Outra opção interessante pode ser Analytics, http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:7251902693483#7254791543191 tem um exemplinho... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Hevandro Veiga escreveu > > Igor, blz? > > Sou Sys Admin Linux e aspirante a DBA Oracle. > Segue abaixo minha colaboração. Está longe de ser uma boa solução, mas pode > te dar uma primeira direção. > > Use os *tables alias* também nas colunas que serão retornadas. Isso poupa > trabalho ao oracle de ter que descobrir em qual tabela está cada coluna. > > > SELECT codigo_produto > ,descricao_produto > ,numero_nota > ,serie_nota > ,fornecedor > ,data_entrada > FROM notas_fiscais nf, produtos p, itens_notas_fiscais inf > WHERE inf.id = nf.id > AND p.codigo = inf.codigo > AND nf.data_criacao in (SELECT max(data_criacao) > FROM notas_fiscais nf, produtos p, > itens_notas_fiscais inf > WHERE inf.id = nf.id > AND p.codigo = inf.codigo > GROUP BY p.codigo); > > Att, > > Hevandro C. Veiga > > 2009/12/14 Igor Alves > > > > > > > eu tenho a seguinte consulta: > > > > SELECT > > CODIGO_PRODUTO, > > DESCRICAO_PRODUTO, > > NUMERO_NOTA, > > SERIE_NOTA, > > FORNECEDOR, > > DATA_ENTRADA > > > > FROM > > NOTAS_FISCAIS, > > PRODUTOS, > > ITENS_NOTAS_FISCAIS > > > > WHERE > > ITENS_NOTAS_FISCAIS.ID = NOTAS_FISCAIS.ID > > AND PRODUTOS.CODIGO = ITENS_NOTAS_FISCAIS.CODIGO > > porem quero que retorne o numero e seria da ultima nota fiscal de cada > > produto listado, na tabela notas_ficais tem um campo que indica a criação > > da > > nota(data_criacao). > > > > Se alguem puder me ajudar.. > > > > -- > > Igor Alves > > Bacharel em Ciência da Computação > > Tel: 2202-5658 / 8812-8670 > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] >
[oracle_br] Re: .:Duplicação de Base:.
Opa, no final do item 4) ficou faltando uma parte do texto , ele deveria estar : " ... Devo dizer também que a opção de se ter uma única tablespace TB_USUARIOS (digamos) também Poderia Sim te servir, pois (SE criada corretamente, com extent size correto, etc) após o drop de um usuário e seus objetos , a recriação de um novo na mesma tablespace VAI SIM reusar o espaço anteriormente em uso, sim... " []s Chiappa --- Em oracle_br@yahoogrupos.com.br, José Laurindo escreveu > > Colega, ao que parece ninguém te respondeu, vou tentar o fazer : de cara > porém tenho que avisar que é ** Impossível ** te dar um passo-a-passo exato e > preciso, não há tempo nem espaço disponíveis, e nem é esse o foco do Grupo - > sendo assim, vou dar DICAS, diretivas, que depois vc ** TEM QUE ** > complementar estudando os manuais e bons livros de referência, pra poder > entender do que estou falando...Lembro também que a esmagadora maioria das > interfaces gráficas Não Te Dão a informação completa, elas 'escondem' parte > da info, então vou nesta resposta sempre sugerir a Consulta nas fontes Reais > de informação (tabelas/views internas do Sistema) onde cabível. Segue : > > 1) extents : o conceito fundamental é que quando o bd Oracle precisa alocar > espaço, ele aloca ** não ** em bytes, nem em blocos, mas sim aloca um > 'pedação' de blocos contíguos em disco, o chamado EXTENT - o tamanho de cada > extent é definido na criação dos objetos (tabelas/índices/o que for), se não > especificado usa o default da tablespace. Isso n > os leva à distorções do tipo, tabela minúscula com extent size enorme, esse > espaço VAI ser alocado e o RESIZE *** Não tem como *** diminuir, não tem como > quebrar um extent, ele tem o tamanho que tem...Num caso desses, só recriando > o objeto, veja 3) para opções. Consulte a DBA_EXTENTS/DBA_SEGMENTS para as > tablespaces em questão, veja se os tamanhos são razoáveis em face dos dados > > 2) tablespace LMT ou DMT : derivado do fato acima, quando o espaço é liberado > é o EXTENT que é marcado como livre, e quem precisar de espaço adicional vai > tentar usar extents também - sendo assim, Óbvio, se vc tiver um espaço livre > de X bytes em extents liberados ** mas ** o objeto sendo aumentado requer Y > bytes como tamanho de extent, esse extent livre Não Vai Ser re-usado... Se vc > estiver usando as (horrivelmente velhas e não-recomendadas) tablespaces > gerenciadas pro Dicionário (DMT) vc pode ter valores os mais esdrúxulos e > DIFERENTES para tamanhos de extents, podendo levar ao cenário descrito. Já SE > vc estiver usando as modernas e Recomendadas tablespaces gerenciadas por > bitmap local (LMT), com elas OU vc tem extents sempre iguais (usando a opção > de UNIFORM SIZE na criação) , OU vc tem extents de Poucos tamanhos diferentes > e sempre múltiplos entre si (usando a opção de AUTOALLOCATE/gerenciamente > automático) na criação, consulte a DBA_TABLESPACES pra ver o que vc tem > hoje... A recomendação quanto a isso é, SE vc sabe exatamente o tamanho que > vai usar, avalie a hipótese de tablespace LMT uniform size, se não > souber/tiver como saber (ex, são dados 'aleatórios', enviados pelos usuários, > digamos), avalie AUTOALLOCATE > > 3) sim, é ** péssimo ** deixar se criar o que for que não seja interno na > tablespace SYSTEM, vc terá que corrigir isso re-criando os objetos, mas usar > o exp como vc pensa é TOTALMENTE DESNECESSÁRIO : gerar um dump file tem > sentido se vc quer recriar o objeto em OUTRO DATABASE, sendo no mesmo banco > vc tem Diversas outras opções, como o comando ALTER TABLE nnn MOVE/ALTER > INDEX nn REBUILD, ou o DBMS_REDEFINE, ou o CREATE nn AS (select dos dados > atuais), cheque as docs pra sintaxes e restrições > > 4) absolutamente ** NÃO É VERDADE ** que após a exclusão de usuários > (supondo DROP USER, com a opção PURGE se for bd 10g ou superior) deixe espaço > não usável : SENDO o extent de tamanho correto, o espaço dentro da tablespace > vai ser SIM re-usado > Outra coisa que pode acontecer no cenário que vc descreve (de cada usuário > ter a sua tablespace) é que, quando vc dropa o usuário, a tablespace que ele > usava NÃO É DROPADA automaticamente, o espaço em disco continua sendo > alocado, vc TEM que fazer a Remoção dos datafiles, normalmente com o comando > DROP TABLESPACE nnn INCLUDING DATAFILES; , cheque o manual de SQL Reference > para detalhes. > Devo dizer também que a opção de se ter uma única tablespace TB_USUARIOS > (digamos) > > 5) uma tablespace tempo pra cada usuário NÃO FAZ O MENOR SENTIDO , > pois o comportamento Natural delas é Automaticamente liberar o espaço quando > do COMMIT, o reuso é Automático e Natural : as views V$SORT_SEGMENT e > V$SORT_USAGE mostram o consumo/liberação... > > 6) SE vc tem espaço limitado em disco, as opções de Compactação vão ser > Cruciais, e na sua maioria elas dependem da VERSÃO DE BANCO, que vc pra > variar não cita : cheque as docs da
[oracle_br] Re: .:Duplicação de Base:.
Colega, ao que parece ninguém te respondeu, vou tentar o fazer : de cara porém tenho que avisar que é ** Impossível ** te dar um passo-a-passo exato e preciso, não há tempo nem espaço disponíveis, e nem é esse o foco do Grupo - sendo assim, vou dar DICAS, diretivas, que depois vc ** TEM QUE ** complementar estudando os manuais e bons livros de referência, pra poder entender do que estou falando...Lembro também que a esmagadora maioria das interfaces gráficas Não Te Dão a informação completa, elas 'escondem' parte da info, então vou nesta resposta sempre sugerir a Consulta nas fontes Reais de informação (tabelas/views internas do Sistema) onde cabível. Segue : 1) extents : o conceito fundamental é que quando o bd Oracle precisa alocar espaço, ele aloca ** não ** em bytes, nem em blocos, mas sim aloca um 'pedação' de blocos contíguos em disco, o chamado EXTENT - o tamanho de cada extent é definido na criação dos objetos (tabelas/índices/o que for), se não especificado usa o default da tablespace. Isso n os leva à distorções do tipo, tabela minúscula com extent size enorme, esse espaço VAI ser alocado e o RESIZE *** Não tem como *** diminuir, não tem como quebrar um extent, ele tem o tamanho que tem...Num caso desses, só recriando o objeto, veja 3) para opções. Consulte a DBA_EXTENTS/DBA_SEGMENTS para as tablespaces em questão, veja se os tamanhos são razoáveis em face dos dados 2) tablespace LMT ou DMT : derivado do fato acima, quando o espaço é liberado é o EXTENT que é marcado como livre, e quem precisar de espaço adicional vai tentar usar extents também - sendo assim, Óbvio, se vc tiver um espaço livre de X bytes em extents liberados ** mas ** o objeto sendo aumentado requer Y bytes como tamanho de extent, esse extent livre Não Vai Ser re-usado... Se vc estiver usando as (horrivelmente velhas e não-recomendadas) tablespaces gerenciadas pro Dicionário (DMT) vc pode ter valores os mais esdrúxulos e DIFERENTES para tamanhos de extents, podendo levar ao cenário descrito. Já SE vc estiver usando as modernas e Recomendadas tablespaces gerenciadas por bitmap local (LMT), com elas OU vc tem extents sempre iguais (usando a opção de UNIFORM SIZE na criação) , OU vc tem extents de Poucos tamanhos diferentes e sempre múltiplos entre si (usando a opção de AUTOALLOCATE/gerenciamente automático) na criação, consulte a DBA_TABLESPACES pra ver o que vc tem hoje... A recomendação quanto a isso é, SE vc sabe exatamente o tamanho que vai usar, avalie a hipótese de tablespace LMT uniform size, se não souber/tiver como saber (ex, são dados 'aleatórios', enviados pelos usuários, digamos), avalie AUTOALLOCATE 3) sim, é ** péssimo ** deixar se criar o que for que não seja interno na tablespace SYSTEM, vc terá que corrigir isso re-criando os objetos, mas usar o exp como vc pensa é TOTALMENTE DESNECESSÁRIO : gerar um dump file tem sentido se vc quer recriar o objeto em OUTRO DATABASE, sendo no mesmo banco vc tem Diversas outras opções, como o comando ALTER TABLE nnn MOVE/ALTER INDEX nn REBUILD, ou o DBMS_REDEFINE, ou o CREATE nn AS (select dos dados atuais), cheque as docs pra sintaxes e restrições 4) absolutamente ** NÃO É VERDADE ** que após a exclusão de usuários (supondo DROP USER, com a opção PURGE se for bd 10g ou superior) deixe espaço não usável : SENDO o extent de tamanho correto, o espaço dentro da tablespace vai ser SIM re-usado Outra coisa que pode acontecer no cenário que vc descreve (de cada usuário ter a sua tablespace) é que, quando vc dropa o usuário, a tablespace que ele usava NÃO É DROPADA automaticamente, o espaço em disco continua sendo alocado, vc TEM que fazer a Remoção dos datafiles, normalmente com o comando DROP TABLESPACE nnn INCLUDING DATAFILES; , cheque o manual de SQL Reference para detalhes. Devo dizer também que a opção de se ter uma única tablespace TB_USUARIOS (digamos) 5) uma tablespace tempo pra cada usuário NÃO FAZ O MENOR SENTIDO , pois o comportamento Natural delas é Automaticamente liberar o espaço quando do COMMIT, o reuso é Automático e Natural : as views V$SORT_SEGMENT e V$SORT_USAGE mostram o consumo/liberação... 6) SE vc tem espaço limitado em disco, as opções de Compactação vão ser Cruciais, e na sua maioria elas dependem da VERSÃO DE BANCO, que vc pra variar não cita : cheque as docs da sua versão 7) controle de espaço dentro dos blocos : uma vez alocado o extent, cada registro vai sendo gravado nos blocos do extent, começando pelo primeiro bloco, depois qundo esse enche o segundo, etc - além disso vc tem como controlar o espaço reservado em cada bloco para futuros UPDATEs, numa situação de espaço ultra-limitado é Crítico que isso esteja ajustado corretamente, veja as opções de PCTFREE/PCTUSED e STORAGE para a criação/recriação de objetos. 8) Finalmente, embora como disse acima não é aplicável no seu caso afaik o exp, só respondendo : é *** IMPOSSÍVEL *** se estimar com alguma exatidão o tama
Re: [oracle_br] Ajuda na consulta
Igor, blz? Sou Sys Admin Linux e aspirante a DBA Oracle. Segue abaixo minha colaboração. Está longe de ser uma boa solução, mas pode te dar uma primeira direção. Use os *tables alias* também nas colunas que serão retornadas. Isso poupa trabalho ao oracle de ter que descobrir em qual tabela está cada coluna. SELECT codigo_produto ,descricao_produto ,numero_nota ,serie_nota ,fornecedor ,data_entrada FROM notas_fiscais nf, produtos p, itens_notas_fiscais inf WHERE inf.id = nf.id AND p.codigo = inf.codigo AND nf.data_criacao in (SELECT max(data_criacao) FROM notas_fiscais nf, produtos p, itens_notas_fiscais inf WHERE inf.id = nf.id AND p.codigo = inf.codigo GROUP BY p.codigo); Att, Hevandro C. Veiga 2009/12/14 Igor Alves > > > eu tenho a seguinte consulta: > > SELECT > CODIGO_PRODUTO, > DESCRICAO_PRODUTO, > NUMERO_NOTA, > SERIE_NOTA, > FORNECEDOR, > DATA_ENTRADA > > FROM > NOTAS_FISCAIS, > PRODUTOS, > ITENS_NOTAS_FISCAIS > > WHERE > ITENS_NOTAS_FISCAIS.ID = NOTAS_FISCAIS.ID > AND PRODUTOS.CODIGO = ITENS_NOTAS_FISCAIS.CODIGO > porem quero que retorne o numero e seria da ultima nota fiscal de cada > produto listado, na tabela notas_ficais tem um campo que indica a criação > da > nota(data_criacao). > > Se alguem puder me ajudar.. > > -- > Igor Alves > Bacharel em Ciência da Computação > Tel: 2202-5658 / 8812-8670 > > [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/ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Canivete Suíço dos scripts
Cara, muito legal. Vou dar uma olhada nestes scripts, estou iniciando meus estudos para o OCA e sem duvida serao uteis no futuro. Abraços! 2009/12/14 Raul Francisco Costa F. de Andrade, DBA > > > segue assim então: > Scripts Oracle ferramentas de apoio para Dia a dia do DBA > Indice: > 1- Verifica Lock ORACLE 9i e 10g > 2- Verifica Lock ORACLE 8i > 3- Mostra desde quando a sessao está parada > 4- Mostra qual horário a sessao fez seu ultimo trabalho > 5- Gerar Trace > 6- verifica valor alocado para bd por tablespace > 7- Verifica realmente utilizado pelo BD por tablespace > 8- Saber valor que um owner ocupa no banco de dados efetivamente > 9- Verifica a alocaçao de determinada tabela separada por datafiles ou seja > consumo de espaço da tabela > 10- Verificacao e SQL TEXT > 11- Verificando instruçao SQL pelo SID > 12- Identificar usuário por SID > 13- Identificar usuário por SPID > 14- Lista execuções e loads por SQL_ID( Considerar ofensivos quando o > número > de loads for maior que executions) > 15- área ocupada pelos componentes da SGA > 16- Gerar senha randômica > 17- Verificando limites de banco de dados Sessions, process, etc > 18- Verifica qual sessao está bloqueando no caso de lock > 19- Agrupar usuários por tablespaces > 20- Identifica as transações Pendentes > 21- Verificar eventos de espera tempos de resposta do BD - OWI > 22- Verificando enfileiramentos > 23- verifica a quantidade de REDO gerado por Sessão > 24- indica transações distribuídas aguardando por recovery > 25- mostra as conexões de entrada e saída para conexões pendentes > 26- Mostra as mudanças de log (switch log) > 27- Verifica usuários locando tabelas > 28- Recompilar todos objetos inválidos > 29 - Verifica a utilização da área de recuperação Flash > DB_RECOVERY_FILE_DEST > > 1- Verifica Lock ORACLE 10g > SELECT /*+ rule */ l.inst_id,s.event, l.SID, s.serial# serial, p.spid, > s.username, > s.status, s.osuser, s.machine, s.program, > to_char(s.logon_time,'dd/mm/ hh24:mm:ss') LOGON_TIME, l.ctime > LOCK_TIME > FROM gv$lock l, gv$session s, gv$process p > WHERE s.inst_id = l.inst_id > and s.inst_id = p.inst_id > AND s.SID = l.SID > and s.PADDR = p.addr > AND (l.id1, l.id2, l.TYPE) IN (SELECT id1, id2, TYPE > FROM gv$lock > WHERE request > 0) > ORDER BY ctime DESC; > > 2- Verifica Lock ORACLE 8i e 9i > SELECT /*+ RULE */ l.SID, s.serial# serial, p.spid, s.username, s.status, > s.osuser, s.machine, s.program, > to_char(s.logon_time,'dd/mm/ hh24:mm:ss') LOGON_TIME, l.ctime > LOCK_TIME > FROM gv$lock l, gv$session s, gv$process p > WHERE s.inst_id = l.inst_id > and s.inst_id = p.inst_id > AND s.SID = l.SID > and s.PADDR = p.addr > AND (l.id1, l.id2, l.TYPE) IN (SELECT id1, id2, TYPE > FROM gv$lock > WHERE request > 0) > ORDER BY ctime DESC; > > 3- Mostra desde quando a sessao está parada > select username,logon_time,last_call_et, > to_char(sysdate-(last_call_et/(60*60*24)),'hh24:mi:ss') last_work_time > from gv$session > where username is not null > and status = 'INACTIVE' > > 4- Mostra qual horário a sessao fez seu ultimo trabalho > select username,logon_time,last_call_et, > to_char(sysdate-(last_call_et/(60*60*24)),'hh24:mi:ss') last_work_time > from gv$session > where username is not null > and status = 'ACTIVE' > > 5- Gerar Trace > EXEC sys.dbms_system.set_sql_trace_in_session(SID,serial,TRUE); > > 6- verifica valor alocado para bd por tablespace > select tablespace_name, sum(bytes)/1024/1024 "Valor alocado em MB" from > dba_data_files > group by tablespace_name > > 7- Verifica realmente utilizado pelo BD por tablespace > select tablespace_name, sum(bytes)/1024/1024 "valor utilizado em MB" from > dba_extents > group by tablespace_name > > 8- Saber valor que um owner ocupa no banco de dados efetivamente > (nao espaço alocado) separado por tablespace > > select tablespace_name, SUM(bytes)/1024/1024 "valores em MB" from > dba_segments where owner = 'ARBOR' > group by rollup (tablespace_name) > > 9- Verifica a alocaçao de determinada tabela separada por > datafiles > ou seja consumo de espaço da tabela > > select substr(D.file_name,1,200) as "FileSystem", > sum(E.bytes)/1024/1024/1024 as "TAMANHO EM GB" > from dba_data_files D,dba_extents E > where E.segment_name = 'NOME_TABELA' > and D.tablespace_name = 'NOME_TABLESPACE' > and D.FILE_ID = E.FILE_ID > group by rollup(substr(D.file_name,1,200)) > > 10- Verificacao e SQL TEXT > select sesion.sid, > sesion.username, > optimizer_mode, > hash_value, > address, > cpu_time, > elapsed_time, > sql_text > from gv$sqlarea sqlarea, gv$session sesion > where sesion.sql_hash_value = sqlarea.hash_value > and sesion.sql_address = sqlarea.address > and sesion.username = 'LF' > > 11- Verificando instruçao SQL pelo SID > select * from gv$sql > where address = (select sql_address from v$session where
Re: [oracle_br] Canivete Suíço dos scripts
segue assim então: Scripts Oracle ferramentas de apoio para Dia a dia do DBA Indice: 1- Verifica Lock ORACLE 9i e 10g 2- Verifica Lock ORACLE 8i 3- Mostra desde quando a sessao está parada 4- Mostra qual horário a sessao fez seu ultimo trabalho 5- Gerar Trace 6- verifica valor alocado para bd por tablespace 7- Verifica realmente utilizado pelo BD por tablespace 8- Saber valor que um owner ocupa no banco de dados efetivamente 9- Verifica a alocaçao de determinada tabela separada por datafiles ou seja consumo de espaço da tabela 10- Verificacao e SQL TEXT 11- Verificando instruçao SQL pelo SID 12- Identificar usuário por SID 13- Identificar usuário por SPID 14- Lista execuções e loads por SQL_ID( Considerar ofensivos quando o número de loads for maior que executions) 15- área ocupada pelos componentes da SGA 16- Gerar senha randômica 17- Verificando limites de banco de dados Sessions, process, etc 18- Verifica qual sessao está bloqueando no caso de lock 19- Agrupar usuários por tablespaces 20- Identifica as transações Pendentes 21- Verificar eventos de espera tempos de resposta do BD - OWI 22- Verificando enfileiramentos 23- verifica a quantidade de REDO gerado por Sessão 24- indica transações distribuídas aguardando por recovery 25- mostra as conexões de entrada e saída para conexões pendentes 26- Mostra as mudanças de log (switch log) 27- Verifica usuários locando tabelas 28- Recompilar todos objetos inválidos 29 - Verifica a utilização da área de recuperação Flash DB_RECOVERY_FILE_DEST 1- Verifica Lock ORACLE 10g SELECT /*+ rule */ l.inst_id,s.event, l.SID, s.serial# serial, p.spid, s.username, s.status, s.osuser, s.machine, s.program, to_char(s.logon_time,'dd/mm/ hh24:mm:ss') LOGON_TIME, l.ctime LOCK_TIME FROM gv$lock l, gv$session s, gv$process p WHERE s.inst_id = l.inst_id and s.inst_id = p.inst_id AND s.SID = l.SID and s.PADDR = p.addr AND (l.id1, l.id2, l.TYPE) IN (SELECT id1, id2, TYPE FROM gv$lock WHERE request > 0) ORDER BY ctime DESC; 2- Verifica Lock ORACLE 8i e 9i SELECT /*+ RULE */ l.SID, s.serial# serial, p.spid, s.username, s.status, s.osuser, s.machine, s.program, to_char(s.logon_time,'dd/mm/ hh24:mm:ss') LOGON_TIME, l.ctime LOCK_TIME FROM gv$lock l, gv$session s, gv$process p WHERE s.inst_id = l.inst_id and s.inst_id = p.inst_id AND s.SID = l.SID and s.PADDR = p.addr AND (l.id1, l.id2, l.TYPE) IN (SELECT id1, id2, TYPE FROM gv$lock WHERE request > 0) ORDER BY ctime DESC; 3- Mostra desde quando a sessao está parada select username,logon_time,last_call_et, to_char(sysdate-(last_call_et/(60*60*24)),'hh24:mi:ss') last_work_time from gv$session where username is not null and status = 'INACTIVE' 4- Mostra qual horário a sessao fez seu ultimo trabalho select username,logon_time,last_call_et, to_char(sysdate-(last_call_et/(60*60*24)),'hh24:mi:ss') last_work_time from gv$session where username is not null and status = 'ACTIVE' 5- Gerar Trace EXEC sys.dbms_system.set_sql_trace_in_session(SID,serial,TRUE); 6- verifica valor alocado para bd por tablespace select tablespace_name, sum(bytes)/1024/1024 "Valor alocado em MB" from dba_data_files group by tablespace_name 7- Verifica realmente utilizado pelo BD por tablespace select tablespace_name, sum(bytes)/1024/1024 "valor utilizado em MB" from dba_extents group by tablespace_name 8- Saber valor que um owner ocupa no banco de dados efetivamente (nao espaço alocado) separado por tablespace select tablespace_name, SUM(bytes)/1024/1024 "valores em MB" from dba_segments where owner = 'ARBOR' group by rollup (tablespace_name) 9- Verifica a alocaçao de determinada tabela separada por datafiles ou seja consumo de espaço da tabela select substr(D.file_name,1,200) as "FileSystem", sum(E.bytes)/1024/1024/1024 as "TAMANHO EM GB" from dba_data_files D,dba_extents E where E.segment_name = 'NOME_TABELA' and D.tablespace_name = 'NOME_TABLESPACE' and D.FILE_ID = E.FILE_ID group by rollup(substr(D.file_name,1,200)) 10- Verificacao e SQL TEXT select sesion.sid, sesion.username, optimizer_mode, hash_value, address, cpu_time, elapsed_time, sql_text from gv$sqlarea sqlarea, gv$session sesion where sesion.sql_hash_value = sqlarea.hash_value and sesion.sql_address= sqlarea.address and sesion.username = 'LF' 11- Verificando instruçao SQL pelo SID select * from gv$sql where address = (select sql_address from v$session where sid =26) -- where address in(select sql_address from v$session where sid in(50,17)) 12- Identificar usuário por SID select s.inst_id, s.sid, s.
[oracle_br] Ajuda na consulta
eu tenho a seguinte consulta: SELECT CODIGO_PRODUTO, DESCRICAO_PRODUTO, NUMERO_NOTA, SERIE_NOTA, FORNECEDOR, DATA_ENTRADA FROM NOTAS_FISCAIS, PRODUTOS, ITENS_NOTAS_FISCAIS WHERE ITENS_NOTAS_FISCAIS.ID = NOTAS_FISCAIS.ID AND PRODUTOS.CODIGO = ITENS_NOTAS_FISCAIS.CODIGO porem quero que retorne o numero e seria da ultima nota fiscal de cada produto listado, na tabela notas_ficais tem um campo que indica a criação da nota(data_criacao). Se alguem puder me ajudar.. -- Igor Alves Bacharel em Ciência da Computação Tel: 2202-5658 / 8812-8670 [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Algumas dúvidas: RAC Standard Editi on
Na versão EE, as licenças de rac são compradas a parte. 2009/12/12 Anderson Haertel Rodrigues > > > Noite.. > > A questão de licenças sempre é bem "chato" de se falar, afinal, só os caras > comerciais da Oracle/revenda oracle podem te falar "100% de certeza". > > Mas, de forma geral, SE e RAC é para no máximo 04 entradas de processador > fisicos e qualquer coisa diferente do ASM não é homologado. Na realidade, no > que diz respeito ao OCFS e similares, o DBCA nem habilita outra coisa fora o > ASM. > > Quanto a questão de performance, etc, a limitação cai nas coisas que ele > não tem, como por exemplo, paralelismo e a questão da escalabilidade, sim, > ele é bem limitado, já que cai no problema do número máximo de processadores > fisicos. > > Att, > > Anderson Haertel Rodrigues > Administrador de Banco de Dados - DBA > Porto Alegre/RS > > --- Em sáb, 12/12/09, candiurudba > > > escreveu: > > > De: candiurudba > > > Assunto: [oracle_br] Algumas dúvidas: RAC Standard Edition > > Para: oracle_br@yahoogrupos.com.br > > Data: Sábado, 12 de Dezembro de 2009, 11:48 > > > Bom dia colegas, mais uma ajuda por > > favor.. > > > > Estou iniciando os estudos aqui na empresa para validarmos > > a comprar de licenças RAC para a versão Standart Edition > > (é a que possuimos) mas tenho algumas dúvidas: > > > > 1) Andei lendo que na versão Standard Edition, só tenho > > como fazer 2 nós. Isso procede ? > > > > 2) Tenho como utilizar os pacotes OCF2 para Standard ao > > invés de trabalhar com ASM ? Fico com receio de trabalhar > > com ASM pois ja li muitos relatos ruins sobre ele > > > > 3) Existe alguma limitação (performance / escalabilidade) > > do RAC nesta versão ? > > > > 4) Como na Enterprise, preciso tambem adquririr licença > > para RAC para cada nó ? > > > > Agradeço muito pela ajuda e apoio > > > > > > > > > > > > > -- > > >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 > > > > > > > > > > __ > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbuscados.yahoo.com > > -- Att. Marcelo E. Procksch [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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Canivete Suíço dos scripts
Raul Muito legal sua iniciativa! As mensagens do "oracle_br" não aceitam anexos (devido à configuração do grupo). Há uma área de "arquivos". Se você puder enviar diretamente aos administradores (Dorian ou Fernanda Damous) eles podem disponibilizar lá... (não me lembro se nós também temos esse acesso direto). Obrigado. [ ] André 2009/12/14 Raul Francisco Costa F. de Andrade, DBA > > > Acredito que todo DBA já se pegou na situação de precisar de uma informação > e ainda precisar montar o script para isso. > > estou postando aqui o meu canivete suiço. São scripts que utilizo no dia a > dia já prontos... é minha caixa de ferramentas. > > espero que seja útil. Se alguém achar interessante acrescentar alguma coisa > pode enviar. > > Att. > > Raul > > -- > -- > Raul Francisco da Costa Ferreira de Andrade > DBA - OCA - Oracle Certified Associate > Fone: (41)8855-8874 Brt > email: raulf...@gmail.com > "Deus não dá prova superior às forças daquele que a pede; > só permite as que podem ser cumpridas. > Se tal não sucede, não é que falte possibilidade, falta vontade." > > [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/ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[oracle_br] Canivete Suíço dos scripts
Acredito que todo DBA já se pegou na situação de precisar de uma informação e ainda precisar montar o script para isso. estou postando aqui o meu canivete suiço. São scripts que utilizo no dia a dia já prontos... é minha caixa de ferramentas. espero que seja útil. Se alguém achar interessante acrescentar alguma coisa pode enviar. Att. Raul -- --- Raul Francisco da Costa Ferreira de Andrade DBA - OCA - Oracle Certified Associate Fone: (41)8855-8874 Brt email: raulf...@gmail.com "Deus não dá prova superior às forças daquele que a pede; só permite as que podem ser cumpridas. Se tal não sucede, não é que falte possibilidade, falta vontade." [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Oracle x XenServer
Outro ponto importante é a questão de licenciamento. Fora o Oracle VM, se for no VMWare ou no Xen, a conta será feita em cima dos processadores da máquina real, e não dos processadores virtuais. On Mon, Dec 14, 2009 at 12:58 PM, thiagomz wrote: > Andre Luiz da Silva escreveu: >> Pessoal bom dia, > > Completando, eu rodo meu desenvolvimento em XenServer da Citrix e nunca > tive nenhum problema. Alem do Oracle, devo ter umas 40 VMs em citrix com > linux, windows. > > -- > Att./Regards, > > Thiago Zerbinato > OCP DBA 8i/10g > http://www.thiagomz.com/ > Ribeirao Preto/SP - Brazil > > > > > > -- >>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 > > > -- Rosivaldo Azevedo Ramalho Consultor Oracle Database / Application Server mail/msn: rosiva...@gmail.com mobile: +55 83 8893 8281 Oracle Database 10g Certified Professional Oracle Application Server 10g Certified Professional
Re: [oracle_br] Oracle x XenServer
Andre Luiz da Silva escreveu: > Pessoal bom dia, Completando, eu rodo meu desenvolvimento em XenServer da Citrix e nunca tive nenhum problema. Alem do Oracle, devo ter umas 40 VMs em citrix com linux, windows. -- Att./Regards, Thiago Zerbinato OCP DBA 8i/10g http://www.thiagomz.com/ Ribeirao Preto/SP - Brazil
Re: [oracle_br] Oracle x XenServer
Andre Luiz da Silva escreveu: > Pessoal bom dia, Andre, No metalink tem uma nota sobre Oracle em VM, ele só é 100% homologado no OracleVM, nos demais, xen, wmware, etc... se o suporte achar que o problema é de virtualização, o chamado morre ai e passam a bola para o fabricante do virtualizador. -- Att./Regards, Thiago Zerbinato OCP DBA 8i/10g http://www.thiagomz.com/ Ribeirao Preto/SP - Brazil
Re: [oracle_br] retirar o ultimo sobrenome de uma string
Bom dia Leonardo, Não entendi o que são os asteriscos ("*") ... mas uma sugestão é a seguinte: *SELECT SUBSTR('Forrest S. Gump',INSTR('Forrest S. Gump', ' ', -1)+1) FROM DUAL ;* RESULT ==> "Gump" Substitua o nome *'Forrest S. Gump' *que aparece 2 vezes pelo campo que contém o nome completo. Teste aí e me dize se funciona! []'s Aldo* * 2009/12/14 Leonardo Santos da Mata > > > pessoal, > > eu tenho a seguinte situação: > > Eu tenho uma tabela de servidores que guarda nomes das pessoas e estou > precisando pegar os últimos sobrenomes de todos os registros, por exemplo: > > *James Benedito de Oliveira => Oliveira > **Guilherme Soares da Silva* => *Silva* > *Renato Batistetti => **Batistetti* > > obrigado > > Leonardo > > -- > Enviado de Palmas, TO, Brasil > > [As partes desta mensagem que não continham texto foram removidas] > > > -- Grato, Aldo Luís [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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[oracle_br] retirar o ultimo sobrenome de uma string
pessoal, eu tenho a seguinte situação: Eu tenho uma tabela de servidores que guarda nomes das pessoas e estou precisando pegar os últimos sobrenomes de todos os registros, por exemplo: *James Benedito de Oliveira => Oliveira **Guilherme Soares da Silva* => *Silva* *Renato Batistetti => **Batistetti* obrigado Leonardo -- Enviado de Palmas, TO, Brasil [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] mudar character set
Obrigado pelo retorno Eriovaldo. Já tinha me adiantado e baixei a versão "European", vou pedir para o pessoal testar novamente pra ver se dar certo, senão instalarei a versão "nova" - Original Message - From: "Eriovaldo Andrietta" To: Sent: Monday, December 14, 2009 10:51 AM Subject: Re: [oracle_br] mudar character set Olá Márcio, Eu passei por isso e veja a resposta que consegui. Instalei novamente usando a versão adequada do produto ao WE8ISO8859P1. Resposta que obtive: Basically, you can't choose the codepage during installation. There are 2 versions of XE - one universal one with a multibyte unicode codepage and one with a LATIN1 codepage. So, you downloaded the universal. If you want an ISO8859P1 codepage - download the western european one: http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html Espero que ajude. Att Eriovaldo 2009/12/14 Márcio Ricardo Alves da Silva > > > Bom dia! > > Instalei o Oracle XE Universal, character ert AL32UTF8, estou tentando > mudar o charset dele para WE8ISO8859P1 mas não consigo. Se não me engano > eu > consegui uma vez, mas agora não, alguém tem alguma dica? > > Márcio. > > [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/ Links do Yahoo! Grupos
Re: [oracle_br] mudar character set
Olá Márcio, Eu passei por isso e veja a resposta que consegui. Instalei novamente usando a versão adequada do produto ao WE8ISO8859P1. Resposta que obtive: Basically, you can't choose the codepage during installation. There are 2 versions of XE - one universal one with a multibyte unicode codepage and one with a LATIN1 codepage. So, you downloaded the universal. If you want an ISO8859P1 codepage - download the western european one: http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html Espero que ajude. Att Eriovaldo 2009/12/14 Márcio Ricardo Alves da Silva > > > Bom dia! > > Instalei o Oracle XE Universal, character ert AL32UTF8, estou tentando > mudar o charset dele para WE8ISO8859P1 mas não consigo. Se não me engano eu > consegui uma vez, mas agora não, alguém tem alguma dica? > > Márcio. > > [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/ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[oracle_br] mudar character set
Bom dia! Instalei o Oracle XE Universal, character ert AL32UTF8, estou tentando mudar o charset dele para WE8ISO8859P1 mas não consigo. Se não me engano eu consegui uma vez, mas agora não, alguém tem alguma dica? Márcio. [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Substring reverso
Oi Alex, Complementando a idéia do Chiappa (diga-se de passagem simples e eficiente), pode utilizar REGEXP para fazer também. Observe o exemplo: regexp_replace(name, '^(.*)\\ARC(.*)$', 'ARC\2') Efetuei alguns testes e observei que a idéia do Chiappa é mais eficiente (não abre margens para erro - ao contrário da minha): substr(name, instr(name, '\', -1) +1) Mas é só uma idéia (ainda não amadurecida). []s Braga 2009/12/11 Alex Oracle > > > Olá pessoal, > > Preciso fazer algo que acredito ser simples, mas não estou tendo sucesso. > Estou lendo da tabela v$archived_log a coluna name. > Gostaria de pegar apenas o nome do arquivo. > > Ex: > C:\PROGRAMS\ORACLE\ORADATA\ATENA\ARCH\ARCH00052_0705255133_001.LOG > > Quero pegar apenas: "ARCH00052_0705255133_001.LOG" > > Se algum puder me ajudar, agradeço > Abraço > Alex > > __ > 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] -- >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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Substring reverso
use select com substr []'s Raul 2009/12/11 Alex Oracle > > > Olá pessoal, > > Preciso fazer algo que acredito ser simples, mas não estou tendo sucesso. > Estou lendo da tabela v$archived_log a coluna name. > Gostaria de pegar apenas o nome do arquivo. > > Ex: > C:\PROGRAMS\ORACLE\ORADATA\ATENA\ARCH\ARCH00052_0705255133_001.LOG > > Quero pegar apenas: "ARCH00052_0705255133_001.LOG" > > Se algum puder me ajudar, agradeço > Abraço > Alex > > __ > > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbuscados.yahoo.com > > > -- --- Raul Francisco da Costa Ferreira de Andrade DBA - OCA - Oracle Certified Associate Fone: (41)8855-8874 Brt email: raulf...@gmail.com "Deus não dá prova superior às forças daquele que a pede; só permite as que podem ser cumpridas. Se tal não sucede, não é que falte possibilidade, falta vontade." [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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html