Re: [oracle_br] Re: DUVIDA: Instalando Oracle client 10 g Express edition...

2007-09-25 Por tôpico Myria Salvino
Isso mesmo.
  Fui no site da oracle e baixei o executavel e rodei na minha máquina em casa 
"OracleXEClient".
  Nao tenho servidor, tenho a minha própria máquina.
   
  Nesse caso é possível, fazer funcionar?
   
  Obrigada :-)

"Milton Bastos Henriquis Jr." <[EMAIL PROTECTED]> escreveu:
  Myriã, mas espere aí...
Vc instalou o CLIENT do Oracle XE, é isso??
E vc tem algum SERVIDOR para que ele possa se conectar???

On 9/21/07, Myria Salvino <[EMAIL PROTECTED]> wrote:
>
> Olá Amigos
>
> Eu já tentei as seguintes ações, mas continuo com problemas. :..-(
>
> comando : sqlplus/as sysdba
> erro: ora-12560: TNS: protocol adapter error
>
> comando: grant connect, dba to myria
> erro: not connected
>
> comando: user myria identified by myria
> erro: unknown command beginning "creat user..." - rest of line ignored
>
>
> Alguém pode me ajudar. É a primeira vez que tento instalar um banco no meu
> micro...
>
>
>
> Myria Salvino <[EMAIL PROTECTED] > escreveu:
> Intalei o Oracle client 10 g Express edition, mas como é a primeira vez
> que faço isso estou com algumas diculdades.
>
> Alguem poderia me dar algumas dicas e dizer onde encontro um bom tutorial?
>
> Preciso saber que usuário e senha usar, como configurar os arquivinho tns
> ora e etc..
>
> Obrigada grupo.
>
> Myriã
> Flickr agora em português. Você clica, todo mundo vê. Saiba mais.
>
> Flickr agora em português. Você clica, todo mundo vê. Saiba mais.
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>

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



 



Myriã Almeida
  +55-11-94911053
  msn:[EMAIL PROTECTED]
   





   Flickr agora em português. Você clica, todo mundo vê. Saiba mais.

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



[oracle_br] Re: Duvida!!!!!!!!!!!

2007-09-25 Por tôpico Carlos
Já passei por isso Robson.

Tenta trocar o robson do url por localhost.
Se não der certo, procura no Oracle home uma pasta ou com o nome
localhost ou com o nome da sua máquina. É lá onde o enterprise manager
mantém seus dados. Específicamente dentro das sub-pastas abaixo do sysman.

[]s

Carlos

--- Em oracle_br@yahoogrupos.com.br, "Cahehe.Foruns"
<[EMAIL PROTECTED]> escreveu
>
> Olá para todos do grupo, tudo bem com todos?
> 
> Instalei no meu notebook o Oracle 10g e estou com uma duvida!!
> 
> Quando fiz a instalação do Oracle no meu notebook eu acessava o
configurador do Oracle pelo caminho:
> 
> http://robson:5500/em
> 
> Hoje tentei acessar e simplesmente não consegui, dá que a pagina não
foi encontrada, alguém já viu isso?
> 
> Abraço.
> 
> Robson
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Re: DUVIDA: Instalando Oracle client 10 g Express edition...

2007-09-21 Por tôpico Milton Bastos Henriquis Jr.
Myriã, mas espere aí...
Vc instalou o CLIENT do Oracle XE, é isso??
E vc tem algum SERVIDOR para que ele possa se conectar???


On 9/21/07, Myria Salvino <[EMAIL PROTECTED]> wrote:
>
>   Olá Amigos
>
> Eu já tentei as seguintes ações, mas continuo com problemas. :..-(
>
> comando : sqlplus/as sysdba
> erro: ora-12560: TNS: protocol adapter error
>
> comando: grant connect, dba to myria
> erro: not connected
>
> comando: user myria identified by myria
> erro: unknown command beginning "creat user..." - rest of line ignored
>
>
> Alguém pode me ajudar. É a primeira vez que tento instalar um banco no meu
> micro...
>
>
>
> Myria Salvino <[EMAIL PROTECTED] > escreveu:
> Intalei o Oracle client 10 g Express edition, mas como é a primeira vez
> que faço isso estou com algumas diculdades.
>
> Alguem poderia me dar algumas dicas e dizer onde encontro um bom tutorial?
>
> Preciso saber que usuário e senha usar, como configurar os arquivinho tns
> ora e etc..
>
> Obrigada grupo.
>
> Myriã
> Flickr agora em português. Você clica, todo mundo vê. Saiba mais.
>
> Flickr agora em português. Você clica, todo mundo vê. Saiba mais.
>
> [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: DUVIDA: Instalando Oracle client 10 g Express edition...

2007-09-21 Por tôpico Myria Salvino
Olá Amigos
   
  Eu já tentei as seguintes ações, mas continuo com problemas. :..-(
   
  comando : sqlplus/as sysdba
  erro: ora-12560: TNS: protocol adapter error
   
  comando: grant connect, dba to myria
  erro: not connected
   
  comando: user myria identified by myria
  erro: unknown command beginning "creat user..." - rest of line ignored
   
   
  Alguém pode me ajudar. É a primeira vez que tento instalar um banco no meu 
micro...
   
  

Myria Salvino <[EMAIL PROTECTED]> escreveu:
Intalei o Oracle client 10 g Express edition, mas como é a primeira vez que 
faço isso estou com algumas diculdades.
   
  Alguem poderia me dar algumas dicas e dizer onde encontro um bom tutorial?
   
  Preciso saber que usuário e senha usar, como configurar os arquivinho tns ora 
e etc..
   
  Obrigada grupo.
   
  Myriã
  Flickr agora em português. Você clica, todo mundo vê. Saiba mais. 


   Flickr agora em português. Você clica, todo mundo vê. Saiba mais.

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



[oracle_br] Re: duvida Quanto ao que fazer ( procedure ou view Materializada)

2007-09-20 Por tôpico rei_do_delphi
é, na verdade, essas consultas ja estavam ativas quando entrei na
empresa, e tiraram os relatórios da web que rodavam essas consultas
por justamente ele consumir muito processamento, e ja revirei a query,
o problema é mesmo no modelo do banco, que é um sistema de terceiro.


--- Em oracle_br@yahoogrupos.com.br, Roberto Amorim <[EMAIL PROTECTED]> escreveu
>
> Você já deu uma olhada no plano de execução dessas consultas?
> Examine detalhadamente, e se tiver dúvidas coloque-as aqui, antes de 
> desistir e aceitar o problema como insolúvel.
> Tudo bem que de noite você pode até ter tempo livre, que são só 5 
> minutos, mas, essas coisas costumam estourar em problemas urgentes mais 
> na frente.
> 
> 
> 
> rei_do_delphi escreveu:
> > Boa tarde a todos!
> >
> > estou com uma dúvida muito grande quanto ao que fazer. Existem algumas
> > consultas em nosso site que tiveram de ser desabilitadas por que
> > estavam consumindo muitos recursos do banco de dados. Coisa assim de
> > ficar 5 minutos com o processador a 90% e não retornar os dados. Eu
> > sei que isso é erro de análise, ou melhor, erro de projeto do banco de
> > dados, porém, essas consultas são necessárias! Estava pensando então
> > em criar um job que rodasse uma procedure que alimentasse uma tabela
> > todas as noites com os dados na forma mais sintética possível para
> > esses relatórios, e então essas consultas deveriam consultar esses
> > dados que a procedure gerou e gravou nessa tabela, pois assim, o
> > processamente seria mais leve e diario, acarretando apenas em
> > tamanho(espaço físico), porém estava lendo um livro e vi que é
> > possível também a criação de views materializadas. Gostaria de saber o
> > que vcs acham que compensa mais, procedure ou view? Ambiente é
> > solaris, versão 10.2.0.1. Abraço a todos.
> >
> >
> >
> >
> >   
> >> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package »
Procedure » Scripts » Tutoriais acesse:
http://www.oraclebr.com.br/codigo/ListaCodigo.php 
> >> 
> >
--
> >   
> >> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e
de inteira responsabilidade de seus remetentes.
> >> 
> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
> >
--
> >   
> >> O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
http://www.oraclebr.com.br/  
> >> 
> >

 
> > Links do Yahoo! Grupos
> >
> >  
> >
> >
> >
> >
>




[oracle_br] Re: duvida Quanto ao que fazer ( procedure ou view Materializada)

2007-09-20 Por tôpico rei_do_delphi
É erro de modelagem mesmo, mas o sistema ja estava instalado aqui
quando entrei, e é um sistema de terceiro que estamos adaptando
algumas coisas para nossas necessidades, e infelizmente a query ja
analisei e esta certinha, são coisas como like em tabelas com milhões
de linhas que degradam a performance do banco, gostaria de saber o que
seria melhor, procedure ou view materializada? como funciona view
materializada?

--- Em oracle_br@yahoogrupos.com.br, Roberto Amorim <[EMAIL PROTECTED]> escreveu
>
> Pois é, o fato dele ter usado o termo consulta pode ter me confundido, 
> mas eu entendo por consulta algo pontual, uma coisa destinada a alguem 
> ler (consultar). Isso implica em uma quantidade pequena de dados, algo 
> legível por um humano, que nunca passará de 200kb, a menos que seja 
> consulta de imagens. Uma demora tão grande, com um uso tão intenso de 
> cpu me leva a pensar que, salvo a excessão que falei, exista um 
> "problema" estrutural nas queries ou no esquema. Mas, não dá para 
> avaliar só pelo que o rei falou. Vale então o conselho.
> Roberto
> 
> 
> rflribeiro escreveu:
> > Como outro colega mencionou em outra mensagem, seria interessante dar
> > uma olhada no plano de execução das queries, procurando corrigir ou
> > melhorar algo nelas. Partindo do princípio de que você já tem a
query o
> > melhor escrita possível, aí sim, efetuar testes com views ou
utilização
> > de procedures.
> >
> > Reginaldo Ribeiro
> > Administrador de Bancos de Dados
> > Oracle Certified Associate 10g
> > _
> > DBcom IT Experts
> > skype: rflribeiro
> > msn: [EMAIL PROTECTED]
> > mobile: 551192344290
> > fone: 551162165375
> > e-mail: [EMAIL PROTECTED]
> > site: www.dbcom.com.br
> >
> >
> >
> > rei_do_delphi wrote:
> >   
> >> boa tarde Reginaldo, tudo bom?
> >>
> >> eu até pensei em view(comuns), mas o problema é que as consultas são
> >> muito pesadas, temos ambiente de testes sim, e em produção e teste a
> >> select roda devagar, por isso gostaria de criar ou uma procedure para
> >> rodar todas as noite para carregar dados para uma nova tabela com o
> >> resultado dessa select de uma maneira analítica. Também pensei em
> >> views materializadas, e gostaria de saber a opinião de vocês entre
> >> procedure e view materializada.
> >>
> >> --- Em oracle_br@yahoogrupos.com.br
> >> , rflribeiro 
> >> escreveu
> >> 
> >>> Se os dados já estão disponíveis em suas respectivas tabelas e,
após a
> >>> inserção eles não sofrerão outras operações, ou seja, se sua
procedure
> >>> só server para centralizar os dados numa tabela única e nada
mais, ao
> >>> menos tente utilizar view. Você não tem ambiente de teste?
> >>>
> >>> Reginaldo Ribeiro
> >>> Administrador de Bancos de Dados
> >>> Oracle Certified Associate 10g
> >>> _
> >>> DBcom IT Experts
> >>> skype: rflribeiro
> >>> msn: rflribeiro@
> >>> mobile: 551192344290
> >>> fone: 551162165375
> >>> e-mail: rflribeiro@
> >>> site: www.dbcom.com.br
> >>>
> >>>
> >>>
> >>> rei_do_delphi wrote:
> >>>   
>  Boa tarde a todos!
> 
>  estou com uma dúvida muito grande quanto ao que fazer. Existem
algumas
>  consultas em nosso site que tiveram de ser desabilitadas por que
>  estavam consumindo muitos recursos do banco de dados. Coisa
assim de
>  ficar 5 minutos com o processador a 90% e não retornar os dados. Eu
>  sei que isso é erro de análise, ou melhor, erro de projeto do
banco de
>  dados, porém, essas consultas são necessárias! Estava pensando
então
>  em criar um job que rodasse uma procedure que alimentasse uma
tabela
>  todas as noites com os dados na forma mais sintética possível para
>  esses relatórios, e então essas consultas deveriam consultar esses
>  dados que a procedure gerou e gravou nessa tabela, pois assim, o
>  processamente seria mais leve e diario, acarretando apenas em
>  tamanho(espaço físico), porém estava lendo um livro e vi que é
>  possível também a criação de views materializadas. Gostaria de
saber o
>  que vcs acham que compensa mais, procedure ou view? Ambiente é
>  solaris, versão 10.2.0.1. Abraço a todos.
>  
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> >   
> >> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package »
Procedure » Scripts » Tutoriais acesse:
http://www.oraclebr.com.br/codigo/ListaCodigo.php 
> >> 
> >
--
> >   
> >> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e
de inteira responsabilidade de seus remetentes.
> >> 
> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
> >
--
> >   
> >> O GRUPO ORACLE_BR TEM SEU 

Re: [oracle_br] Re: duvida Quanto ao que fazer ( procedure ou view Materializada)

2007-09-20 Por tôpico Roberto Amorim
Pois é, o fato dele ter usado o termo consulta pode ter me confundido, 
mas eu entendo por consulta algo pontual, uma coisa destinada a alguem 
ler (consultar). Isso implica em uma quantidade pequena de dados, algo 
legível por um humano, que nunca passará de 200kb, a menos que seja 
consulta de imagens. Uma demora tão grande, com um uso tão intenso de 
cpu me leva a pensar que, salvo a excessão que falei, exista um 
"problema" estrutural nas queries ou no esquema. Mas, não dá para 
avaliar só pelo que o rei falou. Vale então o conselho.
Roberto


rflribeiro escreveu:
> Como outro colega mencionou em outra mensagem, seria interessante dar
> uma olhada no plano de execução das queries, procurando corrigir ou
> melhorar algo nelas. Partindo do princípio de que você já tem a query o
> melhor escrita possível, aí sim, efetuar testes com views ou utilização
> de procedures.
>
> Reginaldo Ribeiro
> Administrador de Bancos de Dados
> Oracle Certified Associate 10g
> _
> DBcom IT Experts
> skype: rflribeiro
> msn: [EMAIL PROTECTED]
> mobile: 551192344290
> fone: 551162165375
> e-mail: [EMAIL PROTECTED]
> site: www.dbcom.com.br
>
>
>
> rei_do_delphi wrote:
>   
>> boa tarde Reginaldo, tudo bom?
>>
>> eu até pensei em view(comuns), mas o problema é que as consultas são
>> muito pesadas, temos ambiente de testes sim, e em produção e teste a
>> select roda devagar, por isso gostaria de criar ou uma procedure para
>> rodar todas as noite para carregar dados para uma nova tabela com o
>> resultado dessa select de uma maneira analítica. Também pensei em
>> views materializadas, e gostaria de saber a opinião de vocês entre
>> procedure e view materializada.
>>
>> --- Em oracle_br@yahoogrupos.com.br
>> , rflribeiro <[EMAIL PROTECTED]>
>> escreveu
>> 
>>> Se os dados já estão disponíveis em suas respectivas tabelas e, após a
>>> inserção eles não sofrerão outras operações, ou seja, se sua procedure
>>> só server para centralizar os dados numa tabela única e nada mais, ao
>>> menos tente utilizar view. Você não tem ambiente de teste?
>>>
>>> Reginaldo Ribeiro
>>> Administrador de Bancos de Dados
>>> Oracle Certified Associate 10g
>>> _
>>> DBcom IT Experts
>>> skype: rflribeiro
>>> msn: [EMAIL PROTECTED]
>>> mobile: 551192344290
>>> fone: 551162165375
>>> e-mail: [EMAIL PROTECTED]
>>> site: www.dbcom.com.br
>>>
>>>
>>>
>>> rei_do_delphi wrote:
>>>   
 Boa tarde a todos!

 estou com uma dúvida muito grande quanto ao que fazer. Existem algumas
 consultas em nosso site que tiveram de ser desabilitadas por que
 estavam consumindo muitos recursos do banco de dados. Coisa assim de
 ficar 5 minutos com o processador a 90% e não retornar os dados. Eu
 sei que isso é erro de análise, ou melhor, erro de projeto do banco de
 dados, porém, essas consultas são necessárias! Estava pensando então
 em criar um job que rodasse uma procedure que alimentasse uma tabela
 todas as noites com os dados na forma mais sintética possível para
 esses relatórios, e então essas consultas deveriam consultar esses
 dados que a procedure gerou e gravou nessa tabela, pois assim, o
 processamente seria mais leve e diario, acarretando apenas em
 tamanho(espaço físico), porém estava lendo um livro e vi que é
 possível também a criação de views materializadas. Gostaria de saber o
 que vcs acham que compensa mais, procedure ou view? Ambiente é
 solaris, versão 10.2.0.1. Abraço a todos.
 
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>   
>> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure 
>> » Scripts » Tutoriais acesse: 
>> http://www.oraclebr.com.br/codigo/ListaCodigo.php 
>> 
> --
>   
>> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>> responsabilidade de seus remetentes.
>> 
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
> --
>   
>> O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>> http://www.oraclebr.com.br/  
>> 
> 
>   
> Links do Yahoo! Grupos
>
>  
>
>
>
>   



Re: [oracle_br] Re: duvida Quanto ao que fazer ( procedure ou view Materializada)

2007-09-20 Por tôpico rflribeiro
Como outro colega mencionou em outra mensagem, seria interessante dar
uma olhada no plano de execução das queries, procurando corrigir ou
melhorar algo nelas. Partindo do princípio de que você já tem a query o
melhor escrita possível, aí sim, efetuar testes com views ou utilização
de procedures.

Reginaldo Ribeiro
Administrador de Bancos de Dados
Oracle Certified Associate 10g
_
DBcom IT Experts
skype: rflribeiro
msn: [EMAIL PROTECTED]
mobile: 551192344290
fone: 551162165375
e-mail: [EMAIL PROTECTED]
site: www.dbcom.com.br



rei_do_delphi wrote:
>
> boa tarde Reginaldo, tudo bom?
>
> eu até pensei em view(comuns), mas o problema é que as consultas são
> muito pesadas, temos ambiente de testes sim, e em produção e teste a
> select roda devagar, por isso gostaria de criar ou uma procedure para
> rodar todas as noite para carregar dados para uma nova tabela com o
> resultado dessa select de uma maneira analítica. Também pensei em
> views materializadas, e gostaria de saber a opinião de vocês entre
> procedure e view materializada.
>
> --- Em oracle_br@yahoogrupos.com.br
> , rflribeiro <[EMAIL PROTECTED]>
> escreveu
> >
> > Se os dados já estão disponíveis em suas respectivas tabelas e, após a
> > inserção eles não sofrerão outras operações, ou seja, se sua procedure
> > só server para centralizar os dados numa tabela única e nada mais, ao
> > menos tente utilizar view. Você não tem ambiente de teste?
> >
> > Reginaldo Ribeiro
> > Administrador de Bancos de Dados
> > Oracle Certified Associate 10g
> > _
> > DBcom IT Experts
> > skype: rflribeiro
> > msn: [EMAIL PROTECTED]
> > mobile: 551192344290
> > fone: 551162165375
> > e-mail: [EMAIL PROTECTED]
> > site: www.dbcom.com.br
> >
> >
> >
> > rei_do_delphi wrote:
> > >
> > > Boa tarde a todos!
> > >
> > > estou com uma dúvida muito grande quanto ao que fazer. Existem algumas
> > > consultas em nosso site que tiveram de ser desabilitadas por que
> > > estavam consumindo muitos recursos do banco de dados. Coisa assim de
> > > ficar 5 minutos com o processador a 90% e não retornar os dados. Eu
> > > sei que isso é erro de análise, ou melhor, erro de projeto do banco de
> > > dados, porém, essas consultas são necessárias! Estava pensando então
> > > em criar um job que rodasse uma procedure que alimentasse uma tabela
> > > todas as noites com os dados na forma mais sintética possível para
> > > esses relatórios, e então essas consultas deveriam consultar esses
> > > dados que a procedure gerou e gravou nessa tabela, pois assim, o
> > > processamente seria mais leve e diario, acarretando apenas em
> > > tamanho(espaço físico), porém estava lendo um livro e vi que é
> > > possível também a criação de views materializadas. Gostaria de saber o
> > > que vcs acham que compensa mais, procedure ou view? Ambiente é
> > > solaris, versão 10.2.0.1. Abraço a todos.
>


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



[oracle_br] Re: duvida Quanto ao que fazer ( procedure ou view Materializada)

2007-09-20 Por tôpico jlchiappa
A vantagem principal da view materializada é que junto com ela vc 
pode ter a figura do materialized view log, que é um "histórico" dos 
registros atualizados : assim, na hora de refrescar a view 
materializada, há a opção do banco APENAS ir buscar no log quais 
registros foram alterados e apenas esses registros entram na view 
materializada, logicamente isso é MUITO muito mais rápido do que vc a 
cada refresh ter que copiar tudo da Produção Claro, vc 
tranquilamente poderia criar um mecanismo parecido na sua tal 
procedure (provavelmente tendo uma coluna data_operacao ou coisa do 
tipo em cada registro, daí a procedure só leria os regs recentes e 
atualizaria a tal tabela), mas sem dúvida usar o recurso built-in é 
sempre mais fácil, normalmente mais performático.
 Só não deixe de consultar os detalhes na documentação, pois NEM TODO 
e qulquer tipo de SQL pode ser usado em qualquer view materializada, 
há exigência e restrições, veja lá se tudo bem pra vc...
 
 []s
 
 
  Chiappa
  
--- Em oracle_br@yahoogrupos.com.br, "rei_do_delphi" 
<[EMAIL PROTECTED]> escreveu
>
> boa tarde Reginaldo, tudo bom?
> 
> eu até pensei em view(comuns), mas o problema é que as consultas são
> muito pesadas, temos ambiente de testes sim, e em produção e teste a
> select roda devagar, por isso gostaria de criar ou uma procedure 
para
> rodar todas as noite para carregar dados para uma nova tabela com o
> resultado dessa select de uma maneira analítica. Também pensei em
> views materializadas, e gostaria de saber a opinião de vocês entre
> procedure e view materializada.
> 
> --- Em oracle_br@yahoogrupos.com.br, rflribeiro  
escreveu
> >
> > Se os dados já estão disponíveis em suas respectivas tabelas e, 
após a
> > inserção eles não sofrerão outras operações, ou seja, se sua 
procedure
> > só server para centralizar os dados numa tabela única e nada 
mais, ao
> > menos tente utilizar view. Você não tem ambiente de teste?
> > 
> > Reginaldo Ribeiro
> > Administrador de Bancos de Dados
> > Oracle Certified Associate 10g
> > _
> > DBcom IT Experts
> > skype: rflribeiro
> > msn: rflribeiro@
> > mobile: 551192344290
> > fone: 551162165375
> > e-mail: rflribeiro@
> > site: www.dbcom.com.br
> > 
> > 
> > 
> > rei_do_delphi wrote:
> > >
> > > Boa tarde a todos!
> > >
> > > estou com uma dúvida muito grande quanto ao que fazer. Existem 
algumas
> > > consultas em nosso site que tiveram de ser desabilitadas por que
> > > estavam consumindo muitos recursos do banco de dados. Coisa 
assim de
> > > ficar 5 minutos com o processador a 90% e não retornar os 
dados. Eu
> > > sei que isso é erro de análise, ou melhor, erro de projeto do 
banco de
> > > dados, porém, essas consultas são necessárias! Estava pensando 
então
> > > em criar um job que rodasse uma procedure que alimentasse uma 
tabela
> > > todas as noites com os dados na forma mais sintética possível 
para
> > > esses relatórios, e então essas consultas deveriam consultar 
esses
> > > dados que a procedure gerou e gravou nessa tabela, pois assim, o
> > > processamente seria mais leve e diario, acarretando apenas em
> > > tamanho(espaço físico), porém estava lendo um livro e vi que é
> > > possível também a criação de views materializadas. Gostaria de 
saber o
> > > que vcs acham que compensa mais, procedure ou view? Ambiente é
> > > solaris, versão 10.2.0.1. Abraço a todos.
> > >
> > >
> >
>




[oracle_br] Re: duvida Quanto ao que fazer ( procedure ou view Materializada)

2007-09-20 Por tôpico rei_do_delphi
boa tarde Reginaldo, tudo bom?

eu até pensei em view(comuns), mas o problema é que as consultas são
muito pesadas, temos ambiente de testes sim, e em produção e teste a
select roda devagar, por isso gostaria de criar ou uma procedure para
rodar todas as noite para carregar dados para uma nova tabela com o
resultado dessa select de uma maneira analítica. Também pensei em
views materializadas, e gostaria de saber a opinião de vocês entre
procedure e view materializada.

--- Em oracle_br@yahoogrupos.com.br, rflribeiro <[EMAIL PROTECTED]> escreveu
>
> Se os dados já estão disponíveis em suas respectivas tabelas e, após a
> inserção eles não sofrerão outras operações, ou seja, se sua procedure
> só server para centralizar os dados numa tabela única e nada mais, ao
> menos tente utilizar view. Você não tem ambiente de teste?
> 
> Reginaldo Ribeiro
> Administrador de Bancos de Dados
> Oracle Certified Associate 10g
> _
> DBcom IT Experts
> skype: rflribeiro
> msn: [EMAIL PROTECTED]
> mobile: 551192344290
> fone: 551162165375
> e-mail: [EMAIL PROTECTED]
> site: www.dbcom.com.br
> 
> 
> 
> rei_do_delphi wrote:
> >
> > Boa tarde a todos!
> >
> > estou com uma dúvida muito grande quanto ao que fazer. Existem algumas
> > consultas em nosso site que tiveram de ser desabilitadas por que
> > estavam consumindo muitos recursos do banco de dados. Coisa assim de
> > ficar 5 minutos com o processador a 90% e não retornar os dados. Eu
> > sei que isso é erro de análise, ou melhor, erro de projeto do banco de
> > dados, porém, essas consultas são necessárias! Estava pensando então
> > em criar um job que rodasse uma procedure que alimentasse uma tabela
> > todas as noites com os dados na forma mais sintética possível para
> > esses relatórios, e então essas consultas deveriam consultar esses
> > dados que a procedure gerou e gravou nessa tabela, pois assim, o
> > processamente seria mais leve e diario, acarretando apenas em
> > tamanho(espaço físico), porém estava lendo um livro e vi que é
> > possível também a criação de views materializadas. Gostaria de saber o
> > que vcs acham que compensa mais, procedure ou view? Ambiente é
> > solaris, versão 10.2.0.1. Abraço a todos.
> >
> >
>




[oracle_br] Re: DUVIDA : Conversao Implicita

2007-09-10 Por tôpico jlchiappa
É bem simples, quando vc "confia" na conevrsão implícita e 
automatica, vc corre dois riscos :

1. a conversão TANTO pode ocorrer à esquerda ou à direita dum 
operador de comparação, por exemplo imagine o código abaixo :

  ... WHERE colunanumérica = '45' ...
  
  nesse caso o bd Oracle TANTO pode escolher converter a string '45' 
para o número 45 e fazer a comparação com a coluna numérica ** OU ** 
pode optar por converter a coluna numérica para string,e aí comparar 
string com string. O risco é que SE o banco optar por converter a 
coluna numérica para string E haver um índice nela, obviamente o 
índice contém NÚMEROS e não strings, pode não ser usado...
  
2. conversão implícita necessariamente ** UTILIZA **   as variáveis 
de ambiente do cliente conectado no banco, que TRANQUILAMENTE podem 
estar diferentes das do banco e/ou do assumido no programa. Imagine 
que vc conecta no banco com um cliente configurado para datas no 
formato DD/MM/ e executa um SQL tipo :

... WHERE colunadate = '15/01/2007' ...

a query funcionará OK, mas se esse MESMO programa enviar esse MESMO 
SQL a partir duma máquina-cliente setada com OUTRO formato default de 
data (digamos, 'MM/DD/') o banco vai "achar" que '15' é o mês, 
vai dar ERRO. Programa que confia em defaults de ambiente CEDO ou 
TARDE acaba "estourando", é uma prática COMUM e RECOMENDADA de 
programação defensiva de escrever algo como :

... WHERE colunadate = to_date('15/01/2007', 'dd/mm/') ...

aí esse código NÃO falha seja qual for o default da sessão-cliente.


==>> essas questões NÂO foram inventadas por mim, no manual de SQL 
Reference a Oracle o diz com todas as letras :

"Data Conversion 

Generally an expression cannot contain values of different datatypes. 
For example, an expression cannot multiply 5 by 10 and then 
add 'JAMES'. However, Oracle supports both implicit and explicit 
conversion of values from one datatype to another.

Implicit and Explicit Data Conversion 

Oracle recommends that you specify explicit conversions, rather than 
rely on implicit or automatic conversions, for these reasons:

• SQL statements are easier to understand when you use explicit 
datatype conversion functions.

• Implicit datatype conversion can have a negative impact on 
performance, especially if the datatype of a column value is 
converted to that of a constant rather than the other way around.

• Implicit conversion depends on the context in which it occurs and 
may not work the same way in every case. For example, implicit 
conversion from a datetime value to a VARCHAR2 value may return an 
unexpected year depending on the value of the NLS_DATE_FORMAT 
parameter.

• Algorithms for implicit conversion are subject to change across 
software releases and among Oracle products. Behavior of explicit 
conversions is more predictable.
"

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, Myria Salvino <[EMAIL PROTECTED]> 
escreveu
>
> Ola Amigos 
>
>   Por favor que puder ajudar : 
>
>   Por que usar  conversao implicita em pl/sql 'e uma pratica ruim 
de programacao??
>
>   Obrigada
>
>   My
> 
>Flickr agora em português. Você clica, todo mundo vê. Saiba 
mais.
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




RES: [oracle_br] Re: Duvida sobre blocos

2007-08-28 Por tôpico Alan Corte
Obrigado Chiappa.

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: segunda-feira, 27 de agosto de 2007 16:15
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Duvida sobre blocos

 

Colega, basicamente a sua resposta é : sim, EM TESE o tamanho de 
bloco no disco deveria ser idêntico ao tamanho de bloco do seu 
database, pois senão ou o SO terá que fazer vários I/Os físicos 
quando o banco pedir um só I/O de bloco (que é o mínimo que o banco 
pede), ou o SO fará um I/O físico só porém maior do que o mínimo que 
o banco pediu. MAS por outro lado, estamos falando aqui de I/Os que 
duram FRAÇÃO de segundo, isso é algo que muitas vezes é até DIFÍCIL 
de mensurar, então um eventual "desbalanceamento" entre block do 
banco e do disco NÃO É algo que por si só implique altíssima 
performance se presente ou derrube o banco se ausente : o correto 
ajuste dos SQLs da aplicação , das estruturas físicas dentro do banco 
(como STORAGE e HWM), das estruturas de apoio (como índices, settings 
de CBO e de uso de RAM, profiles, MVs, etc) normalmente são ** 
EXPONENCIALMENTE ** mais importantes, são elas que te dão o máximo 
retorno com mínimo esforço.

==>> E eu disse EM TESE porém porque há OUTROS pontos a considerar ao 
se definir um blocksize para um banco - por exemplo, se vc tiver um 
bloco muito grande logicamente muito mais registros caberão dentro 
desse bloco, aumenta EM MUITO portanto a chance de muitas mais 
pessoas quererem acessar esse bloco, e já que cada acesso implica em 
latches (ie, "travamento lógico" do bloco), um blocksize muito grande 
em ambiente OLTP (aonde tipicamente há DEZENAS e DEZENAS, se não 
CENTENAS de usuários online) é propício a ** derrubar ** a 
performance do seu banco... Já num ambiente DW, como há muito muito 
menos usuários simultâneos via de regra, em alguns casos é aceitável 
um blocksize ** um pouco ** maior, mas vc TEM que ser razoável, um 
blocksize exageradamente grande implica que esse será o I/O ** mínimo 
** , pode levar à saturação do seu sub-sistema de I/O  E em se 
referindo à tamanhos, tem se aceito 8 Kb como um valor razoável para 
OLTP e similares aonde não se deseja bloco grande, e 16 ou 32 Kb 
aonde se deseja blocos maiores - os 64 Kb que vc cita via de regra 
são EXAGERO não-recomendável, ok ? E a resposta é em termos de "via 
de regra" , justamente porque só VOCÊ pode testar isso no seu 
hardware, só vc conhece a sua aplicação, ok ?

E finalmente observo que nos releases mais modernos de bd Oracle (ie, 
9i e 10g) vc TRANQUILAMENTE pode ter um banco com blocksize X , ** e 
** ao mesmo tempo ter uma os mais tablespaces com blocksize Y, 
diferente, se julgar adequado, e isso ** INDEPENDE ** totalmente do 
tamanho de bloco do disco - como eu disse, SE DER pra ser o mesmo do 
banco ok, se não der ainda há a possibilidade de se usar o recurso

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
, "Alan Corte" <[EMAIL PROTECTED]> escreveu
>
> Pessoal...
> 
> 
> 
> Tenho um ambiente Windows.
> 
> Se formatar o disco com blocos de 64Kb, é possível ter uma blocagem
> diferente no banco ? tipo 8kb ou 16kb?
> 
> 
> 
> Se sim, qual o impacto negativo ou positivo disto ?
> 
> Se não, se o banco tiver que ter a mesma blocagem do disco, que 
critério
> devo usar para ter uma blocagem de alta
> 
> Performance na leitura e na gravação dos dados.. 
> 
> 
> 
> Tipo: 
> 
> 
> 
> 64 KB no disco e no banco (o que ganho aqui e o que perco?) 
> 
> e ao contrario Tb ... blocos de 4KB (o que ganho aqui e o que 
perco?) 
> 
> qual o ambiente mais favorável na opiniões de vcs?
> 
> 
> 
> Se algum puder responder.. obrigado.. 
> 
> 
> 
> 
> 
> Alan Corte
> 
> P Antes de imprimir pense em sua responsabilidade e compromisso com 
o MEIO
> AMBIENTE! 
> 
> 
> "O que mais preocupa não é nem o grito dos violentos, dos 
corruptos, dos
> desonestos, dos sem caráter, dos sem ética.
> O que mais preocupa é o silêncio dos bons."
> Martin Luther King
> 
> 
> 
> 
> 
> 
> 
> Email de Saida Escaneado contra Virus
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>

 


  _  


 


  Email de Entrada Escaneado contra Virus


 

 



Email de Saida Escaneado contra Virus


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



[oracle_br] Re: Duvida sobre blocos

2007-08-27 Por tôpico jlchiappa
Colega, basicamente a sua resposta é  : sim, EM TESE o tamanho de 
bloco no disco deveria ser idêntico ao tamanho de bloco do seu 
database, pois senão ou o SO terá que fazer vários I/Os físicos 
quando o banco pedir um só I/O de bloco (que é o mínimo que o banco 
pede), ou o SO fará um I/O físico só porém maior do que o mínimo que 
o banco pediu. MAS por outro lado, estamos falando aqui de I/Os que 
duram FRAÇÃO de segundo, isso é algo que muitas vezes é até DIFÍCIL 
de mensurar, então um eventual "desbalanceamento" entre block do 
banco e do disco NÃO É algo que por si só implique altíssima 
performance se presente ou derrube o banco se ausente : o correto 
ajuste dos SQLs da aplicação , das estruturas físicas dentro do banco 
(como STORAGE e HWM), das estruturas de apoio (como índices, settings 
de CBO e de uso de RAM, profiles, MVs, etc) normalmente são ** 
EXPONENCIALMENTE ** mais importantes, são elas que te dão o máximo 
retorno com mínimo esforço.

==>> E eu disse EM TESE porém porque há OUTROS pontos a considerar ao 
se definir um blocksize para um banco - por exemplo, se vc tiver um 
bloco muito grande logicamente muito mais registros caberão dentro 
desse bloco, aumenta EM MUITO portanto a chance de muitas mais 
pessoas quererem acessar esse bloco, e já que cada acesso implica em 
latches (ie, "travamento lógico" do bloco), um blocksize muito grande 
em ambiente OLTP (aonde tipicamente há DEZENAS e DEZENAS, se não 
CENTENAS de usuários online) é propício a ** derrubar ** a 
performance do seu banco... Já  num ambiente DW, como há muito muito 
menos usuários simultâneos via de regra, em alguns casos é aceitável 
um blocksize ** um pouco ** maior, mas vc TEM que ser razoável, um 
blocksize exageradamente grande implica que esse será o I/O ** mínimo 
** , pode levar à saturação do seu sub-sistema de I/O  E em se 
referindo à tamanhos, tem se aceito 8 Kb como um valor razoável para 
OLTP e  similares aonde não se deseja bloco grande, e 16 ou 32 Kb 
aonde se deseja blocos maiores - os 64 Kb que vc cita via de regra 
são EXAGERO não-recomendável, ok ? E a resposta é em termos de "via 
de regra" , justamente porque só VOCÊ pode testar isso no seu 
hardware, só vc conhece a sua aplicação, ok ?

E finalmente observo que nos releases mais modernos de bd Oracle (ie, 
9i e 10g) vc TRANQUILAMENTE pode ter um banco com blocksize X , ** e 
** ao mesmo tempo ter uma os mais tablespaces com blocksize Y, 
diferente, se julgar adequado, e isso ** INDEPENDE ** totalmente do 
tamanho de bloco do disco - como eu disse, SE DER pra ser o mesmo do 
banco ok, se não der ainda há a possibilidade de se usar o recurso

[]s

 Chiappa
 
--- Em oracle_br@yahoogrupos.com.br, "Alan Corte" <[EMAIL PROTECTED]> escreveu
>
> Pessoal...
> 
>  
> 
> Tenho um ambiente Windows.
> 
> Se formatar o disco com blocos de 64Kb, é possível ter uma blocagem
> diferente no banco ? tipo 8kb ou 16kb?
> 
>  
> 
> Se sim, qual o impacto negativo ou positivo disto ?
> 
> Se não, se o banco tiver que ter a mesma blocagem do disco, que 
critério
> devo usar para ter uma blocagem de alta
> 
> Performance na leitura e na gravação dos dados.. 
> 
>  
> 
> Tipo: 
> 
>  
> 
> 64 KB no disco e no banco (o que ganho aqui e o que perco?)  
> 
> e ao contrario Tb ... blocos de 4KB (o que ganho aqui e o que 
perco?)  
> 
> qual o ambiente mais favorável na opiniões de vcs?
> 
>  
> 
> Se algum puder responder.. obrigado.. 
> 
>  
> 
>  
> 
> Alan Corte
> 
> P Antes de imprimir pense em sua responsabilidade e compromisso com 
o MEIO
> AMBIENTE!  
> 
> 
> "O que mais preocupa não é nem o grito dos violentos, dos 
corruptos, dos
> desonestos, dos sem caráter, dos sem ética.
> O que mais preocupa é o silêncio dos bons."
> Martin Luther King
> 
>  
> 
>  
> 
> 
> 
> Email de Saida Escaneado contra Virus
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Re: duvida sobre patch

2007-08-23 Por tôpico ESTUDO
Chiappa
De todo coração, obrigada.
Que Deus o ilumine, pois você não só me ajuda, mas como muitos dessa lista, sei 
que todos são extremamente gratos a você.
Cris

  - Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Wednesday, August 22, 2007 10:59 AM
  Subject: [oracle_br] Re: duvida sobre patch


  Não tem o que, é aí mesmo : clicando aí, assim que a página carrega 
  vc tem as opções :

  .Simple Search 
  .Advanced Search 
  .eBusiness Suite Recommended Patch List for Release 11i and R12 
  .Quick Links to the Latest Patchsets, Mini Packs, and Maintenance 
  Packs 
  .Your Saved Searches 

  No caso, como sabemos que 9.2.0.8 é um dos últimos patchsets (o 
  último na verdade pra 9ir2), click em "Quick Links to the Latest 
  Patchsets...", na página que se abre uso a barra de scroll e procuro 
  por "Oracle database" (esse é o produto que queremos), assim que 
  encosto o ponteiro do mouse no link um menuzinho pop-up pra escolher 
  a plataforma, se o seu linux for 32 bits escolha "Linux x86", se for 
  Linux 64 bits esolha o seu sabor de 64 bits (AMD ou Itanium), pra 
  TODOS ELES já tem sim 9.2.0.8 
  Caso prefira, se lá na página inicial após escolher a aba de 
  patches/Updates vc pedir "Simple Search", na página que se abre no 
  list item vc escolhe "Product or Family" (já que vc não sabe o número 
  do patchset 9.2.0.8), no campo de pesquisa vc informa %RDBMS% e clica 
  na lanterninha, na tela que se abre vc confirma e seleciona "RDBMS 
  Server" como a opção, com isso o list item de "Release" abaixo vai 
  ser populado, escolha 9.2.0.8, escolha a tua plataforma & GO, não tem 
  por onde...

  []s

  Chiappa


  []s

  Chiappa

  --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
  escreveu
  >
  > Olá Chiappa
  > 
  > Só por Deus ou por vc mesmo...rss
  > 
  > Então, o que acho esquisito é que não consigo achar o patchset 
  para 9.2.0.8 na pagina do metalink, no ítem: Patches & updates
  > 
  > Estou indo em lugar errado?
  > 
  > Obrigada novamente
  > 
  > Cris
  > 
  > 
  > 
  > - Original Message ----- 
  > From: jlchiappa 
  > To: oracle_br@yahoogrupos.com.br 
  > Sent: Tuesday, August 21, 2007 6:30 PM
  > Subject: [oracle_br] Re: duvida sobre patch
  > 
  > 
  > Não é nem recomendação, é o que DEVE ser feito : consultar os
  > fornecedores/desenvolvedores da(s) Aplicação/ões que vc roda nesse
  > banco, em não havendo impedimento , vc deve :
  > 
  > - aplicar o patch periódico pra 9.2.0.8, que é o mais recente
  > - consultar o README / nota metalink dos one-off patches e CPUs 
  mais
  > recente, se na lista de falhas que ele corrige tem alguma(s) que 
  se
  > aplica(m) a vc, ao seu ambiente, aplicar.
  > 
  > ==> e isso vc faz DEPOIS de ter aberto chamado no Suporte Oracle 
  para
  > verificar aplicabilidade E de ter pesquisado no metalink sobre 
  bugs
  > solucionados e criados pelos patches, E o fará PRIMEIRO no banco 
  de
  > desenv/testes, TESTANDO conectividade dos clientes, utilitários
  > Oracle, etc, e só depois de tudo OK nos testes vc faz no banco 
  Prod
  > 
  > []s
  > 
  > Chiappa
  > 
  > --- Em oracle_br@yahoogrupos.com.br, "ESTUDO"  
  escreveu
  > >
  > > Chiappa
  > > Obrigada por responder, estou na versão 9.2.0.5 - linux , não
  > apliquei nenhum patch
  > > o que você aconselha que seja útil eu aplicar?
  > > obrigada
  > > 
  > > Cris
  > > 
  > > 
  > > - Original Message - 
  > > From: jlchiappa 
  > > To: oracle_br@yahoogrupos.com.br 
  > > Sent: Tuesday, August 21, 2007 1:29 PM
  > > Subject: [oracle_br] Re: duvida sobre patch
  > > 
  > > 
  > > Cris, há 3 tipos de patches para o bd Oracle : one-off patches, 
  > > patches críticos de segurança (CPU, Critical Patch Updates) e 
  os 
  > > patches periódicos-padrão, que servem pra "subir" o nível do 
  seu 
  > > release (passando de x.y.z para x.y.z, nn. mm) . 
  > > One-off como o nome indica são específicos pra um determinado 
  bug, 
  > > NÃO incluem correções pra nada mais, e vc só o aplica se 
  estiver 
  > > caindo no bug a que ele se refere. Já os demais normalmente são 
  > > cumulativos, incluem os anteriores, MAS APENAS NA SUA 
  CATEGORIA : 
  > > assim, um Patche crítico de segurança lançado em Jan/2007 
  (digamos) 
  > > inclui os patches de segurança dos meses anteriores para o 
  Release de 
  > > banco em questão, um patch periódico (como o 9.2.0.5) inclui 
  > > correções lançadas como 9.2.0.4, 9.2.0.3, etc). O que 
  normalmente NÃO 
  > > ocorre é incluir-se patch de segurança n

RES: [oracle_br] Re: duvida sobre permissoes..

2007-07-12 Por tôpico Marcio T N Ferreira
Ola Chiappa,

Na verdade vc entendeu certo.. eu queria saber exatamente isso: se posso dar
permissao a um usuario comum para executar um procedure(q foi criado com o
usuario e role do administrador da aplicação junto com as tabelas), e esse
procedure manipular os dados por meio dos insert´s, selects, e afins, mas o
usuario comum não ter privilegio de executar estes mesmos select´s e
insert´s diretamente na tabela... Mas pela sua resposta já ficou tudo mais
claro... e vamos continuar deixando toda a logica nos procedures mesmo,
assim o banco cuida dos dados e a front end soh da apresentação e captura
dos mesmos...

Obrigado e abraço,

Marcio

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: quinta-feira, 12 de julho de 2007 16:43
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: duvida sobre permissoes..

 

Não entendi bem o que seria esse " 'objeto' das tabelas" , mas sim, 
quando vc cria uma role, se vc der apenas GRANT de execute nas 
procedures x, y e z para a role, rigorosamente TODOS os usuários de 
banco que receberem essa role vão poder APENAS e TÃO SOMENTE 
executarem as procedures x, y e z, sim... Isso (claro) só não vale 
para o usuário dono das tabelas (que por definição SEMPRE faz o que 
quiser com elas), E para os usuários com super-privilégios como 
SELECT ANY, INSERT ANY TABLE e similares (recebidos diretamente ou 
via outras roles).

[]s

Chiappa
--- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
, "Marcio T N Ferreira" 
<[EMAIL PROTECTED]> escreveu
>
> Colegas,
> 
> Estou com uma duvida teórica, que preciso resolver antes de andar 
mais com o
> desenvolvimento do nossa aplicação...
> 
> Imaginem a seguinte situação:
> 
> 
> 
> · Todos os dados desta aplicação estão em um único schema...
> 
> · Todo o modelo de negocio esta traduzido em operações SQL e
> distribuídos em function e procedures nos seus respectivos pack´s...
> 
> · Temos 2 roles principais: um de administrador da 
aplicação e outro
> de usuário...
> 
> 
> 
> Agora minha duvida:
> 
> Ao desenvolver o front-end, um usuário (com role de usuário) não 
pode
> acessar via select, insert,e afins, a TABLE que contem os dados
> diretamente.. ele **DEVE NECESSARIAMENTE** executar um procedure ou
> function, que ira perfazer todo o trabalho de manipulação dos dados
> propriamente dito. Isso para garantir que por um erro de 
programação do
> front end, não seja feito um insert que não esteja de acordo com o 
modelo de
> negócios. Exemplo: a aplicação não pode executar um insert de na 
tabela
> Tb_fatura... ela deve coletar os dados e chamar um procedure
> cria_fatura(dados)... Garantindo assim que alem de inserir os 
dados na
> tabela de fatura, todos os outros procedimentos relativos a esta 
fatura
> sejam tambem realizados... Ou seja, eu posso definir q o role de 
usuário não
> tenha permissão de insert no objeto das tabelas, e apenas de 
execute nos
> procedures e/ou functions???
> 
> 
> 
> Obrigado a todos,
> 
> Marcio
> 
> 
> 
> 
> 
> 
> 
> 
> 
> [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: duvida sobre permissoes..

2007-07-12 Por tôpico jlchiappa
Não entendi bem o que seria esse " 'objeto' das tabelas" , mas sim, 
quando vc cria uma role, se vc der apenas GRANT de execute nas 
procedures x, y e z para a role, rigorosamente TODOS os usuários de 
banco que receberem essa role vão poder APENAS e TÃO SOMENTE 
executarem as procedures x, y e z, sim...  Isso (claro) só não vale 
para o usuário dono das tabelas (que por definição SEMPRE faz o que 
quiser com elas), E para os usuários com super-privilégios como 
SELECT ANY, INSERT ANY TABLE e similares (recebidos diretamente ou 
via outras roles).

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "Marcio T N Ferreira" 
<[EMAIL PROTECTED]> escreveu
>
> Colegas,
> 
> Estou com uma duvida teórica, que preciso resolver antes de andar 
mais com o
> desenvolvimento do nossa aplicação...
> 
> Imaginem a seguinte situação:
> 
>  
> 
> · Todos os dados desta aplicação estão em um único schema...
> 
> · Todo o modelo de negocio esta traduzido em operações SQL e
> distribuídos em function e procedures nos seus respectivos pack´s...
> 
> · Temos 2 roles principais: um de administrador da 
aplicação e outro
> de usuário...
> 
>  
> 
> Agora minha duvida:
> 
> Ao desenvolver o front-end, um usuário (com role de usuário) não 
pode
> acessar via select, insert,e afins, a TABLE que contem os dados
> diretamente.. ele **DEVE NECESSARIAMENTE** executar um procedure ou
> function, que ira perfazer todo o trabalho de manipulação dos dados
> propriamente dito. Isso para garantir que por um erro de 
programação do
> front end, não seja feito um insert que não esteja de acordo com o 
modelo de
> negócios. Exemplo: a aplicação não pode executar um insert de na 
tabela
> Tb_fatura... ela deve coletar os dados e chamar um procedure
> cria_fatura(dados)... Garantindo assim que alem de inserir os 
dados na
> tabela de fatura, todos os outros procedimentos relativos a esta 
fatura
> sejam tambem realizados... Ou seja, eu posso definir q o role de 
usuário não
> tenha permissão de insert no objeto das tabelas, e apenas de 
execute nos
> procedures e/ou functions???
> 
>  
> 
> Obrigado a todos,
> 
> Marcio
> 
>  
> 
>  
> 
>  
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




[oracle_br] RE: DUVIDA - Update em LOTE

2007-06-20 Por tôpico Josir Gomes
Olá agpcardoso,

pelo que eu entendi, a tabela 1 tem poucos registros enquanto a tabela 3 
tem muitos, correto?

UPDATE TAB3
SET TAB3.DSC = (SELECT DSC FROM TAB1 WHERE TAB1.ID = TAB3.ID)
WHERE TAB3.ID in (SELET ID FROM TAB1);

ou uma solução mais trabalhosa mas acredito que seja mais rápida (?)

begin
   for c1 in (SELECT ID, DSC FROM TAB1) loop
  update TAB3 set DSC = c1.DSC where ID = c1.ID;
   end loop;
end;

Boa Sorte,
Josir.

---
Estou alterando uma rotina de carga onde preciso fazer um update em
1 campo da tabela 3 de acordo c/ os dados q tiverem na tabela 1.

Na rotina ORIGINAL para cada registro da tabela 3 está sendo feito
um select na tabela 1 e atualizando a tabela 3 de acordo com o q
vier na tabela 1, porém devido a quantidade grande de registros
existentes nas 2 tabelas, essa rotina está MUITO LENTA.

NO SQL SERVER eu resolveria esse problema utilizando a query
descrita abaixo, porem no Oracle essa query não funciona.

Alguém saberia me dizer como posso fazer no oracle a mesma coisa q a
query abaixo faz no sql server???

Obrigado.

QUERY
##

UPDATE TAB3
SET TAB3.DSC = TAB1.DSC
FROM TAB1, TAB3
WHERE TAB1.ID = TAB3.ID


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



Res: [oracle_br] Re: DUVIDA COM SELECT

2007-06-01 Por tôpico Vinicius Trintin
sim, é uma compostar
imagina que preciso inserir em uma unica tabela dado de duas...
uma com 100 registros e outra com 50 por ex
tenho que pegar pouco daqui e um pouco dali..
a de 50 e uma com pfk da outra (2)
entao preciso dos 100 registros da primeira juntando com outras colunas da 
segunda
mas como eu tenho linhas na segunda que se repetem por ser uma pk composta eu 
preciso filtrar isso... eu estou tentando usar o outer join (+)

- Mensagem original 
De: Anderson <[EMAIL PROTECTED]>
Para: oracle_br@yahoogrupos.com.br
Enviadas: Sexta-feira, 1 de Junho de 2007 14:55:46
Assunto: [oracle_br] Re: DUVIDA COM SELECT









  



Não entendi muito bem, até porque não consigo imaginar uma tabela 
com

duas "pk's" (chave primária né?)... 

Talvez você esteja se referindo a UMA PK composta por duas colunas...



Mas, veja se o uso de union lhe ajuda.



Anderson Rodrigo Farias



--- Em [EMAIL PROTECTED] os.com.br, Vinicius Trintin <[EMAIL PROTECTED] .>

escreveu

>

> Mais uma duvida =)

>  

> Tenho uma tabela com cerca de 100 mil registros... . 

> e tenho uma associativa com cerca de 50 mil registros...

> na tabela associativa como existem 2 pk's os campos se repetem

> 

> tenho que fazer um select entre as duas tabelas que selecionem os

100 mil registros da primeira

> porem dos 50 mil da segunda so selecione os que nao se repetem!

> 

> 

> 

> 

> 

> 

>

>

 _ _ _ _ _ _

> Novo Yahoo! Cadê? - Experimente uma nova busca.

> http://yahoo. com.br/oqueeugan hocomisso 

> 

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

>






  
















   

Novo Yahoo! Cadê? - Experimente uma nova busca.
http://yahoo.com.br/oqueeuganhocomisso 

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



[oracle_br] Re: DUVIDA COM SELECT

2007-06-01 Por tôpico Anderson
Não entendi muito bem, até porque não consigo imaginar uma tabela com
duas "pk's" (chave primária né?)... 
Talvez você esteja se referindo a UMA PK composta por duas colunas...

Mas, veja se o uso de union lhe ajuda.

Anderson Rodrigo Farias


--- Em oracle_br@yahoogrupos.com.br, Vinicius Trintin <[EMAIL PROTECTED]>
escreveu
>
> Mais uma duvida =)
>  
> Tenho uma tabela com cerca de 100 mil registros 
> e tenho uma associativa com cerca de 50 mil registros...
> na tabela associativa como existem 2 pk's os campos se repetem
> 
> tenho que fazer um select entre as duas tabelas que selecionem os
100 mil registros da primeira
> porem dos 50 mil da segunda so selecione os que nao se repetem!
> 
> 
> 
> 
> 
> 
>
>

> Novo Yahoo! Cadê? - Experimente uma nova busca.
> http://yahoo.com.br/oqueeuganhocomisso 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




RES: [oracle_br] Re: Duvida sobre Trigger

2007-06-01 Por tôpico Arnaldo V. Scarin
Ontem eu agradeci, mas deu pau no meu e-mail, e ele não chegou ao grupo.

 

Obrigado a todos pela ajuda.

 

Arnaldo

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: quinta-feira, 31 de maio de 2007 15:29
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: Duvida sobre Trigger

 

Absolutamente não fica "registrado" e disponível pra trigger o texto 
do UPDATE que disparou a trigger, mas talvez vc possa fazer uma WHEN 
tipo :

create trigger ...
WHEN (old.campo1 <> new.campo1 OR old.campo2 <> old.campo2, etc )

ou seja, APENAS quando se está mudando o valor de algum dos N outros 
campos afora o tal do integro a condição é satisfeita, o "Update 
tbl_pedido set integro = x where n_cod_ped = "xx" não atenderia à 
condição de ao menos UM dos outros campos estar sendo alterado...

[]s

Chiappa
--- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
, "Arnaldo V. Scarin" 
<[EMAIL PROTECTED]> escreveu
>
> Chiappa,
> 
> 
> 
> Eu sei que eu posso utilizar essas formas "condicionantes" para 
evitar que
> uma trigger seja executada, mas no caso que eu indiquei, são feitos 
diversos
> tipos de updates nessa tabela, sempre passando informações para o 
campo
> "integro". Num update, todos os campos da linha são atualizados, 
enquanto
> nesse update que eu mandei no e-mail anterior, somente o campo 
integro é
> atualizado.
> 
> 
> 
> Vamos exemplificar:
> 
> 
> 
> Momento X : Update tbl_pedido set integro = x where n_cod_ped 
= "xx"
> (update que não pode disparar a Trigger)
> 
> 
> 
> Momento Y: Update tbl_pedido set n_valor_pedido = 999,99, 
n_qte_prod = 99,
> integro = x, .(outros campos) where n_cod_ped = "xxx" 
(momento que
> deve disparar a Trigger)
> 
> 
> 
> Momento Z: Update tbl_pedido set id_usuario_edit = , 
d_data_edit =
> `dd/mm/ hh:nn:' where n_cod_ped = "xxx" (momento que 
deve
> disparar a trigger).
> 
> 
> 
> A minha duvida é como eu conseguiria identificar qual update está 
sendo
> executado para poder usar isso como fator condicionante para que a 
trigger
> não fosse executada.
> 
> 
> 
> Obrigado,
> 
> 
> 
> Arnaldo
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 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: quinta-feira, 31 de maio de 2007 13:56
> Para: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>

> Assunto: [oracle_br] Re: Duvida sobre Trigger
> 
> 
> 
> Colega, quando as condições todas dum trigger são satisfeitas, ele 
É 
> SIM DISPARADO, não tem o que : o que vc pode fazer é ** adicionar 
** 
> condições extras baseadas nos dados ou no ambiente via cláusula 
WHEN, 
> por exemplo : suponha que é exigido pra trigger disparar que o 
campo 
> SALARIO da tabela esteja com o valor de 1000 e que o dia da semana 
> não seja Sábado ou Domingo (digamos) , vc teria um trigger tipo 
> assim :
> 
> [EMAIL PROTECTED]:SQL>select empno, sal, to_char(sysdate, 'D') from emp 
> where empno in (7844, 7654);
> 
> EMPNO SAL T
> -- -- -
> 7654 1250 5
> 7844 1500 5
> 
> [EMAIL PROTECTED]:SQL>ed
> Gravou arquivo afiedt.buf
> 
> 1 create or replace trigger verif_update
> 2 before update of sal ON emp for each row
> 3 WHEN (old.sal = 1500 AND to_char(sysdate, 'D') not in 
> ('7', '1'))
> 4 BEGIN
> 5 dbms_output.put_line('Disparei o trigger verif_update');
> 6* END;
> [EMAIL PROTECTED]:SQL>/
> 
> Gatilho criado.
> 
> [EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7844;
> Disparei o trigger verif_update
> 
> 1 linha atualizada.
> 
> ==> veja acima que DISPAROU, agora veja :
> 
> [EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7654;
> 
> 1 linha atualizada.
> 
> [EMAIL PROTECTED]:SQL>
> 
> ==> veja que quando NEM TODAS as condições foram satisfeitas, a 
> trigger NÂO DISPAROU, ok ? Óbvio, essa cláusula WHEN em princípio 
> serve para validações SIMPLES, pura comparação, SE a lógica que vc 
> quer que seja satisfeita pra trigger não disparar é COMPLEXA, tem 
que 
> buscar info em outras tabs/registros, processar a info, etc, aí não 
> dá... Quando isso ocorrer, não tem jeito , vc VAI deixar a trigger 
> disparar MAS o código dela vai estar assim :
> 
> CREATE TRIGGER 
> BEGIN
> if condiçãocomplexa THEN
> ... faço o que eu quero que seja feito
> end 

RES: [oracle_br] Re: Duvida sobre Trigger

2007-05-31 Por tôpico jlchiappa
Absolutamente não fica "registrado" e disponível pra trigger o texto 
do UPDATE que disparou a trigger, mas talvez vc possa fazer uma WHEN 
tipo :

create trigger ...
WHEN (old.campo1 <> new.campo1 OR old.campo2 <> old.campo2, etc )

ou seja, APENAS quando se está mudando o valor de algum dos N outros 
campos afora o tal do integro a condição é satisfeita, o "Update 
tbl_pedido set integro = x where n_cod_ped = "xx" não atenderia à 
condição de ao menos UM dos outros campos estar sendo alterado...

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "Arnaldo V. Scarin" 
<[EMAIL PROTECTED]> escreveu
>
> Chiappa,
> 
>  
> 
> Eu sei que eu posso utilizar essas formas "condicionantes" para 
evitar que
> uma trigger seja executada, mas no caso que eu indiquei, são feitos 
diversos
> tipos de updates nessa tabela, sempre passando informações para o 
campo
> "integro". Num update, todos os campos da linha são atualizados, 
enquanto
> nesse update que eu mandei no e-mail anterior, somente o campo 
integro é
> atualizado.
> 
>  
> 
> Vamos exemplificar:
> 
>  
> 
> Momento X : Update tbl_pedido set integro = x where n_cod_ped 
= "xx"
> (update que não pode disparar a Trigger)
> 
>  
> 
> Momento Y:  Update tbl_pedido set n_valor_pedido = 999,99, 
n_qte_prod = 99,
> integro = x, .(outros campos) where n_cod_ped = "xxx" 
(momento que
> deve disparar a Trigger)
> 
>  
> 
> Momento Z: Update tbl_pedido set id_usuario_edit = , 
d_data_edit =
> `dd/mm/ hh:nn:' where n_cod_ped = "xxx" (momento que 
deve
> disparar a trigger).
> 
>  
> 
> A minha duvida é como eu conseguiria identificar qual update está 
sendo
> executado para poder usar isso como fator condicionante para que a 
trigger
> não fosse executada.
> 
>  
> 
> Obrigado,
> 
>  
> 
> Arnaldo
> 
>  
> 
>  
> 
>  
> 
>  
> 
> De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
> nome de jlchiappa
> Enviada em: quinta-feira, 31 de maio de 2007 13:56
> Para: oracle_br@yahoogrupos.com.br
> Assunto: [oracle_br] Re: Duvida sobre Trigger
> 
>  
> 
> Colega, quando as condições todas dum trigger são satisfeitas, ele 
É 
> SIM DISPARADO, não tem o que : o que vc pode fazer é ** adicionar 
** 
> condições extras baseadas nos dados ou no ambiente via cláusula 
WHEN, 
> por exemplo : suponha que é exigido pra trigger disparar que o 
campo 
> SALARIO da tabela esteja com o valor de 1000 e que o dia da semana 
> não seja Sábado ou Domingo (digamos) , vc teria um trigger tipo 
> assim :
> 
> [EMAIL PROTECTED]:SQL>select empno, sal, to_char(sysdate, 'D') from emp 
> where empno in (7844, 7654);
> 
> EMPNO SAL T
> -- -- -
> 7654 1250 5
> 7844 1500 5
> 
> [EMAIL PROTECTED]:SQL>ed
> Gravou arquivo afiedt.buf
> 
> 1 create or replace trigger verif_update
> 2 before update of sal ON emp for each row
> 3 WHEN (old.sal = 1500 AND to_char(sysdate, 'D') not in 
> ('7', '1'))
> 4 BEGIN
> 5 dbms_output.put_line('Disparei o trigger verif_update');
> 6* END;
> [EMAIL PROTECTED]:SQL>/
> 
> Gatilho criado.
> 
> [EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7844;
> Disparei o trigger verif_update
> 
> 1 linha atualizada.
> 
> ==> veja acima que DISPAROU, agora veja :
> 
> [EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7654;
> 
> 1 linha atualizada.
> 
> [EMAIL PROTECTED]:SQL>
> 
> ==> veja que quando NEM TODAS as condições foram satisfeitas, a 
> trigger NÂO DISPAROU, ok ? Óbvio, essa cláusula WHEN em princípio 
> serve para validações SIMPLES, pura comparação, SE a lógica que vc 
> quer que seja satisfeita pra trigger não disparar é COMPLEXA, tem 
que 
> buscar info em outras tabs/registros, processar a info, etc, aí não 
> dá... Quando isso ocorrer, não tem jeito , vc VAI deixar a trigger 
> disparar MAS o código dela vai estar assim :
> 
> CREATE TRIGGER 
> BEGIN
> if condiçãocomplexa THEN
> ... faço o que eu quero que seja feito
> end if;
> END;
> 
> ==> ou seja, a trigger até dispararia, MAS em não entrando no IF 
não 
> faz nada
> 
> []s
> 
> Chiappa
> --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%
40yahoogrupos.com.br>
> , "Arnaldo V. Scarin" 
>  escreveu
> >
> > Bom dia a Todos,
> > 
> > 
> > 
> > Eu tenho uma trigger (Before Update) para que possa ser 
atualizado 
> um campo
> > com a data e hora do ultimo update executado numa determinada 
> linha, mas
> > somente num caso de update eu não quero que essa trigger seja 
> executada.
> > 
> > 
> > 
> > Existe alguma forma de fazer isso?
> > 
> > 
> > 
> > Obrigado,
> > 
> > 
> > 
> > Arnaldo
> > 
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
>  
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Re: Duvida sobre Trigger

2007-05-31 Por tôpico Paulo Brites
Você pode user assim

IF UPDATING ('VLRLANCTO') THEN
  --
 bla bla bla
   --
 ELSIF UPDATING ('CDCTADEB') THEN
  --
  bla bla bla
  --
 ELSIF UPDATING ('CDCTACRED') THEN
  --
  bla bla bla
  --
 END IF;

  - Original Message - 
  From: Arnaldo V. Scarin 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, May 31, 2007 2:45 PM
  Subject: RES: [oracle_br] Re: Duvida sobre Trigger


  Chiappa,

  Eu sei que eu posso utilizar essas formas "condicionantes" para evitar que
  uma trigger seja executada, mas no caso que eu indiquei, são feitos diversos
  tipos de updates nessa tabela, sempre passando informações para o campo
  "integro". Num update, todos os campos da linha são atualizados, enquanto
  nesse update que eu mandei no e-mail anterior, somente o campo integro é
  atualizado.

  Vamos exemplificar:

  Momento X : Update tbl_pedido set integro = x where n_cod_ped = "xx"
  (update que não pode disparar a Trigger)

  Momento Y: Update tbl_pedido set n_valor_pedido = 999,99, n_qte_prod = 99,
  integro = x, .(outros campos) where n_cod_ped = "xxx" (momento que
  deve disparar a Trigger)

  Momento Z: Update tbl_pedido set id_usuario_edit = , d_data_edit =
  'dd/mm/ hh:nn:' where n_cod_ped = "xxx" (momento que deve
  disparar a trigger).

  A minha duvida é como eu conseguiria identificar qual update está sendo
  executado para poder usar isso como fator condicionante para que a trigger
  não fosse executada.

  Obrigado,

  Arnaldo

  De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
  nome de jlchiappa
  Enviada em: quinta-feira, 31 de maio de 2007 13:56
  Para: oracle_br@yahoogrupos.com.br
  Assunto: [oracle_br] Re: Duvida sobre Trigger

  Colega, quando as condições todas dum trigger são satisfeitas, ele É 
  SIM DISPARADO, não tem o que : o que vc pode fazer é ** adicionar ** 
  condições extras baseadas nos dados ou no ambiente via cláusula WHEN, 
  por exemplo : suponha que é exigido pra trigger disparar que o campo 
  SALARIO da tabela esteja com o valor de 1000 e que o dia da semana 
  não seja Sábado ou Domingo (digamos) , vc teria um trigger tipo 
  assim :

  [EMAIL PROTECTED]:SQL>select empno, sal, to_char(sysdate, 'D') from emp 
  where empno in (7844, 7654);

  EMPNO SAL T
  -- -- -
  7654 1250 5
  7844 1500 5

  [EMAIL PROTECTED]:SQL>ed
  Gravou arquivo afiedt.buf

  1 create or replace trigger verif_update
  2 before update of sal ON emp for each row
  3 WHEN (old.sal = 1500 AND to_char(sysdate, 'D') not in 
  ('7', '1'))
  4 BEGIN
  5 dbms_output.put_line('Disparei o trigger verif_update');
  6* END;
  [EMAIL PROTECTED]:SQL>/

  Gatilho criado.

  [EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7844;
  Disparei o trigger verif_update

  1 linha atualizada.

  ==> veja acima que DISPAROU, agora veja :

  [EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7654;

  1 linha atualizada.

  [EMAIL PROTECTED]:SQL>

  ==> veja que quando NEM TODAS as condições foram satisfeitas, a 
  trigger NÂO DISPAROU, ok ? Óbvio, essa cláusula WHEN em princípio 
  serve para validações SIMPLES, pura comparação, SE a lógica que vc 
  quer que seja satisfeita pra trigger não disparar é COMPLEXA, tem que 
  buscar info em outras tabs/registros, processar a info, etc, aí não 
  dá... Quando isso ocorrer, não tem jeito , vc VAI deixar a trigger 
  disparar MAS o código dela vai estar assim :

  CREATE TRIGGER 
  BEGIN
  if condiçãocomplexa THEN
  ... faço o que eu quero que seja feito
  end if;
  END;

  ==> ou seja, a trigger até dispararia, MAS em não entrando no IF não 
  faz nada

  []s

  Chiappa
  --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
  , "Arnaldo V. Scarin" 
  <[EMAIL PROTECTED]> escreveu
  >
  > Bom dia a Todos,
  > 
  > 
  > 
  > Eu tenho uma trigger (Before Update) para que possa ser atualizado 
  um campo
  > com a data e hora do ultimo update executado numa determinada 
  linha, mas
  > somente num caso de update eu não quero que essa trigger seja 
  executada.
  > 
  > 
  > 
  > Existe alguma forma de fazer isso?
  > 
  > 
  > 
  > Obrigado,
  > 
  > 
  > 
  > Arnaldo
  > 
  > 
  > 
  > [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] Re: Duvida sobre Trigger

2007-05-31 Por tôpico Arnaldo V. Scarin
Chiappa,

 

Eu sei que eu posso utilizar essas formas “condicionantes” para evitar que
uma trigger seja executada, mas no caso que eu indiquei, são feitos diversos
tipos de updates nessa tabela, sempre passando informações para o campo
“integro”. Num update, todos os campos da linha são atualizados, enquanto
nesse update que eu mandei no e-mail anterior, somente o campo integro é
atualizado.

 

Vamos exemplificar:

 

Momento X : Update tbl_pedido set integro = x where n_cod_ped = “xx”
(update que não pode disparar a Trigger)

 

Momento Y:  Update tbl_pedido set n_valor_pedido = 999,99, n_qte_prod = 99,
integro = x, .(outros campos) where n_cod_ped = “xxx” (momento que
deve disparar a Trigger)

 

Momento Z: Update tbl_pedido set id_usuario_edit = , d_data_edit =
‘dd/mm/ hh:nn:’ where n_cod_ped = “xxx” (momento que deve
disparar a trigger).

 

A minha duvida é como eu conseguiria identificar qual update está sendo
executado para poder usar isso como fator condicionante para que a trigger
não fosse executada.

 

Obrigado,

 

Arnaldo

 

 

 

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: quinta-feira, 31 de maio de 2007 13:56
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Duvida sobre Trigger

 

Colega, quando as condições todas dum trigger são satisfeitas, ele É 
SIM DISPARADO, não tem o que : o que vc pode fazer é ** adicionar ** 
condições extras baseadas nos dados ou no ambiente via cláusula WHEN, 
por exemplo : suponha que é exigido pra trigger disparar que o campo 
SALARIO da tabela esteja com o valor de 1000 e que o dia da semana 
não seja Sábado ou Domingo (digamos) , vc teria um trigger tipo 
assim :

[EMAIL PROTECTED]:SQL>select empno, sal, to_char(sysdate, 'D') from emp 
where empno in (7844, 7654);

EMPNO SAL T
-- -- -
7654 1250 5
7844 1500 5

[EMAIL PROTECTED]:SQL>ed
Gravou arquivo afiedt.buf

1 create or replace trigger verif_update
2 before update of sal ON emp for each row
3 WHEN (old.sal = 1500 AND to_char(sysdate, 'D') not in 
('7', '1'))
4 BEGIN
5 dbms_output.put_line('Disparei o trigger verif_update');
6* END;
[EMAIL PROTECTED]:SQL>/

Gatilho criado.

[EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7844;
Disparei o trigger verif_update

1 linha atualizada.

==> veja acima que DISPAROU, agora veja :

[EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7654;

1 linha atualizada.

[EMAIL PROTECTED]:SQL>

==> veja que quando NEM TODAS as condições foram satisfeitas, a 
trigger NÂO DISPAROU, ok ? Óbvio, essa cláusula WHEN em princípio 
serve para validações SIMPLES, pura comparação, SE a lógica que vc 
quer que seja satisfeita pra trigger não disparar é COMPLEXA, tem que 
buscar info em outras tabs/registros, processar a info, etc, aí não 
dá... Quando isso ocorrer, não tem jeito , vc VAI deixar a trigger 
disparar MAS o código dela vai estar assim :

CREATE TRIGGER 
BEGIN
if condiçãocomplexa THEN
... faço o que eu quero que seja feito
end if;
END;

==> ou seja, a trigger até dispararia, MAS em não entrando no IF não 
faz nada

[]s

Chiappa
--- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
, "Arnaldo V. Scarin" 
<[EMAIL PROTECTED]> escreveu
>
> Bom dia a Todos,
> 
> 
> 
> Eu tenho uma trigger (Before Update) para que possa ser atualizado 
um campo
> com a data e hora do ultimo update executado numa determinada 
linha, mas
> somente num caso de update eu não quero que essa trigger seja 
executada.
> 
> 
> 
> Existe alguma forma de fazer isso?
> 
> 
> 
> Obrigado,
> 
> 
> 
> Arnaldo
> 
> 
> 
> [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: Duvida sobre Trigger

2007-05-31 Por tôpico jlchiappa
Colega, quando as condições todas dum trigger são satisfeitas, ele É 
SIM DISPARADO, não tem o que : o que vc pode fazer é ** adicionar ** 
condições extras baseadas nos dados ou no ambiente via cláusula WHEN, 
por exemplo : suponha que é exigido pra trigger disparar que o campo 
SALARIO da tabela esteja com o valor de 1000 e que o dia da semana 
não seja Sábado ou Domingo (digamos) , vc teria um trigger tipo 
assim :

[EMAIL PROTECTED]:SQL>select empno, sal, to_char(sysdate, 'D') from emp 
where empno in (7844, 7654);

 EMPNOSAL T
-- -- -
  7654   1250 5
  7844   1500 5

[EMAIL PROTECTED]:SQL>ed
Gravou arquivo afiedt.buf

  1  create or replace trigger verif_update
  2before update of sal ON emp for each row
  3   WHEN (old.sal = 1500 AND to_char(sysdate, 'D') not in 
('7', '1'))
  4  BEGIN
  5 dbms_output.put_line('Disparei o trigger verif_update');
  6* END;
[EMAIL PROTECTED]:SQL>/

Gatilho criado.

[EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7844;
Disparei o trigger verif_update

1 linha atualizada.

==> veja acima que DISPAROU, agora veja :

[EMAIL PROTECTED]:SQL>update emp set sal=sal+10 where empno=7654;

1 linha atualizada.

[EMAIL PROTECTED]:SQL>

==> veja que quando NEM TODAS as condições foram satisfeitas, a 
trigger NÂO DISPAROU, ok ? Óbvio, essa cláusula WHEN em princípio 
serve para validações SIMPLES, pura comparação, SE a lógica que vc 
quer que seja satisfeita pra trigger não disparar é COMPLEXA, tem que 
buscar info em outras tabs/registros, processar a info, etc, aí não 
dá... Quando isso ocorrer, não tem jeito , vc VAI deixar a trigger 
disparar MAS o código dela vai estar assim :

CREATE TRIGGER 
BEGIN
   if condiçãocomplexa THEN
  ... faço o que eu quero que seja feito
   end if;
END;

==> ou seja, a trigger até dispararia, MAS em não entrando no IF não 
faz nada

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "Arnaldo V. Scarin" 
<[EMAIL PROTECTED]> escreveu
>
> Bom dia a Todos,
> 
>  
> 
> Eu tenho uma trigger (Before Update) para que possa ser atualizado 
um campo
> com a data e hora do ultimo update executado numa determinada 
linha, mas
> somente num caso de update eu não quero que essa trigger seja 
executada.
> 
>  
> 
> Existe alguma forma de fazer isso?
> 
>  
> 
> Obrigado,
> 
>  
> 
> Arnaldo
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Res: [oracle_br] Re: Duvida Archive?

2007-04-19 Por tôpico jlchiappa
Archive NADA MAIS É do que um arquivo de REDO LOG que ficou cheio e 
foi copiado, portanto SE não dá pra eliminar geração de log (pelos 
motivos ** FÍSICOS **, de ESTRUTURA INTERNA do bd Oracle listados 
anteriormente, OBVIAMENTE em log sendo gerado ele VAI pro arquivo de 
log, o arquivo de log VAI ficar cheio uma hora, PORTANTO será gerado 
archive, PONTO, inescapável. 
 O que vc PODE (e mesmo DEVE!!) fazer é mesmo tentar DIMINUIR a 
geração dos logs fazendo INSERT /*+ APPEND */ acima da HWM, usando 
TRUNCATE ao invés de DELETE, por aí E claro, vc não diz MAS 
imagino que essa carga é feita de um arquivo ** de texto **, como é 
típico, certo ??? Se os dados são como vc diz depois do processamento 
deletados, fica óbvia aí a chance de :

- OU usar uma Global Temporary table pra carregar os regs, que aí 
praticamente não gera nem redo, e (melhor ainda!!)  nem undo

- OU, em sendo bd 9i, vc simplesmente *** NÃO *** carregar do arquivo-
texto!!! No 9i em diante já existe a figura da EXTERNAL TABLE, que te 
permite fazer SELECTs ===> DIRETAMENTE de um arquivo texto Se for 
esse o caso, sem dúvida seria a melhor opção, a melhor maneira de 
acelerar uma carga que depois será jogada fora é NÃO FAZER A CARGA!!!

[]s

  Chiappa
--- Em oracle_br@yahoogrupos.com.br, Welvis Douglas Silva Moreto 
<[EMAIL PROTECTED]> escreveu
>
> Aqui na empresa temos algumas tabela que é feita apenas uma carga e 
depois os dados são deletados, como faço para q essas tabela não gere 
Archive. tem alguma forma, ja que para redu não dá., na realidade 
apenas irá diminuir. quando os inserts for acima da HWM.
> 
> att,
> 
> Welvis Douglas
> 
> 
> - Mensagem original 
> De: jlchiappa <[EMAIL PROTECTED]>
> Para: oracle_br@yahoogrupos.com.br
> Enviadas: Terça-feira, 17 de Abril de 2007 8:12:26
> Assunto: [oracle_br] Re: Duvida Archive?
> 
> Não Welvis, nada a ver, é um conceito derivado do mecanismo básico 
de 
> funcionalmento do bd Oracle : veja vc, visando performance quando o 
> banco lê do disco um bloco contendo o(s) registro(s) que 
interessam, 
> as alterações ** TODAS ** nesses registros (inclusive COMMITS!!!) 
são 
> feitas no cache, ficam em RAM, que como vc sabe é algo volátil num 
> caso de crash iriam pra cucuia... Então o REDO *** SEMPRE SEMPRE 
*** 
> tem que ser gerado e ser seguramente armazenado em disco, pois é lá 
> que fcam as alterações sofridas pelo(s) bloco(s), se der crash a 
RAM 
> (e o cache) foram pro saco MAS o redo tá tá no disco, basta o ler e 
> aplicá-lo no datafile que tudo é recuperado.. .. Então a cláusula 
> NOLOGGING só funciona em situações muito específicas, onde o banco 
> tem 100% de certeza que os blocos em disco no datafiles são 
virgens, 
> nunca foram usados (portanto se der crash não precisa atualizar 
nada 
> em disco, não há "versão anterior" dos blocos) , que é o que o 
> INSERT /*+ APPEND */ faz (ele grava acima da marca de uso "final" 
do 
> datafile, portanto pode se garantir que são blocos vazios)... 
> Logicamente, mesmo usando insert /*+ append */, os datafiles de 
dados 
> podem ser apendados, *** MAS *** os índices não, se vc relembrar os 
> conceitos de bd um índice SEMPRE TEM que ser armazenado ordenado, 
> então TEM QUE se inserir os dados novos ENTRE os dados anteriores, 
na 
> ordem, muito provavelmente num bloco já usado, o REDO é inescapável 
> aí... E mais, o próprio banco usa SIM internamente tabelas, que são 
> sim atualizadas cfrme vc trabalha (mesmo em nologging), então SIM 
tem 
> que se gerar REDO pra essas tabs do banco
> Então a sua resposta é : 
> 
> ==> é *** IMPOSSÌVEL *** vc "uma tabela não passe a gerar Redu / 
> Archive", o que vc pode fazer é, em RAROS CASOS, diminuir o uso de 
> REDO com essa cláusula NOLOGGING, SE e APENAS SE a operação sendo 
> feita tem como ser garantida em blocos não-usados... .
> 
> []s
> 
> Chiappa
> 
> --- Em [EMAIL PROTECTED] os.com.br, Welvis Douglas Silva Moreto 
>  escreveu
> >
> > Olá Pessoal, gostaria de tirar uma duvida.
> > 
> > para que uma tabela não passe a gerar Redu / Archive seria apenas 
> dar um
> > 
> > ALTER TABLE XXX NOLOGGING;
> > 
> > ou submeter a tabela a um truncate table?
> > 
> > é isso mesmo, ?
> > 
> > att
> > 
> > WELVIS DOUGLAS
> > 
> >  _ _ _ _ __
> > Fale com seus amigos de graça com o novo Yahoo! Messenger 
> > http://br.messenger .yahoo.com/ 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
> 
> 
> 
> __
> Fale com seus amigos  de graça com o novo Yahoo! Messenger 
> http://br.messenger.yahoo.com/ 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Res: [oracle_br] Re: Duvida Archive?

2007-04-19 Por tôpico Welvis Douglas Silva Moreto
Aqui na empresa temos algumas tabela que é feita apenas uma carga e depois os 
dados são deletados, como faço para q essas tabela não gere Archive. tem alguma 
forma, ja que para redu não dá., na realidade apenas irá diminuir. quando os 
inserts for acima da HWM.

att,

Welvis Douglas


- Mensagem original 
De: jlchiappa <[EMAIL PROTECTED]>
Para: oracle_br@yahoogrupos.com.br
Enviadas: Terça-feira, 17 de Abril de 2007 8:12:26
Assunto: [oracle_br] Re: Duvida Archive?

Não Welvis, nada a ver, é um conceito derivado do mecanismo básico de 
funcionalmento do bd Oracle : veja vc, visando performance quando o 
banco lê do disco um bloco contendo o(s) registro(s) que interessam, 
as alterações ** TODAS ** nesses registros (inclusive COMMITS!!!) são 
feitas no cache, ficam em RAM, que como vc sabe é algo volátil num 
caso de crash iriam pra cucuia... Então o REDO *** SEMPRE SEMPRE *** 
tem que ser gerado e ser seguramente armazenado em disco, pois é lá 
que fcam as alterações sofridas pelo(s) bloco(s), se der crash a RAM 
(e o cache) foram pro saco MAS o redo tá tá no disco, basta o ler e 
aplicá-lo no datafile que tudo é recuperado.. .. Então a cláusula 
NOLOGGING só funciona em situações muito específicas, onde o banco 
tem 100% de certeza que os blocos em disco no datafiles são virgens, 
nunca foram usados (portanto se der crash não precisa atualizar nada 
em disco, não há "versão anterior" dos blocos) , que é o que o 
INSERT /*+ APPEND */ faz (ele grava acima da marca de uso "final" do 
datafile, portanto pode se garantir que são blocos vazios)... 
Logicamente, mesmo usando insert /*+ append */, os datafiles de dados 
podem ser apendados, *** MAS *** os índices não, se vc relembrar os 
conceitos de bd um índice SEMPRE TEM que ser armazenado ordenado, 
então TEM QUE se inserir os dados novos ENTRE os dados anteriores, na 
ordem, muito provavelmente num bloco já usado, o REDO é inescapável 
aí... E mais, o próprio banco usa SIM internamente tabelas, que são 
sim atualizadas cfrme vc trabalha (mesmo em nologging), então SIM tem 
que se gerar REDO pra essas tabs do banco
Então a sua resposta é : 

==> é *** IMPOSSÌVEL *** vc "uma tabela não passe a gerar Redu / 
Archive", o que vc pode fazer é, em RAROS CASOS, diminuir o uso de 
REDO com essa cláusula NOLOGGING, SE e APENAS SE a operação sendo 
feita tem como ser garantida em blocos não-usados... .

[]s

Chiappa

--- Em [EMAIL PROTECTED] os.com.br, Welvis Douglas Silva Moreto 
 escreveu
>
> Olá Pessoal, gostaria de tirar uma duvida.
> 
> para que uma tabela não passe a gerar Redu / Archive seria apenas 
dar um
> 
> ALTER TABLE XXX NOLOGGING;
> 
> ou submeter a tabela a um truncate table?
> 
> é isso mesmo, ?
> 
> att
> 
> WELVIS DOUGLAS
> 
>  _ _ _ _ __
> Fale com seus amigos de graça com o novo Yahoo! Messenger 
> http://br.messenger .yahoo.com/ 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




__
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

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



[oracle_br] Re: Duvida Archive?

2007-04-17 Por tôpico jlchiappa
Não Welvis, nada a ver, é um conceito derivado do mecanismo básico de 
funcionalmento do bd Oracle : veja vc, visando performance quando o 
banco lê do disco um bloco contendo o(s) registro(s) que interessam, 
as alterações ** TODAS ** nesses registros (inclusive COMMITS!!!) são 
feitas no cache,  ficam em RAM, que como vc sabe é algo volátil num 
caso de crash iriam pra cucuia... Então o REDO *** SEMPRE SEMPRE *** 
tem que ser gerado e ser seguramente armazenado em disco, pois é lá 
que fcam as alterações sofridas pelo(s) bloco(s), se der crash a RAM 
(e o cache) foram pro saco MAS o redo tá tá no disco, basta o ler e 
aplicá-lo no datafile que tudo é recuperado Então a cláusula 
NOLOGGING só funciona em situações muito específicas, onde o banco 
tem 100% de certeza que os blocos em disco no datafiles são virgens, 
nunca foram usados (portanto se der crash não precisa atualizar nada 
em disco, não há "versão anterior" dos blocos) , que é o que o 
INSERT /*+ APPEND */ faz (ele grava acima da marca de uso "final" do 
datafile, portanto pode se garantir que são blocos vazios)... 
Logicamente, mesmo usando insert /*+ append */, os datafiles de dados 
podem ser apendados, *** MAS *** os índices não, se vc relembrar os 
conceitos de bd um índice SEMPRE TEM que ser armazenado ordenado, 
então TEM QUE se inserir os dados novos ENTRE os dados anteriores, na 
ordem, muito provavelmente num bloco já usado, o REDO é inescapável 
aí...  E mais, o próprio banco usa SIM internamente tabelas, que são 
sim atualizadas cfrme vc trabalha (mesmo em nologging), então SIM tem 
que se gerar REDO pra essas tabs do banco
 Então a sua resposta é : 
 
==> é *** IMPOSSÌVEL *** vc "uma tabela não passe a gerar Redu / 
Archive", o que vc pode fazer é, em RAROS CASOS, diminuir o uso de 
REDO com essa cláusula NOLOGGING, SE e APENAS SE a operação sendo 
feita tem como ser garantida em blocos não-usados

[]s

 Chiappa


--- Em oracle_br@yahoogrupos.com.br, Welvis Douglas Silva Moreto 
<[EMAIL PROTECTED]> escreveu
>
> Olá Pessoal, gostaria de tirar uma duvida.
> 
> para que uma tabela não passe a gerar Redu / Archive seria apenas 
dar um
> 
> ALTER TABLE XXX NOLOGGING;
> 
> ou submeter a tabela a um truncate table?
> 
> é isso mesmo, ?
> 
> att
> 
> WELVIS DOUGLAS
> 
> __
> Fale com seus amigos  de graça com o novo Yahoo! Messenger 
> http://br.messenger.yahoo.com/ 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




[oracle_br] Re: Duvida OS

2007-04-11 Por tôpico jlchiappa
Concordo em GÊNERO, NÚMERO e GRAU, Márcio, e acrescento pro Welvis : 
colega, não só a pessoa/empresa que vai administrar o SO vai ser 
fator chave, MAS muitas vezes quem toma a decisão se ESQUECE de 
fatores importantes a mais, tais como o seu FORNECEDOR DE HARDWARE, 
de STORAGE, o teu SUPORTE DE REDE, o teu SUPORTE DE HARDWARE, todos 
esses caras estão habilitados a trabalhar com o SO escolhido ???
  É ** diferente ** ==> sim <== vc dar suporte pro linux e pro 
windows...  Noutro ponto, os drivers pro storage (por exemplo) já 
estão bons e estáveis no SO escolhido ?? Cansei de ver fornecedor de 
storage (entre outros, mas storage é típico) que (caso típico) 
trabalhava há anos com Windows e pulou há pouco pro Linux, aí os 
drivers e utilitários pra Linux estão num nível abaixo da crítica... 
Vice-versa existe bastante também, de repente a empresa trabalhava 
com unix há anos e anos, a adaptação dos drivers e utils pra linux 
foi tranquila e estável, aí ela pulou há pouco pro vagão do Win, 
lógico que a versão for Win tá um horror...

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "Marcio Portes" 
<[EMAIL PROTECTED]> escreveu
>
> Acho que o problema não é qual o melhor SO e sim "QUEM" vai 
administrá-lo.
> Se a empresa tem pessoal que administra Windows e ninguém  
experiente em
> Linux, então, neste caso, Linux não deveria ser nem considerado 
(caso não
> haja budget para treinamento e administração externa). É muito 
importante
> ter um SA para suportar o ambiente operacional onde o Oracle será 
instalado.
> Portanto, faça um planejamento rigoroso, onde os skills das pessoas 
deve ser
> levado em conta - e não caia na armadilha do treinamento: uma 
pessoa recém
> treinada, não está preparada para assumir um Sistema Operacional em 
produção
> (claro que isso é meu pensamento).
> 
> Agora, em minha opinião, mas porque conheço o Linux mais que 
Windows, eu
> instalaria o Oracle no Linux -- só e somente só, porque conheço a
> plataforma, tenho experiência nesta plataforma. E porque o Linux é 
Rock'n
> Roll... :-)
> 
> On 4/11/07, Welvis Douglas Silva Moreto <[EMAIL PROTECTED]> wrote:
> >
> >   Olá Pessoal, estamos em duvida aqui na empresa... estamos 
mudando a
> > maquina que o oracle está instalado, gostaria de saber o seguinte.
> >
> > qual SO é melhor Windows 2003 ou Red Hat AS 3 ou 4, atualmente 
estamos
> > usando o oracle
> >
> > Oracle9i Release 9.2.0.4.0 - Production
> > PL/SQL Release 9.2.0.4.0 - Production
> > CORE 9.2.0.3.0 Production
> > TNS for Linux: Version 9.2.0.4.0 - Production
> > NLSRTL Version 9.2.0.4.0 - Production
> > onde em um futuro bem proximos estaremos instalando o 10G, qual 
seria a
> > melhor opção?
> >
> > obrigado pela ajuda.!
> >
> > att,
> >
> > Welvis Douglas
> >
> > __
> > Fale com seus amigos de graça com o novo Yahoo! Messenger
> > http://br.messenger.yahoo.com/
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >  
> >
> 
> 
> 
> -- 
> Marcio Portes
> Material Tecnico em Portugues - http://mportes.blogspot.com
> Practical Learning Oracle -
> http://mportes.blogspot.com/2006/02/practical-learning-oracle.html
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Res: Res: Res: [oracle_br] Re: Duvida Recover?

2007-03-30 Por tôpico Marcus Pavan
Camarada, peguei a conversa andando mas darei um pitaco.

Como você disse, tem um processo de EXPORT e cópia dos DATAFILES - primeiro 
parentestes.

-> Esta cópia dos DATAFILES tem de ser com a TABLESPACE ou DATAFILE em BACKUP 
(ALTER TABLESPACE nome BEGIN BACKUP) e depois de encerrado a cópia voltar ao 
status NORMAL do TABLESPACE (ALTER TABLESPACE nome END BACKUP). Se for o Oracle 
10G, basta rodar o comando ALTER DATABASE BEGIN BACKUP que todos os TABLESPACES 
estarão em BACKUP MODE, depois use o END BACKUP;
-> Se você não estiver usando isto, você não tem nenhuma cópia do seu banco de 
dados, somente o seu EXPORT;

-final do primeiro parenteses.

Como digo para o pessoal EXPORT não é uma rotina de BACKUP, é somente uma 
segurança de estrutura e transporte de dados para um ambiente de teste. Se o 
ambiente for crítico (qualquer banco de produção é crítico) na situação que 
você colocou...

"... ai lá pelas 11 da manha de uma sexta feira, pois é um dia bem corrido
onde são emitidas 2000 notas fiscais eu perco um dos meus datafles
seja o motivo que for ok, bom como Murth é Murth depois do PAU eu
percebo que estou sem as copias dos datafiles, o que me resta são os
Archives e tbm o Export que foi feito a noite correto?..."

... como o seu chefe não gosta do RMAN você terá de  fazer uma recuperação 
completa no estilo Oracle 8 ou anterior:

1 - Colocar a TABLESPACE que está com problema em OFFLINE (se no caso for uma 
TABLESPACE com mais de um arquivo coloque somente o arquivo em OFFLINE);
2 - Restaurar na mão o DATAFILE que foi copiado na noite anterior para o local 
(se estiver disponível);
3 - Aplicar os ARCHIVES até o SCN atual (inclusive os REDOLOG) com o comando 
RECOVER;
4 - Colocar o TABLESPACE ONLINE novamente (ou DATAFILE);

O seu EXPORT não será usado nesta situação. Você NÃO PODE querer criar a 
TABLESPACE fazer a importação e aplicar os ARCHIVES depois. Converse com o seu 
"BOSS" e pede para ele te explicar o funcionamento de um RESTORE/RECOVER. E 
lembre de fazer o BACKUP do CONTROLFILE, ninguém lembra dele, mas se perdê-lo 
terá problemas sérios, além claro de espelhar estes arquivos, assim como: 
REDOLOG, ARCHIVELOG e CONTROLFILE. Não pense que existe corrompimento ou 
remoção Murphiana de DATAFILE somente.

Espero tê-lo ajudado.

Marcus Pavan.






- Mensagem original 
De: Welvis Douglas Silva Moreto <[EMAIL PROTECTED]>
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quinta-feira, 29 de Março de 2007 12:28:52
Assunto: Res: Res: [oracle_br] Re: Duvida Recover?









  



Meu amigo sei disso mas, não sou muito fã em dar soco em ponta de 
faca não.

mas vlw pela dica



att,



- Mensagem original 

De: mufalani <[EMAIL PROTECTED] com.br>

Para: [EMAIL PROTECTED] os.com.br

Enviadas: Sábado, 24 de Março de 2007 11:41:44

Assunto: Re: Res: [oracle_br] Re: Duvida Recover?



Se vc tem todos os archives...



Vai até o backup da semana retrasada, restaura o datafile (restore) e 

aplica os archives (recover)



Só para constar, meu chefe também era contra Rman, pois ele não sabia 

como usar.



Acho que o Rman é uma ferramenta fantástica e está aí para ajudar, 

cabe a você mostrar para seu chefe a rapidez no restore e a facilidade 

em colocar o banco no ar depois de crash.



Um forte abraço

Rodrigo Mufalani



Welvis Douglas Silva Moreto escreveu:

>

> Olá Anderson, cara é o seguinte, my boss ele é contra algumas coisas, 

> tipo RMAN mas tbm não vai atraz para saber como funciona ok.

>

> Vamos lá, acho não usei as palavras direito, Estou com o banco em 

> produção com 130 usuarios trabalhando Online.

>

> 1º O Banco está em Archive, porem é feito um export todas as noite. de 

> todos os usuarios/tablespace s/datafiles - sys e system, e também é 

> feito uma copia dos datafiles ok?

>

> ai lá pelas 11 da manha de uma sexta feira, pois é um dia bem corrido 

> onde são emitidas 2000 notas fiscais eu perco um dos meus datafles 

> seja o motivo que for ok, bom como Murth é Murth depois do PAU eu 

> percebo que estou sem as copias dos datafiles, o que me resta são os 

> Archives e tbm o Export que foi feito a noite correto?

>

> sendo assim eu consigo fazer um imp do banco e aplicar os archives até 

> o momento da falha?

>

> att,

>

> Welvis Douglas

>

> - Mensagem original 

> De: Anderson <[EMAIL PROTECTED] com.br <mailto:ar_farias% 40yahoo.com. br>>

> Para: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br>

> Enviadas: Sexta-feira, 23 de Março de 2007 14:38:24

> Assunto: [oracle_br] Re: Duvida Recover?

>

> Cara, vc está confundindo e misturando as coisas.

>

> Como diria o Jack, vamos por partes:

>

> 1 - "caso perder algum destes usuarios ou tablespaces"

> Não existe esse negócio de "perder usuários". Perder tablespace, sim,


Res: Res: [oracle_br] Re: Duvida Recover?

2007-03-29 Por tôpico Welvis Douglas Silva Moreto
Meu amigo sei disso mas, não sou muito fã em dar soco em ponta de faca não.
mas vlw pela dica

att,


- Mensagem original 
De: mufalani <[EMAIL PROTECTED]>
Para: oracle_br@yahoogrupos.com.br
Enviadas: Sábado, 24 de Março de 2007 11:41:44
Assunto: Re: Res: [oracle_br] Re: Duvida Recover?

Se vc tem todos os archives...

Vai até o backup da semana retrasada, restaura o datafile (restore) e 
aplica os archives (recover)

Só para constar, meu chefe também era contra Rman, pois ele não sabia 
como usar.

Acho que o Rman é uma ferramenta fantástica e está aí para ajudar, 
cabe a você mostrar para seu chefe a rapidez no restore e a facilidade 
em colocar o banco no ar depois de crash.

Um forte abraço
Rodrigo Mufalani

Welvis Douglas Silva Moreto escreveu:
>
> Olá Anderson, cara é o seguinte, my boss ele é contra algumas coisas, 
> tipo RMAN mas tbm não vai atraz para saber como funciona ok.
>
> Vamos lá, acho não usei as palavras direito, Estou com o banco em 
> produção com 130 usuarios trabalhando Online.
>
> 1º O Banco está em Archive, porem é feito um export todas as noite. de 
> todos os usuarios/tablespace s/datafiles - sys e system, e também é 
> feito uma copia dos datafiles ok?
>
> ai lá pelas 11 da manha de uma sexta feira, pois é um dia bem corrido 
> onde são emitidas 2000 notas fiscais eu perco um dos meus datafles 
> seja o motivo que for ok, bom como Murth é Murth depois do PAU eu 
> percebo que estou sem as copias dos datafiles, o que me resta são os 
> Archives e tbm o Export que foi feito a noite correto?
>
> sendo assim eu consigo fazer um imp do banco e aplicar os archives até 
> o momento da falha?
>
> att,
>
> Welvis Douglas
>
> - Mensagem original 
> De: Anderson <[EMAIL PROTECTED] com.br <mailto:ar_farias% 40yahoo.com. br>>
> Para: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br>
> Enviadas: Sexta-feira, 23 de Março de 2007 14:38:24
> Assunto: [oracle_br] Re: Duvida Recover?
>
> Cara, vc está confundindo e misturando as coisas.
>
> Como diria o Jack, vamos por partes:
>
> 1 - "caso perder algum destes usuarios ou tablespaces"
> Não existe esse negócio de "perder usuários". Perder tablespace, sim,
> caso vc perca o respectivo datafile.
>
> 2 - "eu poderia estar recriando elas e fazendo um import apenas deste
> usuario"
> Sim, vc pode importar um ou mais objetos de um ou mais usuários.
>
> 3 - "e aplicando os archives até o momento da falha de acordo com o
> que eu tenho registrado em meu controlfile? "
> Aqui q vc misturou. Esse negócio de 'aplicar archives' é para o banco
> que está no modo archivelog, como vc já deve saber, mas não tem nada a
> ver com o arquivo que foi exportado, não tem nada a ver com recriar a
> tablespace e aplicar archives. Essa parte de archive, tanto o backup
> quanto restore/recovery podem ser feitos com o auxílio do RMAN, q tem
> sintaxe e comandos próprios.
>
> Mas é possível e bem comum recuperar as informações até um momento
> imediatamente anterior à falha (PITR).
>
> Ajudei ou atrapalhei?
>
> Anderson.
>
> --- Em [EMAIL PROTECTED] os.com.br, Welvis Douglas Silva Moreto
>  escreveu
> >
> > Olá pessoal, bom gostaria de saber o seguinte. eu tenho um ambiente
> aqui na empresa, tenos um banco com alguns usuarios, caso perder algum
> destes usuarios ou tablespaces, eu poderia estar recriando elas e
> fazendo um import apenas deste usuario e aplicando os archives até o
> momento da falha de acordo com o que eu tenho registrado em meu
> controlfile?
> >
> > att,
> >
> > Welvis Douglas
> >
> >  _ _ _ _ __
> > Fale com seus amigos de graça com o novo Yahoo! Messenger
> > http://br.messenger .yahoo.com/
> >
>
>  _ _ _ _ __
> Fale com seus amigos de graça com o novo Yahoo! Messenger
> http://br.messenger .yahoo.com/ <http://br.messenger .yahoo.com/>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 



__
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

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



[oracle_br] Re: Duvida Recovery Perdi um DataFile e não tenho copia dele.

2007-03-24 Por tôpico spark

Oi Welvis,

Simples recuperar os datafiles perdidos sem ter backup se vc tem os archives.

Coloque os datafiles perdidos para offline immediate, depois dê o 
comando ALTER DATABASE CREATE DATAFILE 'CAMINHO DO ARQUIVO';, depois 
recupere o datafile com o comando RECOVER. Ex recover tablespace teste, 
coloque a tablespace ou datafile online novamente.


T+
   Jonathan Barbosa

- Original Message - From: Welvis Douglas Silva Moreto To: 
oracle_br@yahoogrupos.com.br Sent: Saturday, March 24, 2007 11:26 AM
Subject: [oracle_br] Duvida Recovery Perdi um DataFile e não tenho copia dele.


OLá, eu tenho um banco que, onde eu tenho apenas os archives e o export 
e perdi todos os datafiles que tem algumas tabelas

para aplicar todos os archives eu tenho que fazer o que?

alter database datafile XX offline drop;

bom ai ei posso criar um novo datafile para a minha tablespace e fazer 
um recover dela. mas como que eu faço para excuir esse datafile que 
está registrado no database? e como que eu faço para voltar essas 
tabelas.? eu posso fazer um imp deste usuario que está com problema e 
fazer um recover até o momento da falha, pois eu não tenho uma copia 
fisica datafile?

att,

Welvis Douglas

__
Fale com seus amigos de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/

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






Re: Res: [oracle_br] Re: Duvida Recover?

2007-03-24 Por tôpico mufalani
Se vc tem todos os archives...

  Vai até o backup da semana retrasada, restaura  o datafile (restore) e 
aplica os archives (recover)
 
  Só para constar, meu chefe também era contra Rman, pois ele não sabia 
como usar.

  Acho que o Rman é uma ferramenta fantástica e está aí para ajudar, 
cabe a você mostrar para seu chefe a rapidez no restore e a facilidade 
em colocar o banco no ar depois de crash.

Um forte abraço
Rodrigo Mufalani





Welvis Douglas Silva Moreto escreveu:
>
> Olá Anderson, cara é o seguinte, my boss ele é contra algumas coisas, 
> tipo RMAN mas tbm não vai atraz para saber como funciona ok.
>
> Vamos lá, acho não usei as palavras direito, Estou com o banco em 
> produção com 130 usuarios trabalhando Online.
>
> 1º O Banco está em Archive, porem é feito um export todas as noite. de 
> todos os usuarios/tablespaces/datafiles - sys e system, e também é 
> feito uma copia dos datafiles ok?
>
> ai lá pelas 11 da manha de uma sexta feira, pois é um dia bem corrido 
> onde são emitidas 2000 notas fiscais eu perco um dos meus datafles 
> seja o motivo que for ok, bom como Murth é Murth depois do PAU eu 
> percebo que estou sem as copias dos datafiles, o que me resta são os 
> Archives e tbm o Export que foi feito a noite correto?
>
> sendo assim eu consigo fazer um imp do banco e aplicar os archives até 
> o momento da falha?
>
> att,
>
> Welvis Douglas
>
> - Mensagem original 
> De: Anderson <[EMAIL PROTECTED] <mailto:ar_farias%40yahoo.com.br>>
> Para: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
> Enviadas: Sexta-feira, 23 de Março de 2007 14:38:24
> Assunto: [oracle_br] Re: Duvida Recover?
>
> Cara, vc está confundindo e misturando as coisas.
>
> Como diria o Jack, vamos por partes:
>
> 1 - "caso perder algum destes usuarios ou tablespaces"
> Não existe esse negócio de "perder usuários". Perder tablespace, sim,
> caso vc perca o respectivo datafile.
>
> 2 - "eu poderia estar recriando elas e fazendo um import apenas deste
> usuario"
> Sim, vc pode importar um ou mais objetos de um ou mais usuários.
>
> 3 - "e aplicando os archives até o momento da falha de acordo com o
> que eu tenho registrado em meu controlfile? "
> Aqui q vc misturou. Esse negócio de 'aplicar archives' é para o banco
> que está no modo archivelog, como vc já deve saber, mas não tem nada a
> ver com o arquivo que foi exportado, não tem nada a ver com recriar a
> tablespace e aplicar archives. Essa parte de archive, tanto o backup
> quanto restore/recovery podem ser feitos com o auxílio do RMAN, q tem
> sintaxe e comandos próprios.
>
> Mas é possível e bem comum recuperar as informações até um momento
> imediatamente anterior à falha (PITR).
>
> Ajudei ou atrapalhei?
>
> Anderson.
>
> --- Em [EMAIL PROTECTED] os.com.br, Welvis Douglas Silva Moreto
>  escreveu
> >
> > Olá pessoal, bom gostaria de saber o seguinte. eu tenho um ambiente
> aqui na empresa, tenos um banco com alguns usuarios, caso perder algum
> destes usuarios ou tablespaces, eu poderia estar recriando elas e
> fazendo um import apenas deste usuario e aplicando os archives até o
> momento da falha de acordo com o que eu tenho registrado em meu
> controlfile?
> >
> > att,
> >
> > Welvis Douglas
> >
> >  _ _ _ _ __
> > Fale com seus amigos de graça com o novo Yahoo! Messenger
> > http://br.messenger .yahoo.com/
> >
>
> __
> Fale com seus amigos de graça com o novo Yahoo! Messenger
> http://br.messenger.yahoo.com/ <http://br.messenger.yahoo.com/>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  


Res: [oracle_br] Re: Duvida Recover?

2007-03-24 Por tôpico Welvis Douglas Silva Moreto
Olá Anderson, cara é o seguinte, my boss ele é contra algumas coisas, tipo RMAN 
mas tbm não vai atraz para saber como funciona ok. 

Vamos lá, acho não usei as palavras direito, Estou com o banco em produção com 
130 usuarios trabalhando Online.

1º  O Banco está em Archive, porem é feito um export todas as noite. de todos 
os usuarios/tablespaces/datafiles - sys e system, e também é feito uma copia 
dos datafiles ok?

ai lá pelas 11 da manha de uma sexta feira, pois é um dia bem corrido onde são 
emitidas 2000 notas fiscais eu perco um dos meus datafles seja o motivo que for 
ok, bom como Murth é Murth depois do PAU eu percebo que estou sem as copias dos 
datafiles, o que me resta são os Archives e tbm o Export que foi feito a noite 
correto?

sendo assim eu consigo fazer um imp do banco e aplicar os archives até o 
momento da falha?

att,

Welvis Douglas


- Mensagem original 
De: Anderson <[EMAIL PROTECTED]>
Para: oracle_br@yahoogrupos.com.br
Enviadas: Sexta-feira, 23 de Março de 2007 14:38:24
Assunto: [oracle_br] Re: Duvida Recover?

Cara, vc está confundindo e misturando as coisas.

Como diria o Jack, vamos por partes:

1 - "caso perder algum destes usuarios ou tablespaces"
Não existe esse negócio de "perder usuários". Perder tablespace, sim,
caso vc perca o respectivo datafile.

2 - "eu poderia estar recriando elas e fazendo um import apenas deste
usuario"
Sim, vc pode importar um ou mais objetos de um ou mais usuários.

3 - "e aplicando os archives até o momento da falha de acordo com o
que eu tenho registrado em meu controlfile? "
Aqui q vc misturou. Esse negócio de 'aplicar archives' é para o banco
que está no modo archivelog, como vc já deve saber, mas não tem nada a
ver com o arquivo que foi exportado, não tem nada a ver com recriar a
tablespace e aplicar archives. Essa parte de archive, tanto o backup
quanto restore/recovery podem ser feitos com o auxílio do RMAN, q tem
sintaxe e comandos próprios.

Mas é possível e bem comum recuperar as informações até um momento
imediatamente anterior à falha (PITR).

Ajudei ou atrapalhei?

Anderson.

--- Em [EMAIL PROTECTED] os.com.br, Welvis Douglas Silva Moreto
 escreveu
>
> Olá pessoal, bom gostaria de saber o seguinte. eu tenho um ambiente
aqui na empresa, tenos um banco com alguns usuarios, caso perder algum
destes usuarios ou tablespaces, eu poderia estar recriando elas e
fazendo um import apenas deste usuario e aplicando os archives até o
momento da falha de acordo com o que eu tenho registrado em meu
controlfile?
> 
> att,
> 
> Welvis Douglas
> 
>  _ _ _ _ __
> Fale com seus amigos de graça com o novo Yahoo! Messenger 
> http://br.messenger .yahoo.com/
>




__
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

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



[oracle_br] Re: Duvida Recover?

2007-03-23 Por tôpico Anderson
Cara, vc está confundindo e misturando as coisas.

Como diria o Jack, vamos por partes:

1 - "caso perder algum destes usuarios ou tablespaces"
Não existe esse negócio de "perder usuários". Perder tablespace, sim,
caso vc perca o respectivo datafile.

2 - "eu poderia estar recriando elas e fazendo um import apenas deste
usuario"
Sim, vc pode importar um ou mais objetos de um ou mais usuários.

3 - "e aplicando os archives até o momento da falha de acordo com o
que eu tenho registrado em meu controlfile?"
Aqui q vc misturou. Esse negócio de 'aplicar archives' é para o banco
que está no modo archivelog, como vc já deve saber, mas não tem nada a
ver com o arquivo que foi exportado, não tem nada a ver com recriar a
tablespace e aplicar archives. Essa parte de archive, tanto o backup
quanto restore/recovery podem ser feitos com o auxílio do RMAN, q tem
sintaxe e comandos próprios.

Mas é possível e bem comum recuperar as informações até um momento
imediatamente anterior à falha (PITR).

Ajudei ou atrapalhei?

Anderson.


--- Em oracle_br@yahoogrupos.com.br, Welvis Douglas Silva Moreto
<[EMAIL PROTECTED]> escreveu
>
> Olá pessoal, bom gostaria de saber o seguinte. eu tenho um ambiente
aqui na empresa, tenos um banco com alguns usuarios, caso perder algum
destes usuarios ou tablespaces, eu poderia estar recriando elas e
fazendo um import apenas deste usuario e aplicando os archives até o
momento da falha de acordo com o que eu tenho registrado em meu
controlfile?
> 
> att,
> 
> Welvis Douglas
> 
> __
> Fale com seus amigos  de graça com o novo Yahoo! Messenger 
> http://br.messenger.yahoo.com/
>




[oracle_br] Re: duvida sobre rodar script

2007-02-05 Por tôpico jlchiappa
Lucimar, vamos por partes : pra começo de conversa, o Forms 9i e 10g 
só rodam EM MODO WEB, nesse modo na máquina-cliente há APENAS O WEB 
BROWSER e mais nada, o programa na real está rodando no servidor web, 
então QUALQUER operação "local" que o programa peça (abrir arquivo, 
rodar programa executável externo na máquina do usuário, acionar 
impressora na máquina do usuário, enfim, etc) na verdade VAI ser 
feito é onde o programa tá rodando na real, que é o servidor web 
Já que a máquina do usuário só tem o browser, vc TEM que acionar é o 
browser para ter acesso à máquina local do usuário, normalmente isso 
se faz chamando uma rotininha Java, nos demos do Forms vc recebe uma 
de exemplo, iirc. Entendido ??? Então, SE vc puder gerar o arquivo-
texto no servidor web, E puder ter o tal programa delphi sendo 
executado a partir de lá, e SE a impressora \\FINANC\LX300 for de 
rede E acessível ao servidor web E vc tiver sqlplus no servidor web, 
vc poderá SIM chamar programas via host fazer o mesmo que faz hoje, E 
poderá executar scripts .SQL pelo ** ÚNICO ** programa que é 
garantido que os entende, que é o sqlplus, ok  HOST é entendido, 
e funciona sim dentro do Forms, MAS a sintaxe é diferente do host do 
sqlplus E há a restrição de local em sendo modo web, cfrme disse.
 SE por qquer motivo a idéia acima não puder ser implementada, vale o 
que eu falei na msg anterior e REPITO : ==> scripts .SQL em princípio 
SÓ PODEM ser executados chamando-se o programa externo sqlplus, se 
isso não puder ser feito de alguma forma, sorry, vc VAI TER que ao 
invés de ter tudo num único arquivo .SQL ter várias rotinas que façam 
o que vc quer.
 
 []s
 
   Chiappa
   
--- Em oracle_br@yahoogrupos.com.br, "lucimar_micromap" <[EMAIL PROTECTED]> 
escreveu
>
> Veja bem o problema caro chiappa,
> 
> primeiro preciso imprimir cheque em uma impressora 
> de cheque pela COM1, e também emitir cupom fiscal
> em um ECF (impressora fiscal), hj o sistema está rodando em Forms 6,
> então para o cheque gravo um arquivo texto, utilizando
> o pacote TEXT_IO do Forms, e depois utilizo comando
> HOST('TYPE CHEQUE.TXT > COM1').
> Já para o ECF tenho o seguinte esquema: pelo Forms6
> gero um arquivo texto com os dados próprios do ECF
> (usando TEXT_IO), depois utilizando o HOST('c:\prog_ecf.exe') 
executo
> um aplicativo em Delphi que le o arq. texto gerado
> e envia para o ECF pegando o retorno e gerando um arquivo
> de retorno em txt, que o Forms le e verifica se deu tudo certo, etc 
> etc.
>   Dentro do script que eu gostaria de executar tem a 
> seguinte linha:
>   
>   HOST TYPE C:\TESTE\ARQ.TXT > \\FINANC\LX300
> 
>Se execute dentro dentro do sqlplus funciona, ou seja
> imprime as linhas que tenho no arquivo arq.txt
> 
> Agora sugestão para terminar de migrar minha aplicação
> para o Forms 9  Muito Obrigado pela ajuda 
> 
> 
> 
> 
> --- Em oracle_br@yahoogrupos.com.br, "jlchiappa"  
> escreveu
> >
> > Ricardo, um script .SQL é um arquivo que PODE tranquilamente 
> conter 
> > N+1 comandos que APENAS O SQLPLUS entende, então via de regra 
> APENAS 
> > PELO SQLPLUS é que ele pode ser executado ... É o mesmo que um 
> > arquivo .DOC, que só pode ser executado/interpretado pelo MS-Word 
> em 
> > princípio, que um arquivo .XLS que só pode ser executado pelo 
> > Excell... É por aí, ok ?? Então, SEJA em uma procedure, SEJA em 
um 
> > Forms (de que versão for), necessariamente pra executar um 
> > script .SQL vc TERÀ QUE chamar o executável do sqlplus. E aí vem 
a 
> > resposta-padrão, pra chamar um programa executável, seja QUAL 
FOR, 
> > pelo Forms 9i vc precisa escrever uma aplicaçãozinha Java (nos 
> demos 
> > do Forms já vem uma de modelo, iirc), E pra chamar um programa 
> > executável externo duma stored procedure no banco 10g OU vc faz 
> isso 
> > via job (que no bd 10g já pode rodar executáveis externos), OU 
> cria 
> > uma external procedure OU usa java OU passa argumentos prum 
> programa 
> > externo executável que os possa receber do banco (via PIPE se ele 
> > estiver conectado no banco, se não pode ser via arq. texto).
> > 
> > []s
> > 
> >  Chiappa
> >  
> > OBS : vc não nos mostra, mas no meio do email vc diz "quero 
> executar 
> > a procedure
> > de dentro do Forms 9i" : SE esse script TESTE.SQL contém a 
chamada 
> a 
> > uma procedure de banco E MAIS NADA, aí sim, o Forms tem 
capacidade 
> > TOTAL pra executar procedures, basta escrever o nome dela com ; 
ao 
> > final numa trigger qquer... SE for isso, necessidade NENHUMA de 
> > script, E portanto de nada do que foi dito...
> > 
> > --- Em oracle_br@yahoogrupos.com.br, "Ricardo Augusto de Moura 
Dal 
> > Secco"  escreveu
> > >
> > > Existe a possibilidade de criar uma procedure de banco
> > > que execute um script, tipo eu entro no SqlPlus e
> > > executo: @C:\TESTE\TESTE.SQL
> > > 
> > > Como executar essa linha dentro da procedure, ou seja
> > > preciso executar o script TESTE.SQL várias vezes, sem
> > > ter que entrar no sqlplus, quero ex

[oracle_br] Re: duvida sobre rodar script

2007-02-02 Por tôpico lucimar_micromap
Veja bem o problema caro chiappa,

primeiro preciso imprimir cheque em uma impressora 
de cheque pela COM1, e também emitir cupom fiscal
em um ECF (impressora fiscal), hj o sistema está rodando em Forms 6,
então para o cheque gravo um arquivo texto, utilizando
o pacote TEXT_IO do Forms, e depois utilizo comando
HOST('TYPE CHEQUE.TXT > COM1').
Já para o ECF tenho o seguinte esquema: pelo Forms6
gero um arquivo texto com os dados próprios do ECF
(usando TEXT_IO), depois utilizando o HOST('c:\prog_ecf.exe') executo
um aplicativo em Delphi que le o arq. texto gerado
e envia para o ECF pegando o retorno e gerando um arquivo
de retorno em txt, que o Forms le e verifica se deu tudo certo, etc 
etc.
  Dentro do script que eu gostaria de executar tem a 
seguinte linha:
  
  HOST TYPE C:\TESTE\ARQ.TXT > \\FINANC\LX300

   Se execute dentro dentro do sqlplus funciona, ou seja
imprime as linhas que tenho no arquivo arq.txt

Agora sugestão para terminar de migrar minha aplicação
para o Forms 9  Muito Obrigado pela ajuda 




--- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> 
escreveu
>
> Ricardo, um script .SQL é um arquivo que PODE tranquilamente 
conter 
> N+1 comandos que APENAS O SQLPLUS entende, então via de regra 
APENAS 
> PELO SQLPLUS é que ele pode ser executado ... É o mesmo que um 
> arquivo .DOC, que só pode ser executado/interpretado pelo MS-Word 
em 
> princípio, que um arquivo .XLS que só pode ser executado pelo 
> Excell... É por aí, ok ?? Então, SEJA em uma procedure, SEJA em um 
> Forms (de que versão for), necessariamente pra executar um 
> script .SQL vc TERÀ QUE chamar o executável do sqlplus. E aí vem a 
> resposta-padrão, pra chamar um programa executável, seja QUAL FOR, 
> pelo Forms 9i vc precisa escrever uma aplicaçãozinha Java (nos 
demos 
> do Forms já vem uma de modelo, iirc), E pra chamar um programa 
> executável externo duma stored procedure no banco 10g OU vc faz 
isso 
> via job (que no bd 10g já pode rodar executáveis externos), OU 
cria 
> uma external procedure OU usa java OU passa argumentos prum 
programa 
> externo executável que os possa receber do banco (via PIPE se ele 
> estiver conectado no banco, se não pode ser via arq. texto).
> 
> []s
> 
>  Chiappa
>  
> OBS : vc não nos mostra, mas no meio do email vc diz "quero 
executar 
> a procedure
> de dentro do Forms 9i" : SE esse script TESTE.SQL contém a chamada 
a 
> uma procedure de banco E MAIS NADA, aí sim, o Forms tem capacidade 
> TOTAL pra executar procedures, basta escrever o nome dela com ; ao 
> final numa trigger qquer... SE for isso, necessidade NENHUMA de 
> script, E portanto de nada do que foi dito...
> 
> --- Em oracle_br@yahoogrupos.com.br, "Ricardo Augusto de Moura Dal 
> Secco"  escreveu
> >
> > Existe a possibilidade de criar uma procedure de banco
> > que execute um script, tipo eu entro no SqlPlus e
> > executo: @C:\TESTE\TESTE.SQL
> > 
> > Como executar essa linha dentro da procedure, ou seja
> > preciso executar o script TESTE.SQL várias vezes, sem
> > ter que entrar no sqlplus, quero executar a procedure
> > de dentro do Forms 9i
> > 
> > Configuração: Banco 10gR2
> > 
> > Muito Obrigado pela ajuda.
> > 
> > Lucimar
> > 
> > 
> > [As partes desta mensagem que não continham texto foram 
removidas]
> >
>




[oracle_br] Re: duvida sobre rodar script

2007-02-02 Por tôpico jlchiappa
Ricardo, um script .SQL é um arquivo que PODE tranquilamente conter 
N+1 comandos que APENAS O SQLPLUS entende, então via de regra APENAS 
PELO SQLPLUS é que ele pode ser executado ... É o mesmo que um 
arquivo .DOC, que só pode ser executado/interpretado pelo MS-Word em 
princípio, que um arquivo .XLS que só pode ser executado pelo 
Excell... É por aí, ok ?? Então, SEJA em uma procedure, SEJA em um 
Forms (de que versão for), necessariamente pra executar um 
script .SQL vc TERÀ QUE chamar o executável do sqlplus. E aí vem a 
resposta-padrão, pra chamar um programa executável, seja QUAL FOR, 
pelo Forms 9i vc precisa escrever uma aplicaçãozinha Java (nos demos 
do Forms já vem uma de modelo, iirc), E pra chamar um programa 
executável externo duma stored procedure no banco 10g OU vc faz isso 
via job (que no bd 10g já pode rodar executáveis externos), OU cria 
uma external procedure OU usa java OU passa argumentos prum programa 
externo executável que os possa receber do banco (via PIPE se ele 
estiver conectado no banco, se não pode ser via arq. texto).

[]s

 Chiappa
 
OBS : vc não nos mostra, mas no meio do email vc diz "quero executar 
a procedure
de dentro do Forms 9i" : SE esse script TESTE.SQL contém a chamada a 
uma procedure de banco E MAIS NADA, aí sim, o Forms tem capacidade 
TOTAL pra executar procedures, basta escrever o nome dela com ; ao 
final numa trigger qquer... SE for isso, necessidade NENHUMA de 
script, E portanto de nada do que foi dito...

--- Em oracle_br@yahoogrupos.com.br, "Ricardo Augusto de Moura Dal 
Secco" <[EMAIL PROTECTED]> escreveu
>
> Existe a possibilidade de criar uma procedure de banco
> que execute um script, tipo eu entro no SqlPlus e
> executo: @C:\TESTE\TESTE.SQL
> 
> Como executar essa linha dentro da procedure, ou seja
> preciso executar o script TESTE.SQL várias vezes, sem
> ter que entrar no sqlplus, quero executar a procedure
> de dentro do Forms 9i
> 
> Configuração: Banco 10gR2
> 
> Muito Obrigado pela ajuda.
> 
> Lucimar
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




[oracle_br] Re: Duvida sobre backup

2006-12-20 Por tôpico Elisson Ferraz Almeida
a questao que eu nao quero fazer um
exp full=y pq eu quero somente os usuarios especificos mas me parece que a opcao
full e onwer sao conflitantes.

On 12/20/06, Elisson Ferraz Almeida <[EMAIL PROTECTED]> wrote:
> Ola Lista,
> tenho a seguinte estrutura: Um servidor oracle 8 no windows 2000 server.
> tenho varios usuarios e a maioria tem uma tablespace separada para ele.
> Gostaria de saber como que eu poderia criar um backup de tal forma que
> quando eu fosse recupera-lo em outro servidor eu tivesse essa
> estrutura em backup assim evitando que eu criasse tudo na mao
> novamente.
>
> Muito Obrigado.
>
> --
> Atenciosamente,
> Elisson Ferraz Almeida
> When you have eliminated all which is impossible, then whatever
> remains, however improbable, must be the truth.
> -Sherlock Holmes
>


-- 
Atenciosamente,
Elisson Ferraz Almeida
When you have eliminated all which is impossible, then whatever
remains, however improbable, must be the truth.
-Sherlock Holmes


[oracle_br] Re: duvida

2006-12-19 Por tôpico jlchiappa
A melhor maneira depende ** COMPLETAMENTE ** de qual versão de banco 
vc tem, que vc NÂO nos diz ...:/ 
 SE for banco 9i ou superior : SE vc não precisa EXATAMENTE de 100 
linhas, pode ser algo mais ou menos próximo disso, expresso em 
porcentual, vc usa a cláusula SAMPLE, exemplo :
 
 select camposquequero from tabela sample (porcentagemquequero);
 
 esse cara é MUITO rápido, e te retorna os x% de linhas da tabela 
especificados... Já se vc REALMENTE exige que sejam 100 linhas, vc 
pode fazer algo tipo :
 
 select * from
   ( select colunas
  from tabela
 order by dbms_random.value )
 where rownum <= 100


[]s

 Chiappa
 
--- Em oracle_br@yahoogrupos.com.br, "Silvanira Cervi Hort" 
<[EMAIL PROTECTED]> escreveu
>
> Pessoal estou precisando fazer um select numa tabela de n linhas.. 
porem
> preciso de 100 linhas de forma randomica dessa tabela...
> 
> alguém sabe como fazer
> 
> Silvanira
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




RES: [oracle_br] Re: duvida simples

2006-12-14 Por tôpico Marcio T N Ferreira
oi Marcos,
testei aki no desenv. funcionou com algumas poucas mudancas e na producao
funcionou perfeitamente.
Obrigado
Marcio

  _  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de marcosarlindo
Enviada em: segunda-feira, 11 de dezembro de 2006 16:16
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: duvida simples



Teste em ambiente de desenvolvimento..

CREATE OR REPLACE PROCEDURE sp_upper
IS
BEGIN
DECLARE
CURSOR C1 IS
select * from NOME_DA_TABELA
where NOME_DA_COLUNA like '%a%';
BEGIN
FOR R1 IN C1 LOOP
update NOME_DA_TABELA set NOME_DA_COLUNA=upper(NOME_DA_COLUNA)
where NOME_DA_COLUNA=r1.NOME_DA_COLUNA; 
commit;
END LOOP;
END; 
END;
/ 

ABS
Marcos Arlindo

--- Em [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br>
os.com.br, "Rafael Milanez - BusinessOn" 
<[EMAIL PROTECTED]> escreveu
>
> Se esta tabela não conter indice e não for muito grande
> 
> se quiser só o primeiro caracter maiusculo troque a função UPPER 
por INITCAP
> 
> 
> update tabela
> set campoA = upper(campoA),
> set campoB = upper(campoB),
> set campoC = upper(campoC)
> 
> - Original Message - 
> From: Marcio T N Ferreira 
> To: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br 
> Sent: Monday, December 11, 2006 2:03 PM
> Subject: [oracle_br] duvida simples
> 
> 
> Pessoal,
> estou com uma duvida super simples que me foi apresentada e 
gostaria de
> ouvir alguma sugestao de vcs.
> Preciso escrever um script em plsql que pegue uma tabela q 
percorra todos os
> registros um a um trocando o conteudo do campo a,b e c para 
maiusculas...
> alguem tem uma boa sugestao?
> obrigado
> Marcio Ferreira
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>



 


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



[oracle_br] Re: duvida simples

2006-12-11 Por tôpico marcosarlindo
Teste em ambiente de desenvolvimento..

CREATE OR REPLACE PROCEDURE sp_upper
IS
BEGIN
 DECLARE
  CURSOR C1 IS
 select * from NOME_DA_TABELA
 where NOME_DA_COLUNA like '%a%';
  BEGIN
  FOR R1 IN C1 LOOP
   update NOME_DA_TABELA set NOME_DA_COLUNA=upper(NOME_DA_COLUNA)
   where NOME_DA_COLUNA=r1.NOME_DA_COLUNA;   
   commit;
END LOOP;
   END;
END;
/ 

ABS
Marcos Arlindo




--- Em oracle_br@yahoogrupos.com.br, "Rafael Milanez - BusinessOn" 
<[EMAIL PROTECTED]> escreveu
>
> Se esta tabela não conter indice e não for muito grande
> 
> se quiser só o primeiro caracter maiusculo troque a função UPPER 
por INITCAP
> 
> 
> update tabela
> set campoA = upper(campoA),
> set campoB = upper(campoB),
> set campoC = upper(campoC)
> 
>   - Original Message - 
>   From: Marcio T N Ferreira 
>   To: oracle_br@yahoogrupos.com.br 
>   Sent: Monday, December 11, 2006 2:03 PM
>   Subject: [oracle_br] duvida simples
> 
> 
>   Pessoal,
>   estou com uma duvida super simples que me foi apresentada e 
gostaria de
>   ouvir alguma sugestao de vcs.
>   Preciso escrever um script em plsql que pegue uma tabela q 
percorra todos os
>   registros um a um trocando o conteudo do campo a,b e c para 
maiusculas...
>   alguem tem uma boa sugestao?
>   obrigado
>   Marcio Ferreira
> 
>   [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: Duvida Data-Mining???

2006-10-16 Por tôpico jlchiappa
Seguinte : esse não é um conceito inventado pela Oracle, é geral e 
genérico, e até por isso mesmo muito bem documentado externamente, 
como por exemplo em pesquisas tal como no primeiro hit google que 
caí, http://www.cce.puc-rio.br/informatica/dataminingcentro.htm e 
quetais, mas num zás-trás a idéia é : logicamente quem trabalha com 
vendas sabe que há características próprias do produto e do mercado, 
até por instinto - por exemplo, se eu vendo sorvetes lógico que no 
inverno as vendas caem. O data mining consiste em tentar tirar 
deduções do comportamento dos seus dados mais complexas do que esta 
acima, é tentar achar nichos de comportamento : no exemplo acima, 
talvez analisando os dados vc não saiba mas descubra que embora as 
vendas do teu sorvete caiam no inverno , não caem de modo uniforme, 
talvez em algumas regiões caiam menos por questão de hábitos locais, 
com data mining vc obteria informações "ocultas" do tipo, que vc já 
tem mas não sabe , é isso, é DIRETAMENTE relevante a vendas, é a 
função FINAL dele.

[]s

 Chiappa

===
Participe do ENPO - Encontro de Profissionais Oracle 2006 ! 
Informações e inscrições em www.enpo-br.org
José Laurindo Chiappa, Palestrante ENPO-2006
===



--- Em oracle_br@yahoogrupos.com.br, Welvis Douglas Silva Moreto 
<[EMAIL PROTECTED]> escreveu
>
> olá pessoal, estou com algumas duvidas a respeito de data-mining, 
como que o data-mining poderia me ajudar no processo de tomada de 
decisão no caso da area comerial .. na parte de vendas de produtos, 
faturamento, essas coisas.. blablablablabla
> 
> att,
> 
> Welvis Douglas
> 
> 
>   
> ___ 
> Yahoo! Acesso Grátis - Internet rápida e grátis. Instale 
> o discador agora! 
> http://br.acesso.yahoo.com
>





--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__
Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle
VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas"
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 



RE: [oracle_br] Re: Duvida basica - como conectar ao banco

2006-09-28 Por tôpico Luis Cabral
Ops! Valeu Chiappa, por como sempre uma resposta bem detalhada.

 

Realmente vc esta certo, eu nao chequei naquele manual especificamente.

 

Tudo funciona de acordo agora.

 

/lc

 

 

 

 

 



From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of 
jlchiappa
Sent: 27 September 2006 20:45
To: oracle_br@yahoogrupos.com.br
Subject: [oracle_br] Re: Duvida basica - como conectar ao banco

 

Colega, se vc não achou vc deve ter pesquisado nos manuas errados,
essa info está no manual "Oracle Database Administrator's Guide for
Windows", e em resumo o que ele diz é o seguinte : sim, se o serviço
está parado vc o deve startar antes de startar o banco, vc pode
startar o serviço ou pelo Painel de Controle, ou com o utilitário
oradim ou com o comando windows apropriado, que se chama netstart.
Notar também que além do ORACLE_SID normalmente se indica também o
ORACLE_HOME e o PATH ao se trabalhar com o banco manualmente, o seu
procedimento portanto seria :


set ORACLE_SID=siddobanco
set ORACLE_HOME=D:\pastadooraclehome
cd %ORACLE_HOME%\bin

aí startar o serviço, se for com netstart seria :

net start OracleServicenomedosid
sqlplus /nolog
connect sys/senhadele as sysdba
startup

[]s


Chiappa
--- Em oracle_br@yahoogrupos.com.br, "Smashed Dreams" <[EMAIL PROTECTED]>
escreveu
>
> Ola a todos
> 
> To com uma duvida basica... Tenho o Oracle 10g release 2 instalado 
> num Windows XP, tudo funcionando normal quando eu coloco o banco no 
> ar atraves do servico correspondente.
> 
> Porem, para efeito de teste, gostaria de colocar o banco no 
> ar "manualmente", i.e., conectando no sqlplus e dando o comando 
> startup, mas nao estou conseguindo. Estou fazendo o seguinte:
> 
> 
> C:\oracle\product\10.1.0\Db_1\BIN>set oracle_sid=orcl
> 
> C:\oracle\product\10.1.0\Db_1\BIN>sqlplus.exe /nolog
> 
> SQL*Plus: Release 10.1.0.2.0 - Production on Wed Sep 27 20:19:05 2006
> 
> Copyright (c) 1982, 2004, Oracle.  All rights reserved.
> 
> SQL> connect sys/senha as sysdba
> ERROR:
> ORA-12560: TNS:protocol adapter error
> 
> 
> Como isso funciona no windows? Preciso startar o servico pra acessar 
> a instancia? Tem como startar o servico sem colocar o banco no ar?
> 
> Pesquisei nos manuais, mas nao consegui encontrar a resposta. 
> Qualquer ajuda sera bem vinda!!
> 
> Obrigado
> /lc
>




 



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



--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 




Re: [oracle_br] Re: Duvida basica - como conectar ao banco

2006-09-27 Por tôpico Anderson Goulart
Olha vc tem que estar o serviço para conseguir se conectar na base de dados
sim!

Vc consegue subir o serviço sem levamtar o a base dados tb

Use o ORADIM para alterar essa opção de configuração do serviço, a opção se
chama [-STARTMODE auto|manual]



Em 27/09/06, jlchiappa <[EMAIL PROTECTED]> escreveu:
>
> Colega, se vc não achou vc deve ter pesquisado nos manuas errados,
> essa info está no manual "Oracle Database Administrator's Guide for
> Windows", e em resumo o que ele diz é o seguinte : sim, se o serviço
> está parado vc o deve startar antes de startar o banco, vc pode
> startar o serviço ou pelo Painel de Controle, ou com o utilitário
> oradim ou com o comando windows apropriado, que se chama netstart.
> Notar também que além do ORACLE_SID normalmente se indica também o
> ORACLE_HOME e o PATH ao se trabalhar com o banco manualmente, o seu
> procedimento portanto seria :
>
>
> set ORACLE_SID=siddobanco
> set ORACLE_HOME=D:\pastadooraclehome
> cd %ORACLE_HOME%\bin
>
> aí startar o serviço, se for com netstart seria :
>
> net start OracleServicenomedosid
> sqlplus /nolog
> connect sys/senhadele as sysdba
> startup
>
> []s
>
>
> Chiappa
> --- Em oracle_br@yahoogrupos.com.br, "Smashed Dreams" <[EMAIL PROTECTED]>
> escreveu
> >
> > Ola a todos
> >
> > To com uma duvida basica... Tenho o Oracle 10g release 2 instalado
> > num Windows XP, tudo funcionando normal quando eu coloco o banco no
> > ar atraves do servico correspondente.
> >
> > Porem, para efeito de teste, gostaria de colocar o banco no
> > ar "manualmente", i.e., conectando no sqlplus e dando o comando
> > startup, mas nao estou conseguindo. Estou fazendo o seguinte:
> >
> >
> > C:\oracle\product\10.1.0\Db_1\BIN>set oracle_sid=orcl
> >
> > C:\oracle\product\10.1.0\Db_1\BIN>sqlplus.exe /nolog
> >
> > SQL*Plus: Release 10.1.0.2.0 - Production on Wed Sep 27 20:19:05 2006
> >
> > Copyright (c) 1982, 2004, Oracle.  All rights reserved.
> >
> > SQL> connect sys/senha as sysdba
> > ERROR:
> > ORA-12560: TNS:protocol adapter error
> >
> >
> > Como isso funciona no windows? Preciso startar o servico pra acessar
> > a instancia? Tem como startar o servico sem colocar o banco no ar?
> >
> > Pesquisei nos manuais, mas nao consegui encontrar a resposta.
> > Qualquer ajuda sera bem vinda!!
> >
> > Obrigado
> > /lc
> >
>
>
>
>
>
>
>
> --
> Atenção! As mensagens deste grupo são de acesso público e de inteira
> responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
>
> --__
>
> OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE
> VISITE: http://www.oraclebr.com.br/
> __
> Este Grupo recebe o apoio da SQL Magazine -
> www.devmedia.com.br/sqlmagazine
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>


-- 
Anderson Goulart CornelioTel.: (21)2796-5407 / (21)8713-4739


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



--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 





RES: [oracle_br] Re: Duvida sobre Materialized View

2006-09-27 Por tôpico Nelson Cartaxo
Sim Marcelo,

 

Criei os dois logs 

 

 

 

Atenciosamente, 
Nelson Cartaxo
DBA ORACLE 



 

  _  

De: Marcelo Ribeiro [mailto:[EMAIL PROTECTED] 
Enviada em: quarta-feira, 27 de setembro de 2006 13:20
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Duvida sobre Materialized View

 

Vc chegou a criar o log da MV ? 

--- Em oracle_br@yahoogrupos.com.br, Nelson Cartaxo 
<[EMAIL PROTECTED]> escreveu
>
> Pessoal bom dia,
> 
>  
> 
> Estou com um problema e sinceramente não sei como resolver. Criei 
uma MV com
> o resultado de um select de duas tabelas bem grandes, uma com 16Gb 
e outra
> com 10Gb. 
> 
>  
> 
> No momento da criação, demorou cerca de 3 horas para criar. O 
problema está
> na hora do refresh(fast), que está demorando mais de uma semana e 
gerando um
> rollback absurdo, cerca de 3GB. Está sendo mais rápido recriar a MV 
do que
> fazer um fast refresh. Será que estou comendo bola em alguma coisa? 
Os logs
> também foram criados em cima das duas tabelas.
> 
>  
> 
> Segue o comando que estou usando para criar
> 
>  
> 
> A versão do oracle é 8.1.7.4 em Solaris
> 
>  
> 
> CREATE MATERIALIZED VIEW CADSUS.TB_CONSULTA_USUARIO
> PCTFREE 10
> PCTUSED 40
> MAXTRANS 255
> STORAGE(INITIAL 128M)
> TABLESPACE TD_CADSUS_02
> LOGGING
> PARALLEL 4
> BUILD IMMEDIATE
> USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 
4096K NEXT
> 4096K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TABLESPACE
> TI_CADSUS_02
> REFRESH FAST
> START WITH TO_DATE('25-SEP-2006 11:38 AM','DD-MON- HH12:MI PM')
> NEXT SYSDATE + 2/24
> AS SELECT
>  CADSUS.TM_CONTROLE_USUARIO.ROWID C1,
>  CADSUS.TM_USUARIO.ROWID C2,
>  CADSUS.TM_CONTROLE_USUARIO.CO_SEQ_USU co_seq_usu_cont ,
>  CADSUS.TM_CONTROLE_USUARIO.DT_OPERACAO ,
>  CADSUS.TM_CONTROLE_USUARIO.ST_CONTROLE ,
>  CADSUS.TM_USUARIO.CO_MUNICIPIO_RESIDENCIA ,
>  CADSUS.TM_USUARIO.CO_SEQ_USU ,
>  CADSUS.TM_USUARIO.CO_SEXO ,
>  CADSUS.TM_USUARIO.CO_USUARIO ,
>  CADSUS.TM_USUARIO.DT_NASCIMENTO ,
>  CADSUS.TM_USUARIO.NO_MAE ,
>  CADSUS.TM_USUARIO.NO_MAE_FONETIZADO ,
>  CADSUS.TM_USUARIO.NO_PAI ,
>  CADSUS.TM_USUARIO.NO_PAI_FONETIZADO ,
>  CADSUS.TM_USUARIO.NO_USUARIO ,
>  CADSUS.TM_USUARIO.NO_USUARIO_FONETIZADO
>  FROM CADSUS.tm_usuario, CADSUS.TM_CONTROLE_USUARIO
>  WHERE tm_usuario.co_seq_usu = TM_CONTROLE_USUARIO.co_seq_usu
> 
>  
> 
> Obrigado desde já pelo help.
> 
>  
> 
>  
> 
>  
> 
> Atenciosamente, 
> Nelson Cartaxo
> DBA ORACLE 
> 
> 
> 
>  
> 
>  
> 
> 
> 
> [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 deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 





[oracle_br] Re: Duvida sobre Materialized View

2006-09-27 Por tôpico Marcelo Ribeiro
Vc chegou a criar o log da MV ? 

--- Em oracle_br@yahoogrupos.com.br, Nelson Cartaxo 
<[EMAIL PROTECTED]> escreveu
>
> Pessoal bom dia,
> 
>  
> 
> Estou com um problema e sinceramente não sei como resolver. Criei 
uma MV com
> o resultado de um select de duas tabelas bem grandes, uma com 16Gb 
e outra
> com 10Gb. 
> 
>  
> 
> No momento da criação, demorou cerca de 3 horas para criar. O 
problema está
> na hora do refresh(fast), que está demorando mais de uma semana e 
gerando um
> rollback absurdo, cerca de 3GB. Está sendo mais rápido recriar a MV 
do que
> fazer um fast refresh. Será que estou comendo bola em alguma coisa? 
Os logs
> também foram criados em cima das duas tabelas.
> 
>  
> 
> Segue o comando que estou usando para criar
> 
>  
> 
> A versão do oracle é 8.1.7.4 em Solaris
> 
>  
> 
> CREATE MATERIALIZED VIEW CADSUS.TB_CONSULTA_USUARIO
> PCTFREE 10
> PCTUSED 40
> MAXTRANS 255
> STORAGE(INITIAL 128M)
> TABLESPACE TD_CADSUS_02
> LOGGING
> PARALLEL 4
> BUILD IMMEDIATE
> USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 
4096K NEXT
> 4096K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TABLESPACE
> TI_CADSUS_02
> REFRESH FAST
> START WITH TO_DATE('25-SEP-2006 11:38 AM','DD-MON- HH12:MI PM')
> NEXT SYSDATE + 2/24
> AS SELECT
>  CADSUS.TM_CONTROLE_USUARIO.ROWID C1,
>  CADSUS.TM_USUARIO.ROWID C2,
>  CADSUS.TM_CONTROLE_USUARIO.CO_SEQ_USU co_seq_usu_cont ,
>  CADSUS.TM_CONTROLE_USUARIO.DT_OPERACAO ,
>  CADSUS.TM_CONTROLE_USUARIO.ST_CONTROLE ,
>  CADSUS.TM_USUARIO.CO_MUNICIPIO_RESIDENCIA ,
>  CADSUS.TM_USUARIO.CO_SEQ_USU ,
>  CADSUS.TM_USUARIO.CO_SEXO ,
>  CADSUS.TM_USUARIO.CO_USUARIO ,
>  CADSUS.TM_USUARIO.DT_NASCIMENTO ,
>  CADSUS.TM_USUARIO.NO_MAE ,
>  CADSUS.TM_USUARIO.NO_MAE_FONETIZADO ,
>  CADSUS.TM_USUARIO.NO_PAI ,
>  CADSUS.TM_USUARIO.NO_PAI_FONETIZADO ,
>  CADSUS.TM_USUARIO.NO_USUARIO ,
>  CADSUS.TM_USUARIO.NO_USUARIO_FONETIZADO
>  FROM CADSUS.tm_usuario, CADSUS.TM_CONTROLE_USUARIO
>  WHERE tm_usuario.co_seq_usu = TM_CONTROLE_USUARIO.co_seq_usu
> 
>  
> 
> Obrigado desde já pelo help.
> 
>  
> 
>  
> 
>  
> 
> Atenciosamente, 
> Nelson Cartaxo
> DBA ORACLE 
> 
> 
> 
>  
> 
>  
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>









--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 





[oracle_br] Re: Duvida basica - como conectar ao banco

2006-09-27 Por tôpico jlchiappa
Colega, se vc não achou vc deve ter pesquisado nos manuas errados,
essa info está no manual "Oracle Database Administrator's Guide for
Windows", e em resumo o que ele diz é o seguinte : sim, se o serviço
está parado vc o deve startar antes de startar o banco, vc pode
startar o serviço ou pelo Painel de Controle, ou com o utilitário
oradim ou com o comando windows apropriado, que se chama netstart.
Notar também que além do ORACLE_SID normalmente se indica também o
ORACLE_HOME e o PATH ao se trabalhar com o banco manualmente, o seu
procedimento portanto seria :


set ORACLE_SID=siddobanco
set ORACLE_HOME=D:\pastadooraclehome
cd %ORACLE_HOME%\bin

aí startar o serviço, se for com netstart seria :

net start OracleServicenomedosid
sqlplus /nolog
connect sys/senhadele as sysdba
startup

[]s


 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "Smashed Dreams" <[EMAIL PROTECTED]>
escreveu
>
> Ola a todos
> 
> To com uma duvida basica... Tenho o Oracle 10g release 2 instalado 
> num Windows XP, tudo funcionando normal quando eu coloco o banco no 
> ar atraves do servico correspondente.
> 
> Porem, para efeito de teste, gostaria de colocar o banco no 
> ar "manualmente", i.e., conectando no sqlplus e dando o comando 
> startup, mas nao estou conseguindo. Estou fazendo o seguinte:
> 
> 
> C:\oracle\product\10.1.0\Db_1\BIN>set oracle_sid=orcl
> 
> C:\oracle\product\10.1.0\Db_1\BIN>sqlplus.exe /nolog
> 
> SQL*Plus: Release 10.1.0.2.0 - Production on Wed Sep 27 20:19:05 2006
> 
> Copyright (c) 1982, 2004, Oracle.  All rights reserved.
> 
> SQL> connect sys/senha as sysdba
> ERROR:
> ORA-12560: TNS:protocol adapter error
> 
> 
> Como isso funciona no windows? Preciso startar o servico pra acessar 
> a instancia? Tem como startar o servico sem colocar o banco no ar?
> 
> Pesquisei nos manuais, mas nao consegui encontrar a resposta. 
> Qualquer ajuda sera bem vinda!!
> 
> Obrigado
> /lc
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 





[oracle_br] Re: Duvida sobre roles

2006-09-21 Por tôpico am_balielo
Muito obrigado por ter esclarecido minha dúvida.

--- Em oracle_br@yahoogrupos.com.br, Oscar Wilman Costa Piriz 
<[EMAIL PROTECTED]> escreveu
>
> Boa tarde.
> 
>   Apagando a ROLE os gransts se apagam junto, ou seja se você criar 
a ROLE novamente terá que dar novos acessos a ele, iguais ou 
diferentes.
> 
>   Espero ter te ajudado.
> 
>   Abraços.
>   Oscar.
> 
> am_balielo <[EMAIL PROTECTED]> escreveu:Boa tarde
>  
>Estou utilizando roles p/ dar permissão a um grupo de usuarios 
>  acessar a determinadas tabelas do sistema. O problema meu é que 
>  precisarei retirar as permissões desta roles.
>Gostaria de saber se eu dropar a roles e criar ela de novo eu 
consigo 
>  criar novas permissões diferente das que existiam antes, ou eu 
terei 
>  que executar o comando revoke em todas as tabelas que a roles 
acessa.
>  
>Alguém poderia tirar está duvida minha.
>  
>Desde já meu muito obrigado.
>Atenciosamente Alessandro.







--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 





[oracle_br] Re: Duvida Extent Management X Segment Space Management????

2006-09-13 Por tôpico jlchiappa
Ok, as dicas dele sobre diferença na qtdade de blocos alocados ao se 
usar ASSM está logo nos primeiros capítulos, acho que no segundo ou 
no terceiro...

[]s

 Chiappa

--- Em oracle_br@yahoogrupos.com.br, Welvis Douglas Silva Moreto 
<[EMAIL PROTECTED]> escreveu
>
> hehehe, eu tenho esse livro.
> 
> mas valeu pela dica.
> 
> --- jlchiappa <[EMAIL PROTECTED]> escreveu:
> 
> > É o mais recente dele, o "Cost Based Oracle:
> > Fundamentals", a home
> > page do livro é
> >
> http://www.jlcomp.demon.co.uk/cbo_book/ind_book.html.
> > É um livro muito bom, mas muito detalhado, realmente
> > não é de forma
> > alguma um guia de referência rápido, eu estou
> > navegando bm lenta
> > por ele
> > 
> > []s
> > 
> >  Chiappa
> > --- Em oracle_br@yahoogrupos.com.br, Welvis Douglas
> > Silva Moreto
> > <[EMAIL PROTECTED]> escreveu
> > >
> > > Chiappa qual o nome do Livro do Jonathan Lewis 
> > que
> > > voce está lendo??
> > > 
> > > ha muito obrigado pela ajuda vlw,
> > > 
> > > att
> > > 
> > > Welvis Douglas
> > > 
> > > 
> > > --- jlchiappa <[EMAIL PROTECTED]> escreveu:
> > > 
> > > > Tá explicado, OCP (e OCA, claro) é uma coisa, e
> > a
> > > > vida real é outra, 
> > > > é assim mesmo, ao estudar pra OCP não tem
> > conversa,
> > > > vc tem MESMO que 
> > > > decorar & engolir um monte de info que na
> > prática
> > > > real nem sempre é 
> > > > verdadeira e recomendável... Sem mais o que, pra
> > > > estudar pra OCP é 
> > > > assim mesmo.
> > > > 
> > > > []s
> > > > 
> > > >  Chiappa
> > > > 
> > > > --- Em oracle_br@yahoogrupos.com.br, Welvis
> > Douglas
> > > > Silva Moreto 
> > > > <[EMAIL PROTECTED]> escreveu
> > > > >
> > > > > Chiappa, segue o trecho que coloquei no emal
> > > > passado
> > > > > do livro que estou lendo, é um livro ficado
> > para
> > > > > certificação OCA 10G, o livro é o 
> > > > > 
> > > > > Sybex - OCA Oracle 10g Administration I Study
> > > > Guide 
> > > > > 
> > > > > acho que tem lá no amazom.com
> > > > > 
> > > > > Choosing Extent Management
> > > > > You can use tablespaces with either local
> > extent
> > > > > management or the older technique of
> > dictionary
> > > > > extent management. With dictionary extent
> > > > management,
> > > > > the database tracks free and
> > > > > used extents in the data dictionary, changing
> > the
> > > > FET$
> > > > > and UET$ tables with recursive SQL. With
> > > > > local extent management, the database tracks
> > > > extents
> > > > > through the use of bitmaps, eliminating
> > > > > the recursive SQL. Local extent management is
> > the
> > > > > default if not specified and is generally the
> > > > > preferred technique.
> > > > > With locally managed tablespaces, you have two
> > > > options
> > > > > for how extents are allocated:
> > > > > UNIFORM or AUTOALLOCATE. The UNIFORM option
> > tells
> > > > the
> > > > > database to allocate and deallocate
> > > > > extents in the tablespace with the same
> > unvarying
> > > > size
> > > > > that you can specify or let extents default
> > > > > to 1MB. UNIFORM is the default for temporary
> > > > > tablespaces and cannot be specified for undo
> > > > > tablespaces. To create consistent 100MB
> > extents,
> > > > use
> > > > > the clause EXTENT MANAGEMENT LOCAL
> > > > > UNIFORM SIZE 100M in the CREATE TABLESPACE
> > > > statement.
> > > > > Here is an example:
> > > > > CREATE TABLESPACE hist2004apr
> > > > > DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE
> > 25G
> > > > > EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100M;
> > > > > AUTOALLOCATE, on the other hand, tells the
> > > > database to
> > > > > vary the size of extents for each segment.
> > > > > For example, on Windows and Linux with 8KB
> > data
> > > > > blocks, each segment starts out with
> > > > > 140 Chapter 3  Database Storage and Schema
> > > > Objects
> > > > > 64KB extents for the first 16 extents, and
> > then
> > > > > extents increase in size to 1MB for the next
> > 63
> > > > > extents. The size then increases to 8MB for
> > the
> > > > next
> > > > > 120 extents, then 64MB, and so on as the
> > > > > segment grows. This algorithm allows small
> > > > segments to
> > > > > remain small and large segments to
> > > > > grow without gaining too many extents.
> > > > AUTOALLOCATE is
> > > > > best used for a general-purpose mixture
> > > > > of small and large tables. Here is an example
> > of
> > > > > creating a tablespace using AUTOALLOCATE:
> > > > > CREATE TABLESPACE hist2004apr
> > > > > DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE
> > 25G
> > > > > EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
> > > > > You can convert a tablespace from dictionary
> > > > extent
> > > > > management to local extent management
> > > > > and back with the Oracle-supplied PL/SQL
> > package
> > > > > DBMS_SPACE_ADMIN. The SYSTEM
> > > > > tablespace and any temporary tablespaces,
> > however,
> > > > > cannot be converted from local to the
> > > > > older style dictionary management.
> > > > > 
> > > > > Choosing Segment Space Man

Re: [oracle_br] Re: Duvida Extent Management X Segment Space Management????

2006-09-13 Por tôpico Welvis Douglas Silva Moreto
hehehe, eu tenho esse livro.

mas valeu pela dica.

--- jlchiappa <[EMAIL PROTECTED]> escreveu:

> É o mais recente dele, o "Cost Based Oracle:
> Fundamentals", a home
> page do livro é
>
http://www.jlcomp.demon.co.uk/cbo_book/ind_book.html.
> É um livro muito bom, mas muito detalhado, realmente
> não é de forma
> alguma um guia de referência rápido, eu estou
> navegando bm lenta
> por ele
> 
> []s
> 
>  Chiappa
> --- Em oracle_br@yahoogrupos.com.br, Welvis Douglas
> Silva Moreto
> <[EMAIL PROTECTED]> escreveu
> >
> > Chiappa qual o nome do Livro do Jonathan Lewis 
> que
> > voce está lendo??
> > 
> > ha muito obrigado pela ajuda vlw,
> > 
> > att
> > 
> > Welvis Douglas
> > 
> > 
> > --- jlchiappa <[EMAIL PROTECTED]> escreveu:
> > 
> > > Tá explicado, OCP (e OCA, claro) é uma coisa, e
> a
> > > vida real é outra, 
> > > é assim mesmo, ao estudar pra OCP não tem
> conversa,
> > > vc tem MESMO que 
> > > decorar & engolir um monte de info que na
> prática
> > > real nem sempre é 
> > > verdadeira e recomendável... Sem mais o que, pra
> > > estudar pra OCP é 
> > > assim mesmo.
> > > 
> > > []s
> > > 
> > >  Chiappa
> > > 
> > > --- Em oracle_br@yahoogrupos.com.br, Welvis
> Douglas
> > > Silva Moreto 
> > > <[EMAIL PROTECTED]> escreveu
> > > >
> > > > Chiappa, segue o trecho que coloquei no emal
> > > passado
> > > > do livro que estou lendo, é um livro ficado
> para
> > > > certificação OCA 10G, o livro é o 
> > > > 
> > > > Sybex - OCA Oracle 10g Administration I Study
> > > Guide 
> > > > 
> > > > acho que tem lá no amazom.com
> > > > 
> > > > Choosing Extent Management
> > > > You can use tablespaces with either local
> extent
> > > > management or the older technique of
> dictionary
> > > > extent management. With dictionary extent
> > > management,
> > > > the database tracks free and
> > > > used extents in the data dictionary, changing
> the
> > > FET$
> > > > and UET$ tables with recursive SQL. With
> > > > local extent management, the database tracks
> > > extents
> > > > through the use of bitmaps, eliminating
> > > > the recursive SQL. Local extent management is
> the
> > > > default if not specified and is generally the
> > > > preferred technique.
> > > > With locally managed tablespaces, you have two
> > > options
> > > > for how extents are allocated:
> > > > UNIFORM or AUTOALLOCATE. The UNIFORM option
> tells
> > > the
> > > > database to allocate and deallocate
> > > > extents in the tablespace with the same
> unvarying
> > > size
> > > > that you can specify or let extents default
> > > > to 1MB. UNIFORM is the default for temporary
> > > > tablespaces and cannot be specified for undo
> > > > tablespaces. To create consistent 100MB
> extents,
> > > use
> > > > the clause EXTENT MANAGEMENT LOCAL
> > > > UNIFORM SIZE 100M in the CREATE TABLESPACE
> > > statement.
> > > > Here is an example:
> > > > CREATE TABLESPACE hist2004apr
> > > > DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE
> 25G
> > > > EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100M;
> > > > AUTOALLOCATE, on the other hand, tells the
> > > database to
> > > > vary the size of extents for each segment.
> > > > For example, on Windows and Linux with 8KB
> data
> > > > blocks, each segment starts out with
> > > > 140 Chapter 3  Database Storage and Schema
> > > Objects
> > > > 64KB extents for the first 16 extents, and
> then
> > > > extents increase in size to 1MB for the next
> 63
> > > > extents. The size then increases to 8MB for
> the
> > > next
> > > > 120 extents, then 64MB, and so on as the
> > > > segment grows. This algorithm allows small
> > > segments to
> > > > remain small and large segments to
> > > > grow without gaining too many extents.
> > > AUTOALLOCATE is
> > > > best used for a general-purpose mixture
> > > > of small and large tables. Here is an example
> of
> > > > creating a tablespace using AUTOALLOCATE:
> > > > CREATE TABLESPACE hist2004apr
> > > > DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE
> 25G
> > > > EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
> > > > You can convert a tablespace from dictionary
> > > extent
> > > > management to local extent management
> > > > and back with the Oracle-supplied PL/SQL
> package
> > > > DBMS_SPACE_ADMIN. The SYSTEM
> > > > tablespace and any temporary tablespaces,
> however,
> > > > cannot be converted from local to the
> > > > older style dictionary management.
> > > > 
> > > > Choosing Segment Space Management
> > > > For tablespaces that have local extent
> management,
> > > you
> > > > can use either manual or automatic segment
> > > > space management. Manual segment space
> management
> > > > exists for backward compatibility
> > > > and uses free block lists to identify the data
> > > blocks
> > > > available for inserts together with the
> > > > parameters PCT_FREE and PCT_USED, which
> control
> > > when a
> > > > block is made available for inserts.
> > > > After each INSERT or UPDATE, the database
> compares
> > > the
> > > > remaining free space in that dat

[oracle_br] Re: Duvida Extent Management X Segment Space Management????

2006-09-12 Por tôpico jlchiappa
É o mais recente dele, o "Cost Based Oracle: Fundamentals", a home
page do livro é http://www.jlcomp.demon.co.uk/cbo_book/ind_book.html.
É um livro muito bom, mas muito detalhado, realmente não é de forma
alguma um guia de referência rápido, eu estou navegando bm lenta
por ele

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, Welvis Douglas Silva Moreto
<[EMAIL PROTECTED]> escreveu
>
> Chiappa qual o nome do Livro do Jonathan Lewis  que
> voce está lendo??
> 
> ha muito obrigado pela ajuda vlw,
> 
> att
> 
> Welvis Douglas
> 
> 
> --- jlchiappa <[EMAIL PROTECTED]> escreveu:
> 
> > Tá explicado, OCP (e OCA, claro) é uma coisa, e a
> > vida real é outra, 
> > é assim mesmo, ao estudar pra OCP não tem conversa,
> > vc tem MESMO que 
> > decorar & engolir um monte de info que na prática
> > real nem sempre é 
> > verdadeira e recomendável... Sem mais o que, pra
> > estudar pra OCP é 
> > assim mesmo.
> > 
> > []s
> > 
> >  Chiappa
> > 
> > --- Em oracle_br@yahoogrupos.com.br, Welvis Douglas
> > Silva Moreto 
> > <[EMAIL PROTECTED]> escreveu
> > >
> > > Chiappa, segue o trecho que coloquei no emal
> > passado
> > > do livro que estou lendo, é um livro ficado para
> > > certificação OCA 10G, o livro é o 
> > > 
> > > Sybex - OCA Oracle 10g Administration I Study
> > Guide 
> > > 
> > > acho que tem lá no amazom.com
> > > 
> > > Choosing Extent Management
> > > You can use tablespaces with either local extent
> > > management or the older technique of dictionary
> > > extent management. With dictionary extent
> > management,
> > > the database tracks free and
> > > used extents in the data dictionary, changing the
> > FET$
> > > and UET$ tables with recursive SQL. With
> > > local extent management, the database tracks
> > extents
> > > through the use of bitmaps, eliminating
> > > the recursive SQL. Local extent management is the
> > > default if not specified and is generally the
> > > preferred technique.
> > > With locally managed tablespaces, you have two
> > options
> > > for how extents are allocated:
> > > UNIFORM or AUTOALLOCATE. The UNIFORM option tells
> > the
> > > database to allocate and deallocate
> > > extents in the tablespace with the same unvarying
> > size
> > > that you can specify or let extents default
> > > to 1MB. UNIFORM is the default for temporary
> > > tablespaces and cannot be specified for undo
> > > tablespaces. To create consistent 100MB extents,
> > use
> > > the clause EXTENT MANAGEMENT LOCAL
> > > UNIFORM SIZE 100M in the CREATE TABLESPACE
> > statement.
> > > Here is an example:
> > > CREATE TABLESPACE hist2004apr
> > > DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
> > > EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100M;
> > > AUTOALLOCATE, on the other hand, tells the
> > database to
> > > vary the size of extents for each segment.
> > > For example, on Windows and Linux with 8KB data
> > > blocks, each segment starts out with
> > > 140 Chapter 3  Database Storage and Schema
> > Objects
> > > 64KB extents for the first 16 extents, and then
> > > extents increase in size to 1MB for the next 63
> > > extents. The size then increases to 8MB for the
> > next
> > > 120 extents, then 64MB, and so on as the
> > > segment grows. This algorithm allows small
> > segments to
> > > remain small and large segments to
> > > grow without gaining too many extents.
> > AUTOALLOCATE is
> > > best used for a general-purpose mixture
> > > of small and large tables. Here is an example of
> > > creating a tablespace using AUTOALLOCATE:
> > > CREATE TABLESPACE hist2004apr
> > > DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
> > > EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
> > > You can convert a tablespace from dictionary
> > extent
> > > management to local extent management
> > > and back with the Oracle-supplied PL/SQL package
> > > DBMS_SPACE_ADMIN. The SYSTEM
> > > tablespace and any temporary tablespaces, however,
> > > cannot be converted from local to the
> > > older style dictionary management.
> > > 
> > > Choosing Segment Space Management
> > > For tablespaces that have local extent management,
> > you
> > > can use either manual or automatic segment
> > > space management. Manual segment space management
> > > exists for backward compatibility
> > > and uses free block lists to identify the data
> > blocks
> > > available for inserts together with the
> > > parameters PCT_FREE and PCT_USED, which control
> > when a
> > > block is made available for inserts.
> > > After each INSERT or UPDATE, the database compares
> > the
> > > remaining free space in that data
> > > block with the segment's PCT_FREE setting. If the
> > data
> > > block has less than PCT_FREE free space
> > > (meaning that it is almost full), it is taken off
> > the
> > > free block list and is no longer available for
> > > inserts. The remaining free space is reserved for
> > > update operations that may increase the size of
> > > rows in that data block. After each UPDATE or
> > DELETE,
> > > the database compares

Re: [oracle_br] Re: Duvida Extent Management X Segment Space Management????

2006-09-12 Por tôpico Welvis Douglas Silva Moreto
Chiappa qual o nome do Livro do Jonathan Lewis  que
voce está lendo??

ha muito obrigado pela ajuda vlw,

att

Welvis Douglas


--- jlchiappa <[EMAIL PROTECTED]> escreveu:

> Tá explicado, OCP (e OCA, claro) é uma coisa, e a
> vida real é outra, 
> é assim mesmo, ao estudar pra OCP não tem conversa,
> vc tem MESMO que 
> decorar & engolir um monte de info que na prática
> real nem sempre é 
> verdadeira e recomendável... Sem mais o que, pra
> estudar pra OCP é 
> assim mesmo.
> 
> []s
> 
>  Chiappa
> 
> --- Em oracle_br@yahoogrupos.com.br, Welvis Douglas
> Silva Moreto 
> <[EMAIL PROTECTED]> escreveu
> >
> > Chiappa, segue o trecho que coloquei no emal
> passado
> > do livro que estou lendo, é um livro ficado para
> > certificação OCA 10G, o livro é o 
> > 
> > Sybex - OCA Oracle 10g Administration I Study
> Guide 
> > 
> > acho que tem lá no amazom.com
> > 
> > Choosing Extent Management
> > You can use tablespaces with either local extent
> > management or the older technique of dictionary
> > extent management. With dictionary extent
> management,
> > the database tracks free and
> > used extents in the data dictionary, changing the
> FET$
> > and UET$ tables with recursive SQL. With
> > local extent management, the database tracks
> extents
> > through the use of bitmaps, eliminating
> > the recursive SQL. Local extent management is the
> > default if not specified and is generally the
> > preferred technique.
> > With locally managed tablespaces, you have two
> options
> > for how extents are allocated:
> > UNIFORM or AUTOALLOCATE. The UNIFORM option tells
> the
> > database to allocate and deallocate
> > extents in the tablespace with the same unvarying
> size
> > that you can specify or let extents default
> > to 1MB. UNIFORM is the default for temporary
> > tablespaces and cannot be specified for undo
> > tablespaces. To create consistent 100MB extents,
> use
> > the clause EXTENT MANAGEMENT LOCAL
> > UNIFORM SIZE 100M in the CREATE TABLESPACE
> statement.
> > Here is an example:
> > CREATE TABLESPACE hist2004apr
> > DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
> > EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100M;
> > AUTOALLOCATE, on the other hand, tells the
> database to
> > vary the size of extents for each segment.
> > For example, on Windows and Linux with 8KB data
> > blocks, each segment starts out with
> > 140 Chapter 3  Database Storage and Schema
> Objects
> > 64KB extents for the first 16 extents, and then
> > extents increase in size to 1MB for the next 63
> > extents. The size then increases to 8MB for the
> next
> > 120 extents, then 64MB, and so on as the
> > segment grows. This algorithm allows small
> segments to
> > remain small and large segments to
> > grow without gaining too many extents.
> AUTOALLOCATE is
> > best used for a general-purpose mixture
> > of small and large tables. Here is an example of
> > creating a tablespace using AUTOALLOCATE:
> > CREATE TABLESPACE hist2004apr
> > DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
> > EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
> > You can convert a tablespace from dictionary
> extent
> > management to local extent management
> > and back with the Oracle-supplied PL/SQL package
> > DBMS_SPACE_ADMIN. The SYSTEM
> > tablespace and any temporary tablespaces, however,
> > cannot be converted from local to the
> > older style dictionary management.
> > 
> > Choosing Segment Space Management
> > For tablespaces that have local extent management,
> you
> > can use either manual or automatic segment
> > space management. Manual segment space management
> > exists for backward compatibility
> > and uses free block lists to identify the data
> blocks
> > available for inserts together with the
> > parameters PCT_FREE and PCT_USED, which control
> when a
> > block is made available for inserts.
> > After each INSERT or UPDATE, the database compares
> the
> > remaining free space in that data
> > block with the segment's PCT_FREE setting. If the
> data
> > block has less than PCT_FREE free space
> > (meaning that it is almost full), it is taken off
> the
> > free block list and is no longer available for
> > inserts. The remaining free space is reserved for
> > update operations that may increase the size of
> > rows in that data block. After each UPDATE or
> DELETE,
> > the database compares the used space in
> > that data block with that segment's PCT_USED
> setting.
> > If the data block has less than PCT_USED
> > used space, the data block is deemed empty enough
> for
> > inserts and is placed on the free block list.
> > To specify manual segment space management, use
> the
> > SEGMENT SPACE MANAGEMENT
> > MANUAL clause of the CREATE TABLESPACE statement,
> or
> > simply omit the SEGMENT SPACE
> > MANAGEMENT clause. Although Oracle strongly
> recommends
> > AUTOMATIC segment space management
> > for permanent, locally managed tablespaces, the
> > default behavior of Oracle 10g is MANUAL.
> > Here is a statement that creates a tablespace w

[oracle_br] Re: Duvida tablespace UNDO

2006-09-12 Por tôpico jlchiappa
--- Em oracle_br@yahoogrupos.com.br, "Phael" <[EMAIL PROTECTED]> escreveu
> Aqui na empresa tem uma aplicação de terceiros ...

OPA, aplicação de terceiros , antes de mais nada, favor "pedir a
benção", acionar o Suporte deles e ver se eles tem algo contra, ANTES
de fazer seja qual for alteração no banco...

> que gera um arquivo
> enorme TXT para uma fiscalização... acontece que essa rotina esta
demorando 
> muito... horas... 

cara, no bd Oracle obrigatoriamente os dados que uma query apresenta
TEM que ser consistentes com a situação em que estavam no instante em
que a query começou, portanto enquanto uma query não termina
obrigatoriamente os dados que foram mudados enquanto a query rodava
TEM que ter uma cópia anterior nos segmentos de rollback/undo, isso é
INESCAPÁVEL, então a primeira coisa é fazer com que o
fornecedor/responsável acelere o quanto mais isso, não tem o que :
quanto MAIS tempo uma query demora, MAIS tempo os dados consistentes
tem que ser mantidos em undo/rollback, e tudo tem limite... Assim, OU
vc acelera esse cara E/OU vc re-agenda as outras transações que façam
DMLs para não rodarem concorrentemente à esta query de gerar arquivo,
pois aí a query não vai precisar copiar dados para undo...

>>e a tablespace de UNDO acaba estourando ja aumentei bastante ela
> 13Gb mas assim mesmo ela estora...

13 Gb não é tão grande assim, isso é coisa de 1/8 de um HD moderno,
não me parece prum bd de Produção algo tão fora da realidade, mas
antes de pensar na questão do espaço, pergunto : veja, NÃO basta vc
ter a tablespace de undo grande, vc TEM QUE alterar o parâmetro
UNDO_RETENTION para que o mecanismo de undo automático aproveite o
espaço (vc não diz mas é undo automático que vc está usando, certo) ???

> 
> Quando ela estoura o processo é encerrado e creio eu que é feito o
rollback desse 
> procedimento pois não é liberado espaço nela(UNDO)... tem como
forçar a liberação de espaço???

** Lógico ** que é SIM liberado o espaço, mas (como já dito algumas
vezes aqui no fórum) essa liberação  NÃO  é refletida nem na
view DBA_EXTENTS nem na DBA_FREE_SPACE nem em similares, pois com UNDO
automático o banco NÃO apaga fisicamente do disco um segmento de undo
na mesma que a transação acaba, pra agilizar o procxesso ele
simplesmente MARCA que aquele segmento que a transação usava agora
está livre, e essas "marcas" vc vê é apenas na DBA_ROLLBACK_SEGS,
v$rollstat, V$UNDOSTAT, etc. Vc estava, ERRADAMENTE, querendo
consultar em disco o espaço na tablespace de undo ? se sim, NUNCA vai
funcionar, NÂO é assim que o undo automático trabalha...

> 
> Uma forma dessa procedimento não gerar tanto UNDO seria o uso de
commit é isso mesmo??

Não exatamente, a quantidade de undo gerada em si não vai diminuir se
vc der commits, o que ocorre é que SE as transações que fizeram DMLs
nos blocos sendo usados pela query comitarem vai diminuir a
necessidade da query procurar por blocos em undo, mas o que foi gerado
de undo já está gerad.

[]s

 Chiappa








--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: Duvida Extent Management X Segment Space Management????

2006-09-12 Por tôpico jlchiappa
Tá explicado, OCP (e OCA, claro) é uma coisa, e a vida real é outra, 
é assim mesmo, ao estudar pra OCP não tem conversa, vc tem MESMO que 
decorar & engolir um monte de info que na prática real nem sempre é 
verdadeira e recomendável... Sem mais o que, pra estudar pra OCP é 
assim mesmo.

[]s

 Chiappa

--- Em oracle_br@yahoogrupos.com.br, Welvis Douglas Silva Moreto 
<[EMAIL PROTECTED]> escreveu
>
> Chiappa, segue o trecho que coloquei no emal passado
> do livro que estou lendo, é um livro ficado para
> certificação OCA 10G, o livro é o 
> 
> Sybex - OCA Oracle 10g Administration I Study Guide 
> 
> acho que tem lá no amazom.com
> 
> Choosing Extent Management
> You can use tablespaces with either local extent
> management or the older technique of dictionary
> extent management. With dictionary extent management,
> the database tracks free and
> used extents in the data dictionary, changing the FET$
> and UET$ tables with recursive SQL. With
> local extent management, the database tracks extents
> through the use of bitmaps, eliminating
> the recursive SQL. Local extent management is the
> default if not specified and is generally the
> preferred technique.
> With locally managed tablespaces, you have two options
> for how extents are allocated:
> UNIFORM or AUTOALLOCATE. The UNIFORM option tells the
> database to allocate and deallocate
> extents in the tablespace with the same unvarying size
> that you can specify or let extents default
> to 1MB. UNIFORM is the default for temporary
> tablespaces and cannot be specified for undo
> tablespaces. To create consistent 100MB extents, use
> the clause EXTENT MANAGEMENT LOCAL
> UNIFORM SIZE 100M in the CREATE TABLESPACE statement.
> Here is an example:
> CREATE TABLESPACE hist2004apr
> DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
> EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100M;
> AUTOALLOCATE, on the other hand, tells the database to
> vary the size of extents for each segment.
> For example, on Windows and Linux with 8KB data
> blocks, each segment starts out with
> 140 Chapter 3  Database Storage and Schema Objects
> 64KB extents for the first 16 extents, and then
> extents increase in size to 1MB for the next 63
> extents. The size then increases to 8MB for the next
> 120 extents, then 64MB, and so on as the
> segment grows. This algorithm allows small segments to
> remain small and large segments to
> grow without gaining too many extents. AUTOALLOCATE is
> best used for a general-purpose mixture
> of small and large tables. Here is an example of
> creating a tablespace using AUTOALLOCATE:
> CREATE TABLESPACE hist2004apr
> DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
> EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
> You can convert a tablespace from dictionary extent
> management to local extent management
> and back with the Oracle-supplied PL/SQL package
> DBMS_SPACE_ADMIN. The SYSTEM
> tablespace and any temporary tablespaces, however,
> cannot be converted from local to the
> older style dictionary management.
> 
> Choosing Segment Space Management
> For tablespaces that have local extent management, you
> can use either manual or automatic segment
> space management. Manual segment space management
> exists for backward compatibility
> and uses free block lists to identify the data blocks
> available for inserts together with the
> parameters PCT_FREE and PCT_USED, which control when a
> block is made available for inserts.
> After each INSERT or UPDATE, the database compares the
> remaining free space in that data
> block with the segment's PCT_FREE setting. If the data
> block has less than PCT_FREE free space
> (meaning that it is almost full), it is taken off the
> free block list and is no longer available for
> inserts. The remaining free space is reserved for
> update operations that may increase the size of
> rows in that data block. After each UPDATE or DELETE,
> the database compares the used space in
> that data block with that segment's PCT_USED setting.
> If the data block has less than PCT_USED
> used space, the data block is deemed empty enough for
> inserts and is placed on the free block list.
> To specify manual segment space management, use the
> SEGMENT SPACE MANAGEMENT
> MANUAL clause of the CREATE TABLESPACE statement, or
> simply omit the SEGMENT SPACE
> MANAGEMENT clause. Although Oracle strongly recommends
> AUTOMATIC segment space management
> for permanent, locally managed tablespaces, the
> default behavior of Oracle 10g is MANUAL.
> Here is a statement that creates a tablespace with
> manual segment space management:
> CREATE TABLESPACE hist2004apr
> DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
> EXTENT MANAGEMENT LOCAL AUTOALLOCATE
> SEGMENT SPACE MANAGEMENT MANUAL;
> When automatic segment space management is specified,
> bitmaps are used instead of free lists to
> identify which data blocks are available for inserts.
> The parameters PCT_FREE and PCT_USED are
> ignored for segments in tablespaces with automatic
> 

Re: [oracle_br] Re: Duvida Extent Management X Segment Space Management????

2006-09-12 Por tôpico Welvis Douglas Silva Moreto
Chiappa, segue o trecho que coloquei no emal passado
do livro que estou lendo, é um livro ficado para
certificação OCA 10G, o livro é o 

Sybex - OCA Oracle 10g Administration I Study Guide 

acho que tem lá no amazom.com

Choosing Extent Management
You can use tablespaces with either local extent
management or the older technique of dictionary
extent management. With dictionary extent management,
the database tracks free and
used extents in the data dictionary, changing the FET$
and UET$ tables with recursive SQL. With
local extent management, the database tracks extents
through the use of bitmaps, eliminating
the recursive SQL. Local extent management is the
default if not specified and is generally the
preferred technique.
With locally managed tablespaces, you have two options
for how extents are allocated:
UNIFORM or AUTOALLOCATE. The UNIFORM option tells the
database to allocate and deallocate
extents in the tablespace with the same unvarying size
that you can specify or let extents default
to 1MB. UNIFORM is the default for temporary
tablespaces and cannot be specified for undo
tablespaces. To create consistent 100MB extents, use
the clause EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 100M in the CREATE TABLESPACE statement.
Here is an example:
CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100M;
AUTOALLOCATE, on the other hand, tells the database to
vary the size of extents for each segment.
For example, on Windows and Linux with 8KB data
blocks, each segment starts out with
140 Chapter 3  Database Storage and Schema Objects
64KB extents for the first 16 extents, and then
extents increase in size to 1MB for the next 63
extents. The size then increases to 8MB for the next
120 extents, then 64MB, and so on as the
segment grows. This algorithm allows small segments to
remain small and large segments to
grow without gaining too many extents. AUTOALLOCATE is
best used for a general-purpose mixture
of small and large tables. Here is an example of
creating a tablespace using AUTOALLOCATE:
CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
You can convert a tablespace from dictionary extent
management to local extent management
and back with the Oracle-supplied PL/SQL package
DBMS_SPACE_ADMIN. The SYSTEM
tablespace and any temporary tablespaces, however,
cannot be converted from local to the
older style dictionary management.

Choosing Segment Space Management
For tablespaces that have local extent management, you
can use either manual or automatic segment
space management. Manual segment space management
exists for backward compatibility
and uses free block lists to identify the data blocks
available for inserts together with the
parameters PCT_FREE and PCT_USED, which control when a
block is made available for inserts.
After each INSERT or UPDATE, the database compares the
remaining free space in that data
block with the segment’s PCT_FREE setting. If the data
block has less than PCT_FREE free space
(meaning that it is almost full), it is taken off the
free block list and is no longer available for
inserts. The remaining free space is reserved for
update operations that may increase the size of
rows in that data block. After each UPDATE or DELETE,
the database compares the used space in
that data block with that segment’s PCT_USED setting.
If the data block has less than PCT_USED
used space, the data block is deemed empty enough for
inserts and is placed on the free block list.
To specify manual segment space management, use the
SEGMENT SPACE MANAGEMENT
MANUAL clause of the CREATE TABLESPACE statement, or
simply omit the SEGMENT SPACE
MANAGEMENT clause. Although Oracle strongly recommends
AUTOMATIC segment space management
for permanent, locally managed tablespaces, the
default behavior of Oracle 10g is MANUAL.
Here is a statement that creates a tablespace with
manual segment space management:
CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;
When automatic segment space management is specified,
bitmaps are used instead of free lists to
identify which data blocks are available for inserts.
The parameters PCT_FREE and PCT_USED are
ignored for segments in tablespaces with automatic
segment space management. Automatic segment
space management is available only on tablespaces
configured for local extent management; it is not
available for temporary or system tablespaces.
Automatic segment space management performs better
and reduces your maintenance tasks, making it the
preferred technique.
Managing Tablespaces 141
To specify automatic segment space management, use the
SEGMENT SPACE MANAGEMENT
AUTO clause of the CREATE TABLESPACE statement, like
this:
CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MAN

[oracle_br] Re: Duvida Extent Management X Segment Space Management????

2006-09-12 Por tôpico jlchiappa
Cara, afirmar de cara limpa, SEM nenhuma restrição, que X é melhor, 
independente de qual aplicativo se usa, de quaisquer condições, como 
dá a entender a citação que vc faz desse tal livro, é no mínimo 
arriscado : de curiosodade, que livro é esse ??
 Bom, vamos pingar os Is aí : pro Extent Management é isso mesmo, 
pode ser UNIFORM ou AUTO. A opção de UNIFORM indica que os extents 
vão ser sempre do mesmo tamanho, PORTANTO vc a usará quando SABER que 
esse tamanho é bom e apropriado, e isso INDEPENDE em grande porção 
de "tamanho de tabela", ok ? Tranquilamente vc PODE ter uma tabela 
pequena, de alguns poucos milhares de registros que seja mas que seja 
de tamanho previsível e que vc QUEIRA obter um Full table scan o mais 
eficiente possível, E onde vc queira ter uma previsão bem exata do 
espaço que será consumindo, então num caso desses faria TODO O 
SENTIDO usar UNIFORM, confere ??  A outra opção numa tablespace LMT, 
a AUTO ou SYSTEM allocated (vc não diz mas pelo contexto tá claro que 
é LMT que vc, corretamente, está usando), realmente inicialmente cria 
primeiro extents de 64 Kb, depois nas próximas vezes que o segmento 
pedir mais espaço vai paulatinamente aumentando o tamanho dos 
extents : ela é mais indicada imho pros casos onde vc NÃO tem como 
saber nem o tamanho ótimo de extent pra favorecer I/Os nem o tamanho 
máximo/mínimo da tabela. 
 
 ==> Só para constar, a questão do tamanho do extent pega nos 
seguintes pontos :
 
 a) o I/O multiblock no Oracle é feito por extent, se vc tiver um 
extent menor do que o tamanho do seu I/O multiblock vc está tendo aí 
um uso ineficiente da sua capacidade de I/O
 
 b) um extent muito grande pode levar a desperdício de espaço, pois 
assim que vc cria um segmento (ainda sem dados!!) o bd já aloca um 
extent, então extent de vários Mbs prum segmento que vai ter tipo 
meia dúza de linhas é desperdício TOTAL de espaço
 
 Já pro ASSM (Auto Segment Space Management) realmente ele funciona 
como descrito, mas ele TEM SIM implicações e consequências, acho meio 
irresponsável tascar num livro "ah, usa ele que é melhor e mais 
fácil" sem explicar o que vc pode encontrar, vc o pode usar SE e 
apenas SE for nos casos onde as implicações não te tragam 
complicações ;) Por exemplo, preenchimento dos blocos : embora o 
algoritmo seja absolutamente não-documentado, com certeza ele deve 
mudar o preenchimento dos blocos cfrme o uso da tabela, é responsivo, 
e não há como ser pró-ativo, naquelas tabelas de históricos, coisa do 
tipo, onde vc SABE que só haverá INSERTs, e portanto quer ZERO espaço 
reservado para UPDATEs, faz todo sentido ter alocação manual e 
especificar PCTFREE 1 PCTUSED 99, ou mesmo 100% se aceitar.
  ==> Agora, coisas como acima são execeções, imho o ponto (algumas 
vezes contrário) principal do ASSM é : com espaço administrado por 
bitmap, é comum que diferentes bits apontem pra diferentes blocos, 
sobe bem a chance de vc ter diferentes INSERTs no mesmo segmento 
sendo alocados para blocos diferentes, aí é mais provável de vc ter 
(digamos) o insert do cliente 45 caindo no bloco X, o INSERT do 
cliente 46 no bloco Y, cliente 47 no bloco Z, assim por diante... E 
daí ? Daí que (cfrme o mecanismo de I/O do banco que todos nós já 
conhecemos, ou falei aqui em vão ;), o bd Oracle ** NÃO ** faz I/O de 
uma linha, mas sim de um bloco todo, no caso proposto se os clientes 
todos fosse lidos após o INSERT, se eles estivessem num só bloco só 
um bloco de dados iria pro cache, já se estiverem em nn blocos 
diferentes serão os nn blocos que vão subir pro cache, PORTANTO 
exigindo muito mais espaço no cache e PORTANTO talvez até num caso 
extremo tendo que tirar outros blocos de outros segmentos do cache 
pra fazer espaço... O Jonathan Lewis fala disso no livro de CBO mais 
recente dele, que estou lendo, por isso q fiquei sabendo desse cara, 
já que no meu banco só uso tablespaces non-ASSM . Fica ESPERTO com 
isso, teste BEM antes de sair usando...
  
  []s
  
   Chiappa
   
--- Em oracle_br@yahoogrupos.com.br, Welvis Douglas Silva Moreto 
<[EMAIL PROTECTED]> escreveu
>
> Olá pessial, estou com algumas duvida e não seu quando
> vou utilizar isso algume podeira me ajudar dizendo se
> entendi correto e me explicar se possivel quando devo
> utilizar.
> 
> Extent Management
> 
>UNIFORM - Vai alocar de desalocar extents do
> mesmo tamenho. Se não for especificado na criação vai
> ser de 1M.
>AUTOALLOCATE - Os tamanhos dos Extents são
> diferentes é recomendado ou melhor utilizado para
> proposito geral "tabelas grandes e pequenas".
> 
> Segment Space Management
> MANUAL - Usa Free List Bloks para inserir
> junto com os parametos pct_free e pct_used, no caso de
> Update e Delete usa o pct_used.
> AUTO - Usa Bitmaps para gerenciar a free list
> para ver qual qual bloco é valido para insert. Os
> parametros pct_free e pct_used são ignorados, e não
> são validos para temporary tablespaces ou system
> tablespaces Automatic segment space man

Re: [oracle_br] Re: Duvida Triggers no Forms 6i

2006-08-30 Por tôpico Rodrigo Lether
Era isso mesmo.
  Valeu...

jlchiappa <[EMAIL PROTECTED]> escreveu:
  Vc quer trigger que dispare logo após que cada registro vier da 
consulta ? Se sim é a post_query (logicamente a nível de BLOCO, já 
que é o BLOCO que faz a consulta), ela dispara uma vez pra cada 
registro sendo trazido pela query.

[]s

Chiappa
--- Em oracle_br@yahoogrupos.com.br, Rodrigo Lether <[EMAIL PROTECTED]> 
escreveu
>
> Boa Tarde Mestres.
>   Estou com a seguinte duvida.
>   Ao entrar em um bloco  na trigger WHEN_NEW_BLOCK_INSTANCE eu dou 
um execute_query para me trazer as informações deste bloco "Tabela" 
porem estou querendo trocar a cor de fundo do registro quando um 
detreminado campo for negativo.
>   Estou tentando utilizar o seguinte comando: 
> Set_Item_Instance_Property('BLOCO.CAMPO',CURRENT_RECORD, 
VISUAL_ATTRIBUTE,'Visual_Attribute');
>
>   Só que eu não estou acertando a trigger para que eu consiga 
verificar registro-a-registro quando eu faço o execute_query no 
WHEN_NEW_BLOCK_INSTANCE.
>
>   Alguem tem alguma ideia ???
>
>   Obrigado,
>   Rodrigo
> 
>  
> -
>  Yahoo! Search
>  Música para ver e ouvir: You're Beautiful, do James Blunt
> 
> [As partes desta mensagem que não continham texto foram removidas]
>





 


-
 Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. 
Registre seu aparelho agora!

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



--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 





[oracle_br] Re: Duvida Triggers no Forms 6i

2006-08-30 Por tôpico jlchiappa
Vc quer trigger que dispare logo após que cada registro vier da 
consulta ? Se sim é a post_query (logicamente a nível de BLOCO, já 
que é o BLOCO que faz a consulta), ela dispara uma vez pra cada 
registro sendo trazido pela query.

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, Rodrigo Lether <[EMAIL PROTECTED]> 
escreveu
>
> Boa Tarde Mestres.
>   Estou com a seguinte duvida.
>   Ao entrar em um bloco  na trigger WHEN_NEW_BLOCK_INSTANCE eu dou 
um execute_query para me trazer as informações deste bloco "Tabela" 
porem estou querendo trocar a cor de fundo do registro quando um 
detreminado campo for negativo.
>   Estou tentando utilizar o seguinte comando: 
> Set_Item_Instance_Property('BLOCO.CAMPO',CURRENT_RECORD, 
VISUAL_ATTRIBUTE,'Visual_Attribute');
>
>   Só que eu não estou acertando a trigger para que eu consiga 
verificar registro-a-registro quando eu faço o execute_query no 
WHEN_NEW_BLOCK_INSTANCE.
>
>   Alguem tem alguma ideia ???
>
>   Obrigado,
>   Rodrigo
> 
>   
> -
>  Yahoo! Search
>  Música para ver e ouvir: You're Beautiful, do James Blunt
> 
> [As partes desta mensagem que não continham texto foram removidas]
>







--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 





Re: [oracle_br] Re: duvida com arquivos de tablespace...

2006-08-24 Por tôpico Marco Antonio
Vlw Chiappa,  foi uma tentativa de resolver mais acho que nao tem outro
jeito ne...

Muito Obrigado...

Marco.


Em 24/08/06, jlchiappa <[EMAIL PROTECTED]> escreveu:
>
>  Entendi a idéia, mas vc não a conseguirá implementar dessa maneira :
> os objetos todos que ocupam espaço num bd Oracle (tabelas, índices,
> cluster, etc) são associados a uma TABLESPACE, vc não tem como os
> associar a um dado datafile. O que vc teria que fazer é criar novas
> tablespaces com novos datafiles nos discos/locais  desejados, e mover
> os objetos mais intensamente usados para essas novas tablespaces. O
> ruim é que na v7 vc não tem o MOVE, então terás que
> exportar/dropar/criar na nova tablespace  e depois re-importar os
> dados, é trabalhoso mas se é o que vc precisa, é isso.
>
>
> []s
>
> Chiappa
>
> --- Em oracle_br@yahoogrupos.com.br, "Marco Antonio"
> <[EMAIL PROTECTED]> escreveu
> >
> > Obrigado eu ja estava procurando com um select similar, a verdade eu
> > estou tratando de fazer o seguinte:
> >
> > Eu tenho uma tablespace que contem 03 arquivos.  para o 1er arquivo
> > amostra muita atividade de IO sobre o disco.
> > Minha idea foi a seguinte, tratar de mover os objetos mais usados
> para
> > otro arquivo da tablespace com menor uso.
> >
> > da para entender??   desculpe meu portunhol...
> >
> > Marco.
> >
> >
> > Em 24/08/06, jlchiappa<[EMAIL PROTECTED]> escreveu:
>
> > >
> > >  v7, uau, isso sim é que é arqueologia aplicada, foi a versão em
> que
> > >  eu "afiei as garras" l atrás, desenvolvendo em Forms, bons
> > >  tempos... Bom, iirc na v7 vc não tem o relative fileno, então
> teria
> > >  que ser feito pela DBA_EXTENTS pra pegar o FILE_ID e se desejado
> > >  joineando com DBA_DATA_FILES pra pegar no nome do datafile,
> tipo :
> > >
> > >  select * from dba_extents
> > >  where file_id = (select file_id from dba_data_files where
> > >  file_name='data_03.dbf');
> > >
> > >
> > >  e é claro, isso te dá a lista dos objetos ** CONTIDOS ** no
> > >  filesystem data_03.dbf, o que vc tinha pedido, "objetos que **
> contem
> > >  ** o arquivo data_03.dbf" não faz muito sentido.
> > >
> > >  []s
> > >
> > >  Chiappa
> > >
> > >  --- Em oracle_br@yahoogrupos.com.br, "Marco Antonio"
> > >  <[EMAIL PROTECTED]> escreveu
> > >
> > >  >
> > >  > Muito Obrigado,  pero acho que nao serve para mim.
> > >  >
> > >  > desculpe squeci de falar que e versao 7 do oracle...
> > >  >
> > >  > Muito obrigado Marcio.
> > >  >
> > >  >
> > >  > 2006/8/24, Marcio Portes <[EMAIL PROTECTED]>:
> > >
> > >  > > [EMAIL PROTECTED]> create tablespace teste_tbs
> > >  datafile '/tmp/df01.dbf'
> > >  > > size 5m;
> > >  > >
> > >  > > Tablespace created.
> > >  > >
> > >  > > [EMAIL PROTECTED]> alter tablespace teste_tbs add
> > >  datafile '/tmp/df02.dbf'
> > >  > > size 5m;
> > >  > >
> > >  > > Tablespace altered.
> > >  > >
> > >  > > [EMAIL PROTECTED]> create table t ( x int ) tablespace
> teste_tbs;
> > >  > >
> > >  > > Table created.
> > >  > >
> > >  > > [EMAIL PROTECTED]> insert into t select rownum from
> all_users;
> > >  > >
> > >  > > 27 rows created.
> > >  > >
> > >  > > [EMAIL PROTECTED]> commit;
> > >  > >
> > >  > > Commit complete.
> > >  > >
> > >  > > [EMAIL PROTECTED]>
> > >  > > [EMAIL PROTECTED]> select file_name, segment_name,
> segment_type
> > >  > >   2from dba_segments s, dba_data_files df
> > >  > >   3   where s.relative_fno = df.relative_fno
> > >  > >   4 and owner = 'OPS$MARCIO'
> > >  > >   5 and segment_name = 'T'
> > >  > >   6  /
> > >  > >
> > >  > > FILE_NAME  SEGMENT_NAME
> > >  SEGMENT_TYPE
> > >  > > -- --
> > >  > > --
> > >  > > /tmp/df01.dbf  T
> > >  TABLE
> > >  > >
> > >  > > 1 row selected.
> > >  > >
> > >  > >
> > >  > > On 8/23/06, marcoortiz2002 <[EMAIL PROTECTED]> wrote:
> > >  > > >
> > >  > > > Boa tarde a todos,
> > >  > > >
> > >  > > > Fique com uma duvida talvez algueim tenha a resposta ao
> > >  seguinte:
> > >  > > >
> > >  > > > Exemplo:
> > >  > > > Tenho uma tablespace com nome DATA01 e contem 03 arquivos
> com
> > >  nome
> > >  > > > data_01.dbf, data_02.dbf, data_03.dbf…
> > >  > > >
> > >  > > > Minha pregunta e:  tem como eu fazer um display dos
> objetos que
> > >  contem
> > >  > > > o arquivo data_03.dbf ?
> > >  > > >
> > >  > > >
> > >  > > > Muito Obrigado….
> > >  > > >
> > >  > > >
> > >  > > >
> > >  > > >
> > >  > > >
> > >  > > >
> > >  > >
> > >  > >
> > >  > >
> > >  > > --
> > >  > > Marcio Portes
> > >  > > Material Tecnico em Portugues - http://mportes.blogspot.com
> > >  > > Practical Learning Oracle -
> > >  > >
> > > http://mportes.blogspot.com/2006/02/practical-learning-oracle.html
> > >  > >
> > >  > >
> > >  > > [As partes desta mensagem que não continham texto foram
> removidas]
> > >  > >
> > >  > >
> > >  > >
> > >  > >
> > > --
> > >  --

[oracle_br] Re: duvida com arquivos de tablespace...

2006-08-24 Por tôpico jlchiappa
Entendi a idéia, mas vc não a conseguirá implementar dessa maneira : 
os objetos todos que ocupam espaço num bd Oracle (tabelas, índices, 
cluster, etc) são associados a uma TABLESPACE, vc não tem como os 
associar a um dado datafile. O que vc teria que fazer é criar novas 
tablespaces com novos datafiles nos discos/locais  desejados, e mover 
os objetos mais intensamente usados para essas novas tablespaces. O 
ruim é que na v7 vc não tem o MOVE, então terás que 
exportar/dropar/criar na nova tablespace  e depois re-importar os 
dados, é trabalhoso mas se é o que vc precisa, é isso.

[]s

 Chiappa

--- Em oracle_br@yahoogrupos.com.br, "Marco Antonio" 
<[EMAIL PROTECTED]> escreveu
>
> Obrigado eu ja estava procurando com um select similar, a verdade eu
> estou tratando de fazer o seguinte:
> 
> Eu tenho uma tablespace que contem 03 arquivos.  para o 1er arquivo
> amostra muita atividade de IO sobre o disco.
> Minha idea foi a seguinte, tratar de mover os objetos mais usados 
para
> otro arquivo da tablespace com menor uso.
> 
> da para entender??   desculpe meu portunhol...
> 
> Marco.
> 
> 
> Em 24/08/06, jlchiappa<[EMAIL PROTECTED]> escreveu:
> >
> >  v7, uau, isso sim é que é arqueologia aplicada, foi a versão em 
que
> >  eu "afiei as garras" l atrás, desenvolvendo em Forms, bons
> >  tempos... Bom, iirc na v7 vc não tem o relative fileno, então 
teria
> >  que ser feito pela DBA_EXTENTS pra pegar o FILE_ID e se desejado
> >  joineando com DBA_DATA_FILES pra pegar no nome do datafile, 
tipo :
> >
> >  select * from dba_extents
> >  where file_id = (select file_id from dba_data_files where
> >  file_name='data_03.dbf');
> >
> >
> >  e é claro, isso te dá a lista dos objetos ** CONTIDOS ** no
> >  filesystem data_03.dbf, o que vc tinha pedido, "objetos que ** 
contem
> >  ** o arquivo data_03.dbf" não faz muito sentido.
> >
> >  []s
> >
> >  Chiappa
> >
> >  --- Em oracle_br@yahoogrupos.com.br, "Marco Antonio"
> >  <[EMAIL PROTECTED]> escreveu
> >
> >  >
> >  > Muito Obrigado,  pero acho que nao serve para mim.
> >  >
> >  > desculpe squeci de falar que e versao 7 do oracle...
> >  >
> >  > Muito obrigado Marcio.
> >  >
> >  >
> >  > 2006/8/24, Marcio Portes <[EMAIL PROTECTED]>:
> >
> >  > > [EMAIL PROTECTED]> create tablespace teste_tbs
> >  datafile '/tmp/df01.dbf'
> >  > > size 5m;
> >  > >
> >  > > Tablespace created.
> >  > >
> >  > > [EMAIL PROTECTED]> alter tablespace teste_tbs add
> >  datafile '/tmp/df02.dbf'
> >  > > size 5m;
> >  > >
> >  > > Tablespace altered.
> >  > >
> >  > > [EMAIL PROTECTED]> create table t ( x int ) tablespace 
teste_tbs;
> >  > >
> >  > > Table created.
> >  > >
> >  > > [EMAIL PROTECTED]> insert into t select rownum from 
all_users;
> >  > >
> >  > > 27 rows created.
> >  > >
> >  > > [EMAIL PROTECTED]> commit;
> >  > >
> >  > > Commit complete.
> >  > >
> >  > > [EMAIL PROTECTED]>
> >  > > [EMAIL PROTECTED]> select file_name, segment_name, 
segment_type
> >  > >   2from dba_segments s, dba_data_files df
> >  > >   3   where s.relative_fno = df.relative_fno
> >  > >   4 and owner = 'OPS$MARCIO'
> >  > >   5 and segment_name = 'T'
> >  > >   6  /
> >  > >
> >  > > FILE_NAME  SEGMENT_NAME
> >  SEGMENT_TYPE
> >  > > -- --
> >  > > --
> >  > > /tmp/df01.dbf  T
> >  TABLE
> >  > >
> >  > > 1 row selected.
> >  > >
> >  > >
> >  > > On 8/23/06, marcoortiz2002 <[EMAIL PROTECTED]> wrote:
> >  > > >
> >  > > > Boa tarde a todos,
> >  > > >
> >  > > > Fique com uma duvida talvez algueim tenha a resposta ao
> >  seguinte:
> >  > > >
> >  > > > Exemplo:
> >  > > > Tenho uma tablespace com nome DATA01 e contem 03 arquivos 
com
> >  nome
> >  > > > data_01.dbf, data_02.dbf, data_03.dbf…
> >  > > >
> >  > > > Minha pregunta e:  tem como eu fazer um display dos 
objetos que
> >  contem
> >  > > > o arquivo data_03.dbf ?
> >  > > >
> >  > > >
> >  > > > Muito Obrigado….
> >  > > >
> >  > > >
> >  > > >
> >  > > >
> >  > > >
> >  > > >
> >  > >
> >  > >
> >  > >
> >  > > --
> >  > > Marcio Portes
> >  > > Material Tecnico em Portugues - http://mportes.blogspot.com
> >  > > Practical Learning Oracle -
> >  > >
> > http://mportes.blogspot.com/2006/02/practical-learning-oracle.html
> >  > >
> >  > >
> >  > > [As partes desta mensagem que não continham texto foram 
removidas]
> >  > >
> >  > >
> >  > >
> >  > >
> > --
> >  
> >  > > Atenção! As mensagens deste grupo são de acesso público e de
> >  inteira responsabilidade de seus remetentes.
> >  > > Acesse:
> > http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> >  > >
> > --
> >  
> > __
> >  > >
> >  > > O

Re: [oracle_br] Re: duvida com arquivos de tablespace...

2006-08-24 Por tôpico Marco Antonio
Obrigado eu ja estava procurando com um select similar, a verdade eu
estou tratando de fazer o seguinte:

Eu tenho uma tablespace que contem 03 arquivos.  para o 1er arquivo
amostra muita atividade de IO sobre o disco.
Minha idea foi a seguinte, tratar de mover os objetos mais usados para
otro arquivo da tablespace com menor uso.

da para entender??   desculpe meu portunhol...

Marco.


Em 24/08/06, jlchiappa<[EMAIL PROTECTED]> escreveu:
>
>  v7, uau, isso sim é que é arqueologia aplicada, foi a versão em que
>  eu "afiei as garras" l atrás, desenvolvendo em Forms, bons
>  tempos... Bom, iirc na v7 vc não tem o relative fileno, então teria
>  que ser feito pela DBA_EXTENTS pra pegar o FILE_ID e se desejado
>  joineando com DBA_DATA_FILES pra pegar no nome do datafile, tipo :
>
>  select * from dba_extents
>  where file_id = (select file_id from dba_data_files where
>  file_name='data_03.dbf');
>
>
>  e é claro, isso te dá a lista dos objetos ** CONTIDOS ** no
>  filesystem data_03.dbf, o que vc tinha pedido, "objetos que ** contem
>  ** o arquivo data_03.dbf" não faz muito sentido.
>
>  []s
>
>  Chiappa
>
>  --- Em oracle_br@yahoogrupos.com.br, "Marco Antonio"
>  <[EMAIL PROTECTED]> escreveu
>
>  >
>  > Muito Obrigado,  pero acho que nao serve para mim.
>  >
>  > desculpe squeci de falar que e versao 7 do oracle...
>  >
>  > Muito obrigado Marcio.
>  >
>  >
>  > 2006/8/24, Marcio Portes <[EMAIL PROTECTED]>:
>
>  > > [EMAIL PROTECTED]> create tablespace teste_tbs
>  datafile '/tmp/df01.dbf'
>  > > size 5m;
>  > >
>  > > Tablespace created.
>  > >
>  > > [EMAIL PROTECTED]> alter tablespace teste_tbs add
>  datafile '/tmp/df02.dbf'
>  > > size 5m;
>  > >
>  > > Tablespace altered.
>  > >
>  > > [EMAIL PROTECTED]> create table t ( x int ) tablespace teste_tbs;
>  > >
>  > > Table created.
>  > >
>  > > [EMAIL PROTECTED]> insert into t select rownum from all_users;
>  > >
>  > > 27 rows created.
>  > >
>  > > [EMAIL PROTECTED]> commit;
>  > >
>  > > Commit complete.
>  > >
>  > > [EMAIL PROTECTED]>
>  > > [EMAIL PROTECTED]> select file_name, segment_name, segment_type
>  > >   2from dba_segments s, dba_data_files df
>  > >   3   where s.relative_fno = df.relative_fno
>  > >   4 and owner = 'OPS$MARCIO'
>  > >   5 and segment_name = 'T'
>  > >   6  /
>  > >
>  > > FILE_NAME  SEGMENT_NAME
>  SEGMENT_TYPE
>  > > -- --
>  > > --
>  > > /tmp/df01.dbf  T
>  TABLE
>  > >
>  > > 1 row selected.
>  > >
>  > >
>  > > On 8/23/06, marcoortiz2002 <[EMAIL PROTECTED]> wrote:
>  > > >
>  > > > Boa tarde a todos,
>  > > >
>  > > > Fique com uma duvida talvez algueim tenha a resposta ao
>  seguinte:
>  > > >
>  > > > Exemplo:
>  > > > Tenho uma tablespace com nome DATA01 e contem 03 arquivos com
>  nome
>  > > > data_01.dbf, data_02.dbf, data_03.dbf…
>  > > >
>  > > > Minha pregunta e:  tem como eu fazer um display dos objetos que
>  contem
>  > > > o arquivo data_03.dbf ?
>  > > >
>  > > >
>  > > > Muito Obrigado….
>  > > >
>  > > >
>  > > >
>  > > >
>  > > >
>  > > >
>  > >
>  > >
>  > >
>  > > --
>  > > Marcio Portes
>  > > Material Tecnico em Portugues - http://mportes.blogspot.com
>  > > Practical Learning Oracle -
>  > >
> http://mportes.blogspot.com/2006/02/practical-learning-oracle.html
>  > >
>  > >
>  > > [As partes desta mensagem que não continham texto foram removidas]
>  > >
>  > >
>  > >
>  > >
> --
>  
>  > > Atenção! As mensagens deste grupo são de acesso público e de
>  inteira responsabilidade de seus remetentes.
>  > > Acesse:
> http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
>  > >
> --
>  
> __
>  > >
>  > > OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS
>  ORACLE VISITE: http://www.oraclebr.com.br/
>  > >
> __
>  > > Este Grupo recebe o apoio da SQL Magazine -
>  www.devmedia.com.br/sqlmagazine
>  > > Links do Yahoo! Grupos
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  >
>
>
>
>
>  


--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__

[oracle_br] Re: duvida com arquivos de tablespace...

2006-08-24 Por tôpico jlchiappa
v7, uau, isso sim é que é arqueologia aplicada, foi a versão em que 
eu "afiei as garras" l atrás, desenvolvendo em Forms, bons 
tempos... Bom, iirc na v7 vc não tem o relative fileno, então teria 
que ser feito pela DBA_EXTENTS pra pegar o FILE_ID e se desejado 
joineando com DBA_DATA_FILES pra pegar no nome do datafile, tipo :

select * from dba_extents
 where file_id = (select file_id from dba_data_files where 
file_name='data_03.dbf');
 
 
e é claro, isso te dá a lista dos objetos ** CONTIDOS ** no 
filesystem data_03.dbf, o que vc tinha pedido, "objetos que ** contem 
** o arquivo data_03.dbf" não faz muito sentido.

[]s

 Chiappa
 
--- Em oracle_br@yahoogrupos.com.br, "Marco Antonio" 
<[EMAIL PROTECTED]> escreveu
>
> Muito Obrigado,  pero acho que nao serve para mim.
> 
> desculpe squeci de falar que e versao 7 do oracle...
> 
> Muito obrigado Marcio.
> 
> 
> 2006/8/24, Marcio Portes <[EMAIL PROTECTED]>:
> > [EMAIL PROTECTED]> create tablespace teste_tbs 
datafile '/tmp/df01.dbf'
> > size 5m;
> >
> > Tablespace created.
> >
> > [EMAIL PROTECTED]> alter tablespace teste_tbs add 
datafile '/tmp/df02.dbf'
> > size 5m;
> >
> > Tablespace altered.
> >
> > [EMAIL PROTECTED]> create table t ( x int ) tablespace teste_tbs;
> >
> > Table created.
> >
> > [EMAIL PROTECTED]> insert into t select rownum from all_users;
> >
> > 27 rows created.
> >
> > [EMAIL PROTECTED]> commit;
> >
> > Commit complete.
> >
> > [EMAIL PROTECTED]>
> > [EMAIL PROTECTED]> select file_name, segment_name, segment_type
> >   2from dba_segments s, dba_data_files df
> >   3   where s.relative_fno = df.relative_fno
> >   4 and owner = 'OPS$MARCIO'
> >   5 and segment_name = 'T'
> >   6  /
> >
> > FILE_NAME  SEGMENT_NAME   
SEGMENT_TYPE
> > -- --
> > --
> > /tmp/df01.dbf  T  
TABLE
> >
> > 1 row selected.
> >
> >
> > On 8/23/06, marcoortiz2002 <[EMAIL PROTECTED]> wrote:
> > >
> > > Boa tarde a todos,
> > >
> > > Fique com uma duvida talvez algueim tenha a resposta ao 
seguinte:
> > >
> > > Exemplo:
> > > Tenho uma tablespace com nome DATA01 e contem 03 arquivos com 
nome
> > > data_01.dbf, data_02.dbf, data_03.dbf…
> > >
> > > Minha pregunta e:  tem como eu fazer um display dos objetos que 
contem
> > > o arquivo data_03.dbf ?
> > >
> > >
> > > Muito Obrigado….
> > >
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> > --
> > Marcio Portes
> > Material Tecnico em Portugues - http://mportes.blogspot.com
> > Practical Learning Oracle -
> > http://mportes.blogspot.com/2006/02/practical-learning-oracle.html
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > --

> > Atenção! As mensagens deste grupo são de acesso público e de 
inteira responsabilidade de seus remetentes.
> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> > --

__
> >
> > OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS 
ORACLE VISITE: http://www.oraclebr.com.br/
> > __
> > Este Grupo recebe o apoio da SQL Magazine - 
www.devmedia.com.br/sqlmagazine
> > Links do Yahoo! Grupos
> >
> >
> >
> >
> >
> >
> >
> >
> >
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 





[oracle_br] Re: Duvida intrigante

2006-08-21 Por tôpico spark

Roles não são habilitadas quando os subprogramas são compilados. Por 
isso que não consegues. Dá o privilégio diretamente sem o uso de roles. 
grant select any dictionary to usuario;


Jonathan


- Original Message - From: Cyro To: 
oracle_br@yahoogrupos.com.br Sent: Monday, August 21, 2006 5:10 PM
Subject: [oracle_br] Duvida intrigante


Olá a todos.

Depois de quebrar muito a cabeça achei algo estranho. Criei um usuario com
pemissão de dba, conectei com ele e em seguida crie uma funcao que faz um
select na v$paramrter ou na v$spparameter. Quando eu estou conectado com
esse usuario eu consigo normalmente dar um select nessas views, porém a
função não consegue fazer este select. Como isso é possivel se o usuário
possui a role de DBA ? Se eu conectar como sysdba e criar a função ela irá
funcionar normalmente. Alguem tem alguma ideia pq isso acontece ?

Segue o exemplo abaixo...

## Entrei como sys/sysdba e criei o usuario

CREATE USER usuario_teste IDENTIFIED BY abc123 DEFAULT TABLESPACE users;
/
GRANT dba, sysdba, connect, create session TO usuario_teste
/

## Conectei com o usuario usuario_teste e criei a função

CREATE OR REPLACE FUNCTION usuario_func1 RETURN VARCHAR2 IS


CURSOR c_vspparameter IS
  SELECT  value
  FROM   v$spparameter;

CURSOR c_vparameter IS
  SELECT  value
  FROMv$parameter;

BEGIN

   DBMS_OUTPUT.PUT_LINE(' Teste ');

END;

## Se eu der um select nas views eu consigo ver normalmente, porem a funcao
nao.


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

 -- E-mail Seguro Vetorial.net

Mensagem classificada como NÃO-SPAM. Para classificar como SPAM, 
encaminhe para [EMAIL PROTECTED]

Chave de Identificação: 49321,44ea26765289834620019




--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine  
Links do Yahoo! Grupos

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

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

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

 




RES: [oracle_br] Re: Duvida Select

2006-08-08 Por tôpico jlchiappa
Vc está concatenando no SELECT, e o operador de concatenação numa 
query com certeza NÃO tem o datatype LONG garantido... E mais, como o 
LONG é de-suportado (só existe pra compatibilidade), ele NÂO mais 
possui correção de bugs os eventuais bugs  (da própria tool cliente 
como o plus no caso) não são mais corrigidos... No meu caso :

SQL*Plus: Release 10.1.0.4.0 - Production on Ter Ago 8 12:38:51 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Conectado a:
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining 
options

[EMAIL PROTECTED]:SQL>desc tab_long
 Nome  Nulo?Tipo
 -  --
--
 C1 NUMBER
 C2 LONG

[EMAIL PROTECTED]:SQL>select c1, 'A' || c2 || 'B' from tab_long;
select c1, 'A' || c2 || 'B' from tab_long
  *
ERRO na linha 1:
ORA-00932: tipos de dados inconsistentes: esperava NUMBER obteve LONG


[EMAIL PROTECTED]:SQL>select 'A' || c2 || 'B' from tab_long;
select 'A' || c2 || 'B' from tab_long
  *
ERRO na linha 1:
ORA-00932: tipos de dados inconsistentes: esperava NUMBER obteve LONG


==> vê, o || quando vc especifica elementos de datatypes diferentes 
ele TEM QUE fazer uma conversão implícita, e totalmente erradamente 
converteu pra NUMBER... Mesmo se eu indicar o datatype :

[EMAIL PROTECTED]:SQL>/
select 'A' || to_char(c2) || 'B' from tab_long
  *
ERRO na linha 1:
ORA-00932: tipos de dados inconsistentes: esperava CHAR obteve LONG

isso demonstra que a questão é no LONG mesmo Faça um select SEM 
concatenação pra ver o que realmente vc tem gravado.

[]s

 Chiappa

--- Em oracle_br@yahoogrupos.com.br, "Genivaldo Silva" <[EMAIL PROTECTED]> 
escreveu
>
> Chiappa,
>  
> Ainda não deu certo.
> Eu ajustei essa variavel no meu SQL Plus, porem fazendo o seguinte 
select:
>  
> select 'A'||text_long||'B' from teste;
>  
> Eu obtenho o seguinte resultado:
>  
> 'A'||text_long||'B'
> --
> AB
> AB
> AB
>  
>  
> Genivaldo
> 
>   _  
> 
> De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
> nome de jlchiappa
> Enviada em: terça-feira, 8 de agosto de 2006 10:23
> Para: oracle_br@yahoogrupos.com.br
> Assunto: RES: [oracle_br] Re: Duvida Select
> 
> 
> Blz, só um detalhe adicional, q não sei se vc sabe : tipicamente 
nas 
> tools clientes há alguma configuração pra indicar o máximo de 
> caracteres retornados por um SELECT com strings longas, no caso do 
> plus é o parãmetro sqlplus LONG, cfrme :
> 
> SQL*Plus: Release 10.1.0.4.0 - Production on Ter Ago 8 10:22:20 2006
> 
> Copyright (c) 1982, 2005, Oracle.  All rights reserved.
> 
> 
> Conectado a:
> Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - 
Production
> With the Partitioning, Oracle Label Security, OLAP and Data Mining 
> options
> 
> 
> [EMAIL PROTECTED]:SQL>show long
> long 80
> 
> ==> ok, o meu plus está configurado pra mostrar 80 bytes só dos 
> datatypes string longos, vamos ver que é vero :
> 
> [EMAIL PROTECTED]:SQL>select * from tab_long;
> 
> C1
> --
> C2
> 
--
> --
>  1
> 
A#
> ##
> 
>  2
> 
B##

RES: [oracle_br] Re: Duvida Select

2006-08-08 Por tôpico Genivaldo Silva
Chiappa,
 
Ainda não deu certo.
Eu ajustei essa variavel no meu SQL Plus, porem fazendo o seguinte select:
 
select 'A'||text_long||'B' from teste;
 
Eu obtenho o seguinte resultado:
 
'A'||text_long||'B'
--
AB
AB
AB
 
 
Genivaldo

  _  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: terça-feira, 8 de agosto de 2006 10:23
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: Duvida Select


Blz, só um detalhe adicional, q não sei se vc sabe : tipicamente nas 
tools clientes há alguma configuração pra indicar o máximo de 
caracteres retornados por um SELECT com strings longas, no caso do 
plus é o parãmetro sqlplus LONG, cfrme :

SQL*Plus: Release 10.1.0.4.0 - Production on Ter Ago 8 10:22:20 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Conectado a:
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining 
options


[EMAIL PROTECTED]:SQL>show long
long 80

==> ok, o meu plus está configurado pra mostrar 80 bytes só dos 
datatypes string longos, vamos ver que é vero :

[EMAIL PROTECTED]:SQL>select * from tab_long;

C1
--
C2
--
--
 1
A#
##

 2
B#
##

==> realmente, truncou em 80 caracteres, vou mudar :

[EMAIL PROTECTED]:SQL>set long 50

==> agora vai mostrar tudo :

[EMAIL PROTECTED]:SQL>select * from tab_long;

C1
--
C2
-

RES: [oracle_br] Re: Duvida Select

2006-08-08 Por tôpico Genivaldo Silva
Ok,
 
Vou testar aqui...

  _  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: terça-feira, 8 de agosto de 2006 10:23
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: Duvida Select


Blz, só um detalhe adicional, q não sei se vc sabe : tipicamente nas 
tools clientes há alguma configuração pra indicar o máximo de 
caracteres retornados por um SELECT com strings longas, no caso do 
plus é o parãmetro sqlplus LONG, cfrme :

SQL*Plus: Release 10.1.0.4.0 - Production on Ter Ago 8 10:22:20 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Conectado a:
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining 
options


[EMAIL PROTECTED]:SQL>show long
long 80

==> ok, o meu plus está configurado pra mostrar 80 bytes só dos 
datatypes string longos, vamos ver que é vero :

[EMAIL PROTECTED]:SQL>select * from tab_long;

C1
--
C2
--
--
 1
A#
##

 2
B#
##

==> realmente, truncou em 80 caracteres, vou mudar :

[EMAIL PROTECTED]:SQL>set long 50

==> agora vai mostrar tudo :

[EMAIL PROTECTED]:SQL>select * from tab_long;

C1
--
C2
--
--

RES: [oracle_br] Re: Duvida Select

2006-08-08 Por tôpico jlchiappa
[EMAIL PROTECTED]:SQL>

==> de repente, PODE SER que a tua tool aí tenha algo do tipo...

[]s

 Chiappa
 
--- Em oracle_br@yahoogrupos.com.br, "Genivaldo Silva" <[EMAIL PROTECTED]> 
escreveu
>
>  
> Chiappa,
>  
> Foi o que fiz aqui...
> Enquanto aguardava a resposta, tentei jogar o valor em variáveis de 
depois
> manipular.
>  
> Grato pela atenção/aula!!
>  
> Genivaldo
> 
>   _  
> 
> De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
> nome de jlchiappa
> Enviada em: terça-feira, 8 de agosto de 2006 09:42
> Para: oracle_br@yahoogrupos.com.br
> Assunto: [oracle_br] Re: Duvida Select
> 
> 
> Anderson, va verdade na 10g o LONG não é mais recomendado, mas que 
o 
> datatype LONG existe e FUNCIONA é claro que sim, pense na enorme 
> quantidade de apps legadas que iam quebrar se não funcionasse... 
> Genivaldo, operações como concatenação, funcs de strings, etc, 
> funciona SIM em LONGs, mas (óbvio) dentro dos limites de strings do 
> datatype character de cada linguagem (4000 bytes na linguagem SQL, 
> cerca de 32 kb no PL/SQL), cfrme :
> 
> SQL*Plus: Release 10.1.0.4.0 - Production on Ter Ago 8 09:24:53 2006
> 
> Copyright (c) 1982, 2005, Oracle.  All rights reserved.
> 
> 
> Conectado a:
> Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - 
Production
> With the Partitioning, Oracle Label Security, OLAP and Data Mining 
> options
> 
> [EMAIL PROTECTED]:SQL>cre

RES: [oracle_br] Re: Duvida Select

2006-08-08 Por tôpico Genivaldo Silva
 
Chiappa,
 
Foi o que fiz aqui...
Enquanto aguardava a resposta, tentei jogar o valor em variáveis de depois
manipular.
 
Grato pela atenção/aula!!
 
Genivaldo

  _  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: terça-feira, 8 de agosto de 2006 09:42
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Duvida Select


Anderson, va verdade na 10g o LONG não é mais recomendado, mas que o 
datatype LONG existe e FUNCIONA é claro que sim, pense na enorme 
quantidade de apps legadas que iam quebrar se não funcionasse... 
Genivaldo, operações como concatenação, funcs de strings, etc, 
funciona SIM em LONGs, mas (óbvio) dentro dos limites de strings do 
datatype character de cada linguagem (4000 bytes na linguagem SQL, 
cerca de 32 kb no PL/SQL), cfrme :

SQL*Plus: Release 10.1.0.4.0 - Production on Ter Ago 8 09:24:53 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Conectado a:
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining 
options

[EMAIL PROTECTED]:SQL>create table TAB_LONG(c1 number, c2 long);

Tabela criada.


[EMAIL PROTECTED]:SQL>insert into TAB_LONG values(1, 'A' || lpad('*', 
3999, '#'));

1 linha criada.

==> OK, 4000 bytes é o tamanho de strings máximo pra linguagem SQL 
cfrme documentado... Vamos tentar botar mais :

[EMAIL PROTECTED]:SQL>insert into TAB_LONG values(2, 'B' || lpad('*', 
32000, '#'));
insert into TAB_LONG values(2, 'B' || lpad('*', 32000, '#'))
*
ERRO na linha 1:
ORA-01489: o resultado da concatenação de string é extenso demais

==> não podia funcionar mesmo... Vamos usar o PL/SQL :

[EMAIL PROTECTED]:SQL>DECLARE
  2 v_long long;
  3  BEGIN
  4 v_long := 'B' || lpad('*', 32000, '#');
  5insert into TAB_LONG values(2, v_long);
  6  END;
  7  /

Procedimento PL/SQL concluído com sucesso.

==> vamos tentar passar o limite do PL/SQL...

[EMAIL PROTECTED]:SQL>ed
Gravou file afiedt.buf

  1  DECLARE
  2 v_long long;
  3  BEGIN
  4 v_long := 'C' || lpad('*', 32000, '#') || lpad('&', 
32000, '@') ;
  5insert into TAB_LONG values(3, v_long);
  6* END;
[EMAIL PROTECTED]:SQL>/
DECLARE
*
ERRO na linha 1:
ORA-06502: PL/SQL: erro: buffer de string de caracteres pequeno 
demais numérico ou de valor
ORA-06512: em line 4


===> Até OFICIALMENTE na documentação, o 100% RECOMENDADO é vc passar 
a usar LOBs, que aí além de com LOBs as limitações do cacareco do 
LONG não se aplicarem, vc ainda tem a DBMS_LOB, mas se por qquer 
motivo vc for obrigado a usar LONGs, esses são os limites nesses dois 
ambientes/linguagens : pelo jeito, também está entrando em cena aí 
alguma limitação da sua tool SQL Navigator, entre em contato com o 
Fabricante dela e/ou consulte a documentação pra ver quais são... 
Programaticamente, em PL/SQL, vc tem a opção de processar LONGs 
maiores via DBMS_SQL, pesquise em http://asktom.oracle.com que vc 
acha alguns exemplos.

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br, "Anderson" <[EMAIL PROTECTED]> 
escreveu
>
> Na versão 10g não há o type LONG, apenas as variações do type LOB.
> 
> É possível fazer agumas operações de select simples nestes campos, 
> mas a manipulação destes types é feita por meio da package DBMS_LOB.
> 
> 
> 
> --- Em oracle_br@yahoogrupos.com.br, "Genivaldo Silva" 
<[EMAIL PROTECTED]> 
> escreveu
> >
> > 
> > 
> > Pessoal,
> > 
> > Tenho um banco na versão 10g (10.1.0.5.0). Gostaria de saber se 
> nessa versão
> > eu consigo fazer selects em campos do tipo LONG? Se sim, como 
> concatenar
> > valores a ele? Pois tenho uma versão do SQL Navigator 3 que 
mostra o
> > conteúdo desse campo no proprio select, enquanto a versão 5 não 
> mostra. Mas
> > quando tento "trabalhar" esse campo fazer uma concatenação, por 
> exemplo, me
> > é retornado um erro de tipos inconsistêntes (ORA-932).
> > 
> > Alguem pode me ajudar?
> > 
> > Genivaldo
> > 
> > 
> > [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 deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--___

RES: [oracle_br] Re: Duvida Select

2006-08-08 Por tôpico Genivaldo Silva
Oi, Anderson,
Grato pela atenção.
 
 
 
Esqueci de mencionar que a tabela que tem o campo LONG foi herdada do banco
9i.
Agora, eu tenho informações nessa coluna, porém não consigo listá-las num
select.
 
Isso não é possível?
 
Genivaldo
 

  _  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Anderson
Enviada em: terça-feira, 8 de agosto de 2006 09:04
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Duvida Select


Na versão 10g não há o type LONG, apenas as variações do type LOB.

É possível fazer agumas operações de select simples nestes campos, 
mas a manipulação destes types é feita por meio da package DBMS_LOB.



--- Em oracle_br@yahoogrupos.com.br, "Genivaldo Silva" <[EMAIL PROTECTED]> 
escreveu
>
> 
> 
> Pessoal,
> 
> Tenho um banco na versão 10g (10.1.0.5.0). Gostaria de saber se 
nessa versão
> eu consigo fazer selects em campos do tipo LONG? Se sim, como 
concatenar
> valores a ele? Pois tenho uma versão do SQL Navigator 3 que mostra o
> conteúdo desse campo no proprio select, enquanto a versão 5 não 
mostra. Mas
> quando tento "trabalhar" esse campo fazer uma concatenação, por 
exemplo, me
> é retornado um erro de tipos inconsistêntes (ORA-932).
> 
> Alguem pode me ajudar?
> 
> Genivaldo
> 
> 
> [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 deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

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

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

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

 





[oracle_br] Re: Duvida Select

2006-08-08 Por tôpico jlchiappa
Anderson, va verdade na 10g o LONG não é mais recomendado, mas que o 
datatype LONG existe e FUNCIONA é claro que sim, pense na enorme 
quantidade de apps legadas que iam quebrar se não funcionasse... 
Genivaldo, operações como concatenação, funcs de strings, etc, 
funciona SIM em LONGs, mas (óbvio) dentro dos limites de strings do 
datatype character de cada linguagem (4000 bytes na linguagem SQL, 
cerca de 32 kb no PL/SQL), cfrme :

SQL*Plus: Release 10.1.0.4.0 - Production on Ter Ago 8 09:24:53 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Conectado a:
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining 
options

[EMAIL PROTECTED]:SQL>create table TAB_LONG(c1 number, c2 long);

Tabela criada.


[EMAIL PROTECTED]:SQL>insert into TAB_LONG values(1, 'A' || lpad('*', 
3999, '#'));

1 linha criada.

==> OK, 4000 bytes é o tamanho de strings máximo pra linguagem SQL 
cfrme documentado... Vamos tentar botar mais :

[EMAIL PROTECTED]:SQL>insert into TAB_LONG values(2, 'B' || lpad('*', 
32000, '#'));
insert into TAB_LONG values(2, 'B' || lpad('*', 32000, '#'))
*
ERRO na linha 1:
ORA-01489: o resultado da concatenação de string é extenso demais

==> não podia funcionar mesmo... Vamos usar o PL/SQL :

[EMAIL PROTECTED]:SQL>DECLARE
  2 v_long long;
  3  BEGIN
  4 v_long := 'B' || lpad('*', 32000, '#');
  5insert into TAB_LONG values(2, v_long);
  6  END;
  7  /

Procedimento PL/SQL concluído com sucesso.

==> vamos tentar passar o limite do PL/SQL...

[EMAIL PROTECTED]:SQL>ed
Gravou file afiedt.buf

  1  DECLARE
  2 v_long long;
  3  BEGIN
  4 v_long := 'C' || lpad('*', 32000, '#') || lpad('&', 
32000, '@') ;
  5insert into TAB_LONG values(3, v_long);
  6* END;
[EMAIL PROTECTED]:SQL>/
DECLARE
*
ERRO na linha 1:
ORA-06502: PL/SQL: erro: buffer de string de caracteres pequeno 
demais numérico ou de valor
ORA-06512: em line 4


===> Até OFICIALMENTE na documentação, o 100% RECOMENDADO é vc passar 
a usar LOBs, que aí além de com LOBs as limitações do cacareco do 
LONG não se aplicarem, vc ainda tem a DBMS_LOB, mas se por qquer 
motivo vc for obrigado a usar LONGs, esses são os limites nesses dois 
ambientes/linguagens : pelo jeito, também está entrando em cena aí 
alguma limitação da sua tool SQL Navigator, entre em contato com o 
Fabricante dela e/ou consulte a documentação pra ver quais são... 
Programaticamente, em PL/SQL, vc tem a opção de processar LONGs 
maiores via DBMS_SQL, pesquise em http://asktom.oracle.com que vc 
acha alguns exemplos.

[]s

 Chiappa
 
--- Em oracle_br@yahoogrupos.com.br, "Anderson" <[EMAIL PROTECTED]> 
escreveu
>
> Na versão 10g não há o type LONG, apenas as variações do type LOB.
> 
> É possível fazer agumas operações de select simples nestes campos, 
> mas a manipulação destes types é feita por meio da package DBMS_LOB.
> 
> 
> 
> --- Em oracle_br@yahoogrupos.com.br, "Genivaldo Silva" 
<[EMAIL PROTECTED]> 
> escreveu
> >
> > 
> > 
> > Pessoal,
> > 
> > Tenho um banco na versão 10g (10.1.0.5.0). Gostaria de saber se 
> nessa versão
> > eu consigo fazer selects em campos do tipo LONG? Se sim, como 
> concatenar
> > valores a ele? Pois tenho uma versão do SQL Navigator 3 que 
mostra o
> > conteúdo desse campo no proprio select, enquanto a versão 5 não 
> mostra. Mas
> > quando tento "trabalhar" esse campo fazer uma concatenação, por 
> exemplo, me
> > é retornado um erro de tipos inconsistêntes (ORA-932).
> > 
> > Alguem pode me ajudar?
> > 
> > Genivaldo
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>







--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: Duvida Select

2006-08-08 Por tôpico Anderson
Na versão 10g não há o type LONG, apenas as variações do type LOB.

É possível fazer agumas operações de select simples nestes campos, 
mas a manipulação destes types é feita por meio da package DBMS_LOB.



--- Em oracle_br@yahoogrupos.com.br, "Genivaldo Silva" <[EMAIL PROTECTED]> 
escreveu
>
> 
> 
> Pessoal,
> 
> Tenho um banco na versão 10g (10.1.0.5.0). Gostaria de saber se 
nessa versão
> eu consigo fazer selects em campos do tipo LONG? Se sim, como 
concatenar
> valores a ele? Pois tenho uma versão do SQL Navigator 3 que mostra o
> conteúdo desse campo no proprio select, enquanto a versão 5 não 
mostra. Mas
> quando tento "trabalhar" esse campo fazer uma concatenação, por 
exemplo, me
> é retornado um erro de tipos inconsistêntes (ORA-932).
> 
> Alguem pode me ajudar?
> 
> Genivaldo
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>







--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: 
http://www.oraclebr.com.br/
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: Duvida simples

2006-07-31 Por tôpico jlchiappa
Ok, digamos que eu tenha a tabela :

[EMAIL PROTECTED]:SQL>create table TAB_TESTE(c1 number, c2 varchar2(80), c3 
date);

Tabela criada.

==> primeiro, número sequencial em bd Oracle normalmente implica em 
SEQUENCE, vamos ter então uma sequence :

[EMAIL PROTECTED]:SQL>create sequence SEQ_TESTE;

Seqüência criada.

==> O mais fácil é vc NÃO TER programação alguma, simplesmente na 
hora do seu aplicativo inserir que ele indique que vc quer inserir o 
próximo valor, tipo :

[EMAIL PROTECTED]:SQL>insert into TAB_TESTE values(SEQ_TESTE.nextval, 'Linha 
1', sysdate);

1 linha criada.

[EMAIL PROTECTED]:SQL>


==> mas se por qquer motivo vc REALMENTE quiser que o banco faça 
isso, a trigger seria simplérima :

[EMAIL PROTECTED]:SQL>ed
Gravou arquivo afiedt.buf

  1  create or replace trigger TRG_BEF_INS_TESTE BEFORE insert on 
TAB_TESTE for each row
  2  BEGIN
  3 select SEQ_TESTE.nextval into :new.c1 from dual;
  4* END;
[EMAIL PROTECTED]:SQL>/

Gatilho criado.

==> com a trigger no lugar, ainda que eu não passe nada pra coluna...

[EMAIL PROTECTED]:SQL>insert into TAB_TESTE(c2, c3) values('Linha 2', 
sysdate);

1 linha criada.

==> ou passe valores quaisquer :

[EMAIL PROTECTED]:SQL>insert into TAB_TESTE values(null, 'Linha 3', sysdate);

1 linha criada.

[EMAIL PROTECTED]:SQL>insert into TAB_TESTE values(999, 'Linha 4', sysdate);

1 linha criada.

==> a triger dispara e faz o que mandei :

[EMAIL PROTECTED]:SQL>select * from tab_teste;

C1 C2   C3
--  ---
 1 Linha 1  31/07/2006 09:23:35
 2 Linha 2  31/07/2006 09:34:09
 3 Linha 3  31/07/2006 09:34:28
 4 Linha 4  31/07/2006 09:34:40

[EMAIL PROTECTED]:SQL>

[]s

 Chiappa
 

--- Em oracle_br@yahoogrupos.com.br, "Romeu" <[EMAIL PROTECTED]> escreveu
>
> Senhores,
> estou com uma duvida simples
> porem creio que não entendi os exemplos de criação de triggers que 
andei achando por ai.
> Precisava de um exemplo de uma trigger que me gravase o proximo  
numero sequencial em uma coluna após o insert dos valores . 
> sei que é bem simples, mas não estou conseguindo :' (
> Vlw
> 
> [As partes desta mensagem que não continham texto foram removidas]
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: duvida basica de sequence

2006-07-25 Por tôpico rodrigodatabase
Aqui segue um exemplo de como fazer

create sequence SEQUENCIA
minvalue 1
maxvalue 999
start with 5
increment by 1
cache 20;

start with 5   -> inicia a sequencia no 5
increment by 1 -> vai incrementando de 1 em 1





--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: Duvida ORA-06650

2006-06-22 Por tôpico jlchiappa
Consultando a documentação, temos que :

ORA-06550 line string, column string:string

Cause: A PL/SQL compilation error has occurred. The numbers given
for line and column are the location in the PL/SQL block where the
error occurred.

Action: Refer to the following PL/SQL messages for more
information about the error.


ou seja, esse é só o warning de erro, nas próximas linhas vc deve ter
recebido o erro em si, veja qual é ,o consulte nas docs.

[]s

 Chiappa


--- Em oracle_br@yahoogrupos.com.br, "Wilson Akio Kamiya"
<[EMAIL PROTECTED]> escreveu
>
> Boa tarde pessoal,
> 
> Estou com um problema, toda vê que tento compilar certa parte do meu
 sistema ele me retorna este erro.
> 
> ORA-06550 ... o que seria isso ? estou começando em oracle
> 
> Poderiam me ajudar ?
> 
> Obrigado.
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>







--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: Duvida - NLS_DATE_FORMAT

2006-06-02 Por tôpico jlchiappa
rprise Edition Release 9.2.0.5.0 - Production
> With the Partitioning, OLAP and Oracle Data Mining options
> JServer Release 9.2.0.5.0 - Production
> 
> SQL> select name,value from v$parameter
>   2  where name like 'nls_date_format';
> 
> NAME
> 
> VALUE
> 

> nls_date_format
> DD-MON-
> 
> 
> SQL> select sysdate from dual;
> 
> SYSDATE
> -
> 02-JUN-06
> 
> SQL>
> 
> DETALHE: No sqlplus remoto da minha maquina(client9)... tambem 
tirei o
> parametro NLS_DATE_FORMAT... tanto da raiz ORACLE como no HOME0
> do regedit... e assim mesmo a data continua vindo com YY 
enfim não 
> tem nada
> setado... só no servidor(INIT do banco).
> 
> Estava dando uma olhada no manual REFERENCE
> http://download-
west.oracle.com/docs/cd/B10501_01/server.920/a96536/ch1116.htm#REFRN10
119
> 
> e não entendi direito o que ele diz sobre O valor do 
NLS_DATE_FORMAT é 
> determinado
> pelo NLS_TERRITORY... que no meu é = AMERICA
> 
> Me parece que o NLS_DATE_FORMAT setado no init não adianta!... ele 
assume o 
> default do territorio.
> é isso
> 
> atc.
> Raphael
> 
> 
> 
> 
> 
> - Original Message - 
> From: "jlchiappa" <[EMAIL PROTECTED]>
> To: 
> Sent: Friday, June 02, 2006 10:53 AM
> Subject: [oracle_br] Re: Duvida - NLS_DATE_FORMAT
> 
> 
> Sua suposição NÃO é correta, os parâmetros todos de NLS_nn no
> servidor são um default que será usado APENAS e TÃO SOMENTE se o
> cliente não especificar NADA, se o cliente especificar um setting
> qualquer é esse que será usado, exemplo :
> 
> sid=DATAF:user=C1827716:/interid/admin>echo $NLS_DATE_FORMAT
> dd-mm-
> 
> sid=DATAF:user=C1827716:/interid/admin>sqlplus scott/tiger
> 
> SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 10:49:32 2006
> 
> Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
> 
> 
> Connected to:
> Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
> With the Partitioning option
> JServer Release 9.2.0.5.0 - Production
> 
> SQL> select sysdate from dual;
> 
> SYSDATE
> --
> 02-06-2006
> 
> SQL> exit
> Disconnected from Oracle9i Enterprise Edition Release 9.2.0.5.0 -
> 64bit Production
> With the Partitioning option
> JServer Release 9.2.0.5.0 - Production
> 
> sid=DATAF:user=C1827716:/interid/admin>unset NLS_DATE_FORMAT
> sid=DATAF:user=C1827716:/interid/admin>echo $NLS_DATE_FORMAT
> ksh: NLS_DATE_FORMAT: parameter not set
> 
> sid=DATAF:user=C1827716:/interid/admin>sqlplus scott/tiger
> 
> SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 10:50:21 2006
> 
> Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
> 
> 
> Connected to:
> Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
> With the Partitioning option
> JServer Release 9.2.0.5.0 - Production
> 
> SQL> select sysdate from dual;
> 
> SYSDATE
> -
> 02-JUN-06
> 
> Isso já foi demonstrado aqui em msgs anteriores do forum mesmo, a
> regra é sempre essa, o client é quem MANDA nos formatos NLS todos,
> não só data.
> 
> []s
> 
>  Chiappa
> 
> --- Em oracle_br@yahoogrupos.com.br, "Phael" <[EMAIL PROTECTED]> escreveu
> >
> > Bom dia,
> >
> >
> > $ sqlplus 'sys/** as sysdba'
> >
> > SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 09:59:50 
2006
> >
> > Copyright (c) 1982, 2002, Oracle Corporation.  All rights 
reserved.
> >
> >
> > Connected to:
> > Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
> > With the Partitioning, OLAP and Oracle Data Mining options
> > JServer Release 9.2.0.5.0 - Production
> >
> > SQL> select sysdate from dual;
> >
> > SYSDATE
> > -
> > 02-JUN-06
> >
> > SQL> select name,value from v$parameter
> >   2  where name like 'nls_date%';
> >
> > NAME
> > 
> > VALUE
> > --
--
> 
> > nls_date_language
> >
> >
> > nls_date_format
> > DD-MON-
> >
> >
> > SQL>
> >
> >
> > Alguem poderia explicar pra mim pra que serve o parametro
> NLS_DATE_FORMAT
> > do lado do servidor?
> >
> > pois pensei que ele deixasse padrão que

Re: [oracle_br] Re: Duvida - NLS_DATE_FORMAT

2006-06-02 Por tôpico Phael



ok!...Chiappa,
Ja tinha visto também nas mensagem anteriores a respeito disso!
Nem tinha mais duvida sobre isso
mas pode ser que me expressei mau o problema é
que NÂO HÁ NADA SETADO no client só está setado no init do
banco e o pior que quando consulto o valor na v$parameter
ele me mostra que esta   mas quando dou um select
em qualquer data ele me traz YY... como no exemplo que passei.

estou logado no servidor

$ echo $NLS_DATE_FORMAT

$ sqlplus 'sys/* as sysdba'

SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 11:16:29 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.5.0 - Production

SQL> select name,value from v$parameter
  2  where name like 'nls_date_format';

NAME

VALUE

nls_date_format
DD-MON-


SQL> select sysdate from dual;

SYSDATE
-
02-JUN-06

SQL>

DETALHE: No sqlplus remoto da minha maquina(client9)... tambem tirei o
parametro NLS_DATE_FORMAT... tanto da raiz ORACLE como no HOME0
do regedit... e assim mesmo a data continua vindo com YY enfim não 
tem nada
setado... só no servidor(INIT do banco).

Estava dando uma olhada no manual REFERENCE
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96536/ch1116.htm#REFRN10119

e não entendi direito o que ele diz sobre O valor do NLS_DATE_FORMAT é 
determinado
pelo NLS_TERRITORY... que no meu é = AMERICA

Me parece que o NLS_DATE_FORMAT setado no init não adianta!... ele assume o 
default do territorio.
é isso

atc.
Raphael





- Original Message - 
From: "jlchiappa" <[EMAIL PROTECTED]>
To: 
Sent: Friday, June 02, 2006 10:53 AM
Subject: [oracle_br] Re: Duvida - NLS_DATE_FORMAT


Sua suposição NÃO é correta, os parâmetros todos de NLS_nn no
servidor são um default que será usado APENAS e TÃO SOMENTE se o
cliente não especificar NADA, se o cliente especificar um setting
qualquer é esse que será usado, exemplo :

sid=DATAF:user=C1827716:/interid/admin>echo $NLS_DATE_FORMAT
dd-mm-

sid=DATAF:user=C1827716:/interid/admin>sqlplus scott/tiger

SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 10:49:32 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production

SQL> select sysdate from dual;

SYSDATE
--
02-06-2006

SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.5.0 -
64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production

sid=DATAF:user=C1827716:/interid/admin>unset NLS_DATE_FORMAT
sid=DATAF:user=C1827716:/interid/admin>echo $NLS_DATE_FORMAT
ksh: NLS_DATE_FORMAT: parameter not set

sid=DATAF:user=C1827716:/interid/admin>sqlplus scott/tiger

SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 10:50:21 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production

SQL> select sysdate from dual;

SYSDATE
-
02-JUN-06

Isso já foi demonstrado aqui em msgs anteriores do forum mesmo, a
regra é sempre essa, o client é quem MANDA nos formatos NLS todos,
não só data.

[]s

 Chiappa

--- Em oracle_br@yahoogrupos.com.br, "Phael" <[EMAIL PROTECTED]> escreveu
>
> Bom dia,
>
>
> $ sqlplus 'sys/** as sysdba'
>
> SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 09:59:50 2006
>
> Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
>
>
> Connected to:
> Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
> With the Partitioning, OLAP and Oracle Data Mining options
> JServer Release 9.2.0.5.0 - Production
>
> SQL> select sysdate from dual;
>
> SYSDATE
> -
> 02-JUN-06
>
> SQL> select name,value from v$parameter
>   2  where name like 'nls_date%';
>
> NAME
> 
> VALUE
> 

> nls_date_language
>
>
> nls_date_format
> DD-MON-
>
>
> SQL>
>
>
> Alguem poderia explicar pra mim pra que serve o parametro
NLS_DATE_FORMAT
> do lado do servidor?
>
> pois pensei que ele deixasse padrão quem não tivesse o formato, ou
seja, ficasse igual
> como esta definido no parameter file. No caso o sysdate não era
para apareces com
> o ano 2006 em vez de 06.
>
>
> atc.
>

[oracle_br] Re: Duvida - NLS_DATE_FORMAT

2006-06-02 Por tôpico jlchiappa



Sua suposição NÃO é correta, os parâmetros todos de NLS_nn no 
servidor são um default que será usado APENAS e TÃO SOMENTE se o 
cliente não especificar NADA, se o cliente especificar um setting 
qualquer é esse que será usado, exemplo :

sid=DATAF:user=C1827716:/interid/admin>echo $NLS_DATE_FORMAT
dd-mm-

sid=DATAF:user=C1827716:/interid/admin>sqlplus scott/tiger

SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 10:49:32 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production

SQL> select sysdate from dual;

SYSDATE
--
02-06-2006

SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.5.0 - 
64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production

sid=DATAF:user=C1827716:/interid/admin>unset NLS_DATE_FORMAT
sid=DATAF:user=C1827716:/interid/admin>echo $NLS_DATE_FORMAT
ksh: NLS_DATE_FORMAT: parameter not set

sid=DATAF:user=C1827716:/interid/admin>sqlplus scott/tiger

SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 10:50:21 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production

SQL> select sysdate from dual;

SYSDATE
-
02-JUN-06

Isso já foi demonstrado aqui em msgs anteriores do forum mesmo, a 
regra é sempre essa, o client é quem MANDA nos formatos NLS todos, 
não só data.

[]s

 Chiappa
 
--- Em oracle_br@yahoogrupos.com.br, "Phael" <[EMAIL PROTECTED]> escreveu
>
> Bom dia,
> 
> 
> $ sqlplus 'sys/** as sysdba'
> 
> SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jun 2 09:59:50 2006
> 
> Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
> 
> 
> Connected to:
> Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
> With the Partitioning, OLAP and Oracle Data Mining options
> JServer Release 9.2.0.5.0 - Production
> 
> SQL> select sysdate from dual;
> 
> SYSDATE
> -
> 02-JUN-06
> 
> SQL> select name,value from v$parameter
>   2  where name like 'nls_date%';
> 
> NAME
> 
> VALUE
> 

> nls_date_language
> 
> 
> nls_date_format
> DD-MON-
> 
> 
> SQL>
> 
> 
> Alguem poderia explicar pra mim pra que serve o parametro 
NLS_DATE_FORMAT
> do lado do servidor?
> 
> pois pensei que ele deixasse padrão quem não tivesse o formato, ou 
seja, ficasse igual
> como esta definido no parameter file. No caso o sysdate não era 
para apareces com
> o ano 2006 em vez de 06.
> 
> 
> atc.
> 
> Raphael
> 
> [As partes desta mensagem que não continham texto foram removidas]
>











--
Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário.





  




  
Yahoo! Grupos, um serviço oferecido por:
  
  

PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/oracle_br/ 
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED] 
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.












[oracle_br] Re: Duvida performance Merge / Exception

2006-04-05 Por tôpico Marcio Portes
A partir da versão 9i, voce já pode contar com o MERGE. Ele é mais 
rápido porque é considerado SQL nativo.
Mesmo assim, voce pode montar um pequeno test-case para ter certeza. 
Invente uma tabela de 500.000 linhas e outra com 1.000.000, agora 
faça o merge entre as duas usando:

a) MERGE
b) begin 
 insert 
   exception 
 update 
   end 

e compare os tempos. Não esquece de comparar o gera menos latchs. Qto 
mais latch, mas serialização, mais demora quando houver mais usuários 
conectados. 

--- Em oracle_br@yahoogrupos.com.br, Rodrigo Lether <[EMAIL PROTECTED]> 
escreveu
>
> Bom Dia Mestres.
>   Gostaria de saber o que é mais rapido e melhor:
>   1 - Utilizar um Merge para fazer um insert e caso não exista o 
registro faça o update ???
>   2 - Utilizar um Begin / Exception, caso eu faça um insert e o 
registro existir cair na exception e fazer o update deste registro ???
>
>   Obrigado,
>   Rodrigo
> 
>   
> -
>  Abra sua conta no Yahoo! Mail - 1GB de espaço, alertas de e-mail 
no celular e anti-spam realmente eficaz. 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: Duvida sobre stand alone

2006-03-24 Por tôpico Jemerson Dutra
Esclarecendo melhor a situação. num ambiente Windows.
Jemerson
--- Em oracle_br@yahoogrupos.com.br, "Jemerson Dutra" <[EMAIL PROTECTED]> 
escreveu
>
> Por sempre trabalhar num ambiente risc, hoje me vejo na seguinte 
> situacao, Migrei meu BD para um AIX 64BITS, necessito saber se como 
> contingencia eu poderia colocar tirar backups dos datafiles, 
> controlfiles e dos archives e dar recover.
> 
> Jemerson
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: Duvida DBA

2006-03-07 Por tôpico jlchiappa
O legal seria dos dois, mas se não der ao menos um bom curso de linux 
já te adiantaria, já que muitos conceitos do unix (uso de memória, 
threading, conexões em rede, etc, etc) não são iguais mas são 
semelhantes em linux.

[]s

 Chiappa

--- Em oracle_br@yahoogrupos.com.br, "afalanque" <[EMAIL PROTECTED]> 
escreveu
>
> Obrigado Chiappa...
> Mas devo fazer um curso de Unix ou um de Linux ja resolveria o caso?
> 
> Obrigado.
> 
> --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> 
> escreveu
> >
> > Que é possível ser dba só atuando em plataforma win sem dúvida é, 
> mas 
> > unix (e variantes, como linux) são ainda (e pelo jeito no futuro 
> > próximo continuarão a ser) largamente usados nas Empresas que 
> utilizam 
> > Oracle, então não conhecer unix implica perder uma significativa  
> > fração de oportunidades, penso que hoje em dia , com as 
> dificuldades 
> > sempre crescentes pra se arranjar emprego, não dá pra se dar a 
> esse 
> > luxo Então pra quem só conhece unix recomenda-se que conheça 
> também 
> > windows, pra quem só conhece windows que conheça também unix, 
> sim...
> > 
> > []s
> > 
> >  Chiappa
> > --- Em oracle_br@yahoogrupos.com.br, "afalanque" <[EMAIL PROTECTED]> 
> > escreveu
> > >
> > > Boa tarde pessoal
> > > 
> > > Sou analista de sistemas ha 10 anos, porem atuei como DBA 
Oracle 
> por 
> > 6 
> > > meses com a versao 8i no Windows 2000.
> > > 
> > > Gostaria de voltar a atuar como DBA, fiz o curso do 8i e 9i, e 
> ja 
> > > comprei o livro da verdsao 10g
> > > So nao conheco nada de unix, isso eh um problema? nao conhecer 
> unix e 
> > > atuar como DBA?"
> > > 
> > > Qual seria a opiniao de vcs???
> > > Obrigado
> > >
> >
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: Duvida DBA

2006-03-07 Por tôpico afalanque
Obrigado Chiappa...
Mas devo fazer um curso de Unix ou um de Linux ja resolveria o caso?

Obrigado.

--- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> 
escreveu
>
> Que é possível ser dba só atuando em plataforma win sem dúvida é, 
mas 
> unix (e variantes, como linux) são ainda (e pelo jeito no futuro 
> próximo continuarão a ser) largamente usados nas Empresas que 
utilizam 
> Oracle, então não conhecer unix implica perder uma significativa  
> fração de oportunidades, penso que hoje em dia , com as 
dificuldades 
> sempre crescentes pra se arranjar emprego, não dá pra se dar a 
esse 
> luxo Então pra quem só conhece unix recomenda-se que conheça 
também 
> windows, pra quem só conhece windows que conheça também unix, 
sim...
> 
> []s
> 
>  Chiappa
> --- Em oracle_br@yahoogrupos.com.br, "afalanque" <[EMAIL PROTECTED]> 
> escreveu
> >
> > Boa tarde pessoal
> > 
> > Sou analista de sistemas ha 10 anos, porem atuei como DBA Oracle 
por 
> 6 
> > meses com a versao 8i no Windows 2000.
> > 
> > Gostaria de voltar a atuar como DBA, fiz o curso do 8i e 9i, e 
ja 
> > comprei o livro da verdsao 10g
> > So nao conheco nada de unix, isso eh um problema? nao conhecer 
unix e 
> > atuar como DBA?"
> > 
> > Qual seria a opiniao de vcs???
> > Obrigado
> >
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: Duvida DBA

2006-03-07 Por tôpico jlchiappa
Que é possível ser dba só atuando em plataforma win sem dúvida é, mas 
unix (e variantes, como linux) são ainda (e pelo jeito no futuro 
próximo continuarão a ser) largamente usados nas Empresas que utilizam 
Oracle, então não conhecer unix implica perder uma significativa  
fração de oportunidades, penso que hoje em dia , com as dificuldades 
sempre crescentes pra se arranjar emprego, não dá pra se dar a esse 
luxo Então pra quem só conhece unix recomenda-se que conheça também 
windows, pra quem só conhece windows que conheça também unix, sim...

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "afalanque" <[EMAIL PROTECTED]> 
escreveu
>
> Boa tarde pessoal
> 
> Sou analista de sistemas ha 10 anos, porem atuei como DBA Oracle por 
6 
> meses com a versao 8i no Windows 2000.
> 
> Gostaria de voltar a atuar como DBA, fiz o curso do 8i e 9i, e ja 
> comprei o livro da verdsao 10g
> So nao conheco nada de unix, isso eh um problema? nao conhecer unix e 
> atuar como DBA?"
> 
> Qual seria a opiniao de vcs???
> Obrigado
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
 
Links do Yahoo! Grupos

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

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

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

 




Re: [oracle_br] Re: duvida de privilegios - a duvida continua - obrigada

2006-02-10 Por tôpico ESTUDO
Chiappa, muito obrigada pela atenção!
bj
Cris
  - Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Friday, February 10, 2006 10:03 AM
  Subject: [oracle_br] Re: duvida de privilegios - a duvida continua - FINAL


  É, só preste atenção nas possibilidades que eu indiquei, de não estar 
  sendo gravado PORQUE a trigger que grava não está disparando por um 
  dos motivos citados, blz ? Cheque também os privilégios, mas não 
  parece ser isso. E recomendação final, IMPLEMENTE o audit e uma 
  trigger de erro, pois aí se a trigger não disparar ou se o insert na 
  tabela de log falhar por qquer motivo, vc TEM onde ver isso, legal ?

  []s

  Chiappa
  --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
  escreveu
  >
  > ...
  > falamos, falamos, e então concluí que a usuaria ADRIANAV grava 
  na auditoria pois a mesma tem acesso na tabela de Horario (que 
  dispara a trigger).. beleza!
  > 
  > Agora só preciso descobrir  pq em algumas circunstancias não gravou!
  > 
  > Muito Obrigada
  > 
  > Cris
  >   - Original Message - 
  >   From: jlchiappa 
  >   To: oracle_br@yahoogrupos.com.br 
  >   Sent: Thursday, February 09, 2006 6:50 PM
  >   Subject: Fw: [oracle_br] Re: duvida de privilegios - a duvida 
  continua
  > 
  > 
  >   Uma outra chance : ao invés da questão de privilégios, de repnte 
  PODE
  >   SER que simplesmente a trigger que faz a auditoria não esteja
  >   disparando! Uma trigger não dispara se :
  > 
  >   a) for desabilitada via ALTER
  > 
  >   ou 
  > 
  >   b) nem todas as condições forem preenchidas - por exemplo, a 
  condição
  >   WHEN, se vc tiver uma WHEN SALARIO > 1000 (digamos), ou ainda se a
  >   trigger especifica as colunas e nenhuma delas foi
  >   alterada/mexida/citada no SQL. Um caso derivado é simplesmente se
  >   algum IF do trigger body que autorize o insert na tabela de audit 
  não
  >   for satisfeito
  > 
  >   ou 
  > 
  >   c) quando se faz SQL em direct path, como por exemplo sqlloader 
  com
  >   direct=y
  > 
  >   veja lá se algum desses casos nãopode estar acontecendo.
  > 
  >   []s  
  >  Chiappa
  >   --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> 
  escreveu
  >   >
  >   > >>Chiappa, posso comentar?
  >   > 
  >   > mais que pode, DEVE, é pra isso que estamos aqui...
  >   > 
  >   > >> -->> Só existem sinonimos públicos no nosso database, 
  >   > 
  >   > confirme isso consultando a DBA_SYNONYMs, não acredite 
  no "oficial"
  >   > 
  >   > 
  >   > >> inclusive existe um para
  >   > a F_AUDITORIA
  >   > 
  >   > NÂO deveria haver nenhum !!! Esse objeto de auditoria NÂO é 
  algo 
  >   > público, que vc queira que qualquer um acesse!!! Ele só deveria 
  ser 
  >   > acessado PELA TRIGGER de auditoria, que como mostrado SE 
  pertencente 
  >   > ao mesmo schema dono da tabela, ocorre naturalmente o acesso, 
  veja 
  >   > que foi EXATAMENTE isso que mostrei no meu exemplo, nem SCOTT 
  nem o 
  >   > outro cara tinham acesso à tab de auditoria, nem havia sinônimo 
  de 
  >   > qquer tipo  
  >   > 
  >   > o usuário PUBLIC não tem privilégio em nenhuma tabela .. 
  nenhuma!
  >   > 
  >   > CONFIRME isso consultando em TODAS as fontes possíveis : eu vi 
  na sua 
  >   > resposta que vc consultou DBA_TAB_PRIVS, DBA_TAB_COLUMNS e 
  >   > DBA_ROLE_PRIVS, mas não vi consulta nem na role_role_privs nem 
  >   > recursiva na DBA_ROLE_PRIVS, e também não vi menção à SYS_PRIVS 
  (pro 
  >   > caso de alguém ter recebido SELECT ANY TABLE) , um script mais 
  >   > completo seria :
  >   > 
  >   > /* PRIVS_BY_USER */
  >   > set echo off
  >   > set verify off
  >   > set pages 200
  >   > col granted_role form a20
  >   > col owner form a15
  >   > col table_name form a33
  >   > col privilege form a33
  >   > ACCEPT username  prompt 'Enter Username : '
  >   > PROMPT Roles granted to user
  >   > SELECT granted_role,admin_option,default_role
  >   > FROM dba_role_privs
  >   > WHERE grantee=UPPER('&username')
  >   > ORDER BY 1;
  >   > PROMPT Table Privileges granted to a user through roles
  >   > SELECT granted_role, owner, table_name, privilege
  >   > FROM ( SELECT granted_role
  >   > FROM dba_role_privs WHERE grantee=UPPER('&username')
  >   >UNION
  >   >SELECT granted_role
  >   > FROM role_role_privs
  >   > WHERE role in (SELECT granted_role
  >   >  FROM d

[oracle_br] Re: duvida de privilegios - a duvida continua - FINAL

2006-02-10 Por tôpico jlchiappa
É, só preste atenção nas possibilidades que eu indiquei, de não estar 
sendo gravado PORQUE a trigger que grava não está disparando por um 
dos motivos citados, blz ? Cheque também os privilégios, mas não 
parece ser isso. E recomendação final, IMPLEMENTE o audit e uma 
trigger de erro, pois aí se a trigger não disparar ou se o insert na 
tabela de log falhar por qquer motivo, vc TEM onde ver isso, legal ?

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
escreveu
>
> ...
> falamos, falamos, e então concluí que a usuaria ADRIANAV grava 
na auditoria pois a mesma tem acesso na tabela de Horario (que 
dispara a trigger).. beleza!
> 
> Agora só preciso descobrir  pq em algumas circunstancias não gravou!
> 
> Muito Obrigada
> 
> Cris
>   - Original Message - 
>   From: jlchiappa 
>   To: oracle_br@yahoogrupos.com.br 
>   Sent: Thursday, February 09, 2006 6:50 PM
>   Subject: Fw: [oracle_br] Re: duvida de privilegios - a duvida 
continua
> 
> 
>   Uma outra chance : ao invés da questão de privilégios, de repnte 
PODE
>   SER que simplesmente a trigger que faz a auditoria não esteja
>   disparando! Uma trigger não dispara se :
> 
>   a) for desabilitada via ALTER
> 
>   ou 
> 
>   b) nem todas as condições forem preenchidas - por exemplo, a 
condição
>   WHEN, se vc tiver uma WHEN SALARIO > 1000 (digamos), ou ainda se a
>   trigger especifica as colunas e nenhuma delas foi
>   alterada/mexida/citada no SQL. Um caso derivado é simplesmente se
>   algum IF do trigger body que autorize o insert na tabela de audit 
não
>   for satisfeito
> 
>   ou 
> 
>   c) quando se faz SQL em direct path, como por exemplo sqlloader 
com
>   direct=y
> 
>   veja lá se algum desses casos nãopode estar acontecendo.
> 
>   []s  
>  Chiappa
>   --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> 
escreveu
>   >
>   > >>Chiappa, posso comentar?
>   > 
>   > mais que pode, DEVE, é pra isso que estamos aqui...
>   > 
>   > >> -->> Só existem sinonimos públicos no nosso database, 
>   > 
>   > confirme isso consultando a DBA_SYNONYMs, não acredite 
no "oficial"
>   > 
>   > 
>   > >> inclusive existe um para
>   > a F_AUDITORIA
>   > 
>   > NÂO deveria haver nenhum !!! Esse objeto de auditoria NÂO é 
algo 
>   > público, que vc queira que qualquer um acesse!!! Ele só deveria 
ser 
>   > acessado PELA TRIGGER de auditoria, que como mostrado SE 
pertencente 
>   > ao mesmo schema dono da tabela, ocorre naturalmente o acesso, 
veja 
>   > que foi EXATAMENTE isso que mostrei no meu exemplo, nem SCOTT 
nem o 
>   > outro cara tinham acesso à tab de auditoria, nem havia sinônimo 
de 
>   > qquer tipo  
>   > 
>   > o usuário PUBLIC não tem privilégio em nenhuma tabela .. 
nenhuma!
>   > 
>   > CONFIRME isso consultando em TODAS as fontes possíveis : eu vi 
na sua 
>   > resposta que vc consultou DBA_TAB_PRIVS, DBA_TAB_COLUMNS e 
>   > DBA_ROLE_PRIVS, mas não vi consulta nem na role_role_privs nem 
>   > recursiva na DBA_ROLE_PRIVS, e também não vi menção à SYS_PRIVS 
(pro 
>   > caso de alguém ter recebido SELECT ANY TABLE) , um script mais 
>   > completo seria :
>   > 
>   > /* PRIVS_BY_USER */
>   > set echo off
>   > set verify off
>   > set pages 200
>   > col granted_role form a20
>   > col owner form a15
>   > col table_name form a33
>   > col privilege form a33
>   > ACCEPT username  prompt 'Enter Username : '
>   > PROMPT Roles granted to user
>   > SELECT granted_role,admin_option,default_role
>   > FROM dba_role_privs
>   > WHERE grantee=UPPER('&username')
>   > ORDER BY 1;
>   > PROMPT Table Privileges granted to a user through roles
>   > SELECT granted_role, owner, table_name, privilege
>   > FROM ( SELECT granted_role
>   > FROM dba_role_privs WHERE grantee=UPPER('&username')
>   >UNION
>   >SELECT granted_role
>   > FROM role_role_privs
>   > WHERE role in (SELECT granted_role
>   >  FROM dba_role_privs WHERE grantee=UPPER
('&username')
>   > )
>   >) roles, dba_tab_privs
>   > WHERE granted_role=grantee
>   > ORder by 1,2,3,4;
>   > PROMPT System Privileges assigned to a user through roles
>   > SELECT granted_role, privilege
>   > FROM ( SELECT granted_role
>   > FROM dba_role_privs WHERE grantee=UPPER('&username')
>   >UNION
>   >SELECT granted_role
>

Re: [oracle_br] Re: duvida de privilegios - a duvida continua - FINAL

2006-02-10 Por tôpico ESTUDO
...
falamos, falamos, e então concluí que a usuaria ADRIANAV grava na auditoria 
pois a mesma tem acesso na tabela de Horario (que dispara a trigger).. beleza!

Agora só preciso descobrir  pq em algumas circunstancias não gravou!

Muito Obrigada

Cris
  - Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, February 09, 2006 6:50 PM
  Subject: Fw: [oracle_br] Re: duvida de privilegios - a duvida continua


  Uma outra chance : ao invés da questão de privilégios, de repnte PODE
  SER que simplesmente a trigger que faz a auditoria não esteja
  disparando! Uma trigger não dispara se :

  a) for desabilitada via ALTER

  ou 

  b) nem todas as condições forem preenchidas - por exemplo, a condição
  WHEN, se vc tiver uma WHEN SALARIO > 1000 (digamos), ou ainda se a
  trigger especifica as colunas e nenhuma delas foi
  alterada/mexida/citada no SQL. Um caso derivado é simplesmente se
  algum IF do trigger body que autorize o insert na tabela de audit não
  for satisfeito

  ou 

  c) quando se faz SQL em direct path, como por exemplo sqlloader com
  direct=y

  veja lá se algum desses casos nãopode estar acontecendo.

  []s  
 Chiappa
  --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> escreveu
  >
  > >>Chiappa, posso comentar?
  > 
  > mais que pode, DEVE, é pra isso que estamos aqui...
  > 
  > >> -->> Só existem sinonimos públicos no nosso database, 
  > 
  > confirme isso consultando a DBA_SYNONYMs, não acredite no "oficial"
  > 
  > 
  > >> inclusive existe um para
  > a F_AUDITORIA
  > 
  > NÂO deveria haver nenhum !!! Esse objeto de auditoria NÂO é algo 
  > público, que vc queira que qualquer um acesse!!! Ele só deveria ser 
  > acessado PELA TRIGGER de auditoria, que como mostrado SE pertencente 
  > ao mesmo schema dono da tabela, ocorre naturalmente o acesso, veja 
  > que foi EXATAMENTE isso que mostrei no meu exemplo, nem SCOTT nem o 
  > outro cara tinham acesso à tab de auditoria, nem havia sinônimo de 
  > qquer tipo  
  > 
  > o usuário PUBLIC não tem privilégio em nenhuma tabela .. nenhuma!
  > 
  > CONFIRME isso consultando em TODAS as fontes possíveis : eu vi na sua 
  > resposta que vc consultou DBA_TAB_PRIVS, DBA_TAB_COLUMNS e 
  > DBA_ROLE_PRIVS, mas não vi consulta nem na role_role_privs nem 
  > recursiva na DBA_ROLE_PRIVS, e também não vi menção à SYS_PRIVS (pro 
  > caso de alguém ter recebido SELECT ANY TABLE) , um script mais 
  > completo seria :
  > 
  > /* PRIVS_BY_USER */
  > set echo off
  > set verify off
  > set pages 200
  > col granted_role form a20
  > col owner form a15
  > col table_name form a33
  > col privilege form a33
  > ACCEPT username  prompt 'Enter Username : '
  > PROMPT Roles granted to user
  > SELECT granted_role,admin_option,default_role
  > FROM dba_role_privs
  > WHERE grantee=UPPER('&username')
  > ORDER BY 1;
  > PROMPT Table Privileges granted to a user through roles
  > SELECT granted_role, owner, table_name, privilege
  > FROM ( SELECT granted_role
  > FROM dba_role_privs WHERE grantee=UPPER('&username')
  >UNION
  >SELECT granted_role
  > FROM role_role_privs
  > WHERE role in (SELECT granted_role
  >  FROM dba_role_privs WHERE grantee=UPPER('&username')
  > )
  >) roles, dba_tab_privs
  > WHERE granted_role=grantee
  > ORder by 1,2,3,4;
  > PROMPT System Privileges assigned to a user through roles
  > SELECT granted_role, privilege
  > FROM ( SELECT granted_role
  > FROM dba_role_privs WHERE grantee=UPPER('&username')
  >UNION
  >SELECT granted_role
  > FROM role_role_privs
  > WHERE role in (SELECT granted_role
  >  FROM dba_role_privs WHERE grantee=UPPER('&username')
  > )
  >) roles, dba_sys_privs
  > WHERE granted_role=grantee
  >  ORDER BY 1,2;
  > PROMPT Table privileges assigned directly to a user
  > SELECT owner, table_name, privilege
  > FROM dba_tab_privs
  > WHERE grantee=UPPER('&username')
  > ORDER BY 1,2,3;
  > PROMPT System privileges assigned directly to a user
  > SELECT privilege, admin_option
  > FROM  dba_sys_privs
  > WHERE grantee=UPPER('&username');
  > 
  > e vc rodaria este script contra PUBLIC, contra o usuário dono das 
  > tabs, e contra o usuário final,o tal do user1 aí.
  > 
  > ==> e outra coisa, tenha CERTEZA que a aplicação não faz muda isso 
  > dinamicamente (via ALTER SESSION, ou SQL dinâmico), e que não há 
  > triggers de banco (tipo triggers de logon, ou similares) envolvidas.
  > 
  > >> --&

Fw: [oracle_br] Re: duvida de privilegios - a duvida continua

2006-02-09 Por tôpico jlchiappa
Uma outra chance : ao invés da questão de privilégios, de repnte PODE
SER que simplesmente a trigger que faz a auditoria não esteja
disparando! Uma trigger não dispara se :

a) for desabilitada via ALTER

ou 

b) nem todas as condições forem preenchidas - por exemplo, a condição
WHEN, se vc tiver uma WHEN SALARIO > 1000 (digamos), ou ainda se a
trigger especifica as colunas e nenhuma delas foi
alterada/mexida/citada no SQL. Um caso derivado é simplesmente se
algum IF do trigger body que autorize o insert na tabela de audit não
for satisfeito

ou 

c) quando se faz SQL em direct path, como por exemplo sqlloader com
direct=y

veja lá se algum desses casos nãopode estar acontecendo.

[]s  
   Chiappa
--- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> escreveu
>
> >>Chiappa, posso comentar?
> 
> mais que pode, DEVE, é pra isso que estamos aqui...
> 
> >> -->> Só existem sinonimos públicos no nosso database, 
> 
> confirme isso consultando a DBA_SYNONYMs, não acredite no "oficial"
> 
> 
> >> inclusive existe um para
> a F_AUDITORIA
> 
> NÂO deveria haver nenhum !!! Esse objeto de auditoria NÂO é algo 
> público, que vc queira que qualquer um acesse!!! Ele só deveria ser 
> acessado PELA TRIGGER de auditoria, que como mostrado SE pertencente 
> ao mesmo schema dono da tabela, ocorre naturalmente o acesso, veja 
> que foi EXATAMENTE isso que mostrei no meu exemplo, nem SCOTT nem o 
> outro cara tinham acesso à tab de auditoria, nem havia sinônimo de 
> qquer tipo  
> 
> o usuário PUBLIC não tem privilégio em nenhuma tabela .. nenhuma!
> 
> CONFIRME isso consultando em TODAS as fontes possíveis : eu vi na sua 
> resposta que vc consultou DBA_TAB_PRIVS, DBA_TAB_COLUMNS e 
> DBA_ROLE_PRIVS, mas não vi consulta nem na role_role_privs nem 
> recursiva na DBA_ROLE_PRIVS, e também não vi menção à SYS_PRIVS (pro 
> caso de alguém ter recebido SELECT ANY TABLE) , um script mais 
> completo seria :
> 
> /* PRIVS_BY_USER */
> set echo off
> set verify off
> set pages 200
> col granted_role form a20
> col owner form a15
> col table_name form a33
> col privilege form a33
> ACCEPT username  prompt 'Enter Username : '
> PROMPT Roles granted to user
> SELECT granted_role,admin_option,default_role
> FROM dba_role_privs
> WHERE grantee=UPPER('&username')
> ORDER BY 1;
> PROMPT Table Privileges granted to a user through roles
> SELECT granted_role, owner, table_name, privilege
> FROM ( SELECT granted_role
> FROM dba_role_privs WHERE grantee=UPPER('&username')
>UNION
>SELECT granted_role
> FROM role_role_privs
> WHERE role in (SELECT granted_role
>  FROM dba_role_privs WHERE grantee=UPPER('&username')
> )
>) roles, dba_tab_privs
> WHERE granted_role=grantee
> ORder by 1,2,3,4;
> PROMPT System Privileges assigned to a user through roles
> SELECT granted_role, privilege
> FROM ( SELECT granted_role
> FROM dba_role_privs WHERE grantee=UPPER('&username')
>UNION
>SELECT granted_role
> FROM role_role_privs
> WHERE role in (SELECT granted_role
>  FROM dba_role_privs WHERE grantee=UPPER('&username')
> )
>) roles, dba_sys_privs
> WHERE granted_role=grantee
>  ORDER BY 1,2;
> PROMPT Table privileges assigned directly to a user
> SELECT owner, table_name, privilege
> FROM dba_tab_privs
> WHERE grantee=UPPER('&username')
> ORDER BY 1,2,3;
> PROMPT System privileges assigned directly to a user
> SELECT privilege, admin_option
> FROM  dba_sys_privs
> WHERE grantee=UPPER('&username');
> 
> e vc rodaria este script contra PUBLIC, contra o usuário dono das 
> tabs, e contra o usuário final,o tal do user1 aí.
> 
> ==> e outra coisa, tenha CERTEZA que a aplicação não faz muda isso 
> dinamicamente (via ALTER SESSION, ou SQL dinâmico), e que não há 
> triggers de banco (tipo triggers de logon, ou similares) envolvidas.
> 
> >> -->> Tudo indica que estava faltando acesso, então é normal o dbms 
> tem horas
> que deixa gravar, e horas que não grava?
> 
> não, OU vc tem o acesso ou não tem, não existe isso de hora gravar 
> ora não
> 
> >> Bom ela nao tem acesso na F_AUDITORIA, mas como ela ja gravou isso
> HJ?
> 
> é o que eu te mostrei no exemplo, SE há uma trigger pertencente ao 
> MESMO dono da tabela, e se é feito GRANT de DML dessa tabela , a 
> trigger será executada automaticamente, e como a trigger PERTENCE ao 
> mesmo usuário-dono, ela será executada com as permissões desse 
> usuário-dono, a tabela de auditoria será normalmente gravada pela 
> trigger, pois a trigger tem o acesso nesse caso... 
> 
> >>> b) dispara na MESMA transação, então se o cliente fizer um 
> ROLLBACK
> (seja rollback automático por erro, seja de propósito),o INSERT na
> tabela de AUDIT *** vai *** ser desfeito Pra isto, AUTONOMOUS
> TRANSACTION é a solução.
> -->> Ué mas não tem de ser desfeito mesmo? se foi feito o rollback na 
> inserção
> da tabela de horario, não tem de "sair" da tabela de auditoria? 
> entendi
> errado
> 
> é q

Fw: [oracle_br] Re: duvida de privilegios - a duvida continua

2006-02-09 Por tôpico jlchiappa
>>Chiappa, posso comentar?

mais que pode, DEVE, é pra isso que estamos aqui...

>> -->> Só existem sinonimos públicos no nosso database, 

confirme isso consultando a DBA_SYNONYMs, não acredite no "oficial"


>> inclusive existe um para
a F_AUDITORIA

NÂO deveria haver nenhum !!! Esse objeto de auditoria NÂO é algo 
público, que vc queira que qualquer um acesse!!! Ele só deveria ser 
acessado PELA TRIGGER de auditoria, que como mostrado SE pertencente 
ao mesmo schema dono da tabela, ocorre naturalmente o acesso, veja 
que foi EXATAMENTE isso que mostrei no meu exemplo, nem SCOTT nem o 
outro cara tinham acesso à tab de auditoria, nem havia sinônimo de 
qquer tipo  

o usuário PUBLIC não tem privilégio em nenhuma tabela .. nenhuma!

CONFIRME isso consultando em TODAS as fontes possíveis : eu vi na sua 
resposta que vc consultou DBA_TAB_PRIVS, DBA_TAB_COLUMNS e 
DBA_ROLE_PRIVS, mas não vi consulta nem na role_role_privs nem 
recursiva na DBA_ROLE_PRIVS, e também não vi menção à SYS_PRIVS (pro 
caso de alguém ter recebido SELECT ANY TABLE) , um script mais 
completo seria :

/* PRIVS_BY_USER */
set echo off
set verify off
set pages 200
col granted_role form a20
col owner form a15
col table_name form a33
col privilege form a33
ACCEPT username  prompt 'Enter Username : '
PROMPT Roles granted to user
SELECT granted_role,admin_option,default_role
FROM dba_role_privs
WHERE grantee=UPPER('&username')
ORDER BY 1;
PROMPT Table Privileges granted to a user through roles
SELECT granted_role, owner, table_name, privilege
FROM ( SELECT granted_role
FROM dba_role_privs WHERE grantee=UPPER('&username')
   UNION
   SELECT granted_role
FROM role_role_privs
WHERE role in (SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER('&username')
)
   ) roles, dba_tab_privs
WHERE granted_role=grantee
ORder by 1,2,3,4;
PROMPT System Privileges assigned to a user through roles
SELECT granted_role, privilege
FROM ( SELECT granted_role
FROM dba_role_privs WHERE grantee=UPPER('&username')
   UNION
   SELECT granted_role
FROM role_role_privs
WHERE role in (SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER('&username')
)
   ) roles, dba_sys_privs
WHERE granted_role=grantee
 ORDER BY 1,2;
PROMPT Table privileges assigned directly to a user
SELECT owner, table_name, privilege
FROM dba_tab_privs
WHERE grantee=UPPER('&username')
ORDER BY 1,2,3;
PROMPT System privileges assigned directly to a user
SELECT privilege, admin_option
FROM  dba_sys_privs
WHERE grantee=UPPER('&username');

e vc rodaria este script contra PUBLIC, contra o usuário dono das 
tabs, e contra o usuário final,o tal do user1 aí.

==> e outra coisa, tenha CERTEZA que a aplicação não faz muda isso 
dinamicamente (via ALTER SESSION, ou SQL dinâmico), e que não há 
triggers de banco (tipo triggers de logon, ou similares) envolvidas.

>> -->> Tudo indica que estava faltando acesso, então é normal o dbms 
tem horas
que deixa gravar, e horas que não grava?

não, OU vc tem o acesso ou não tem, não existe isso de hora gravar 
ora não

>> Bom ela nao tem acesso na F_AUDITORIA, mas como ela ja gravou isso
HJ?

é o que eu te mostrei no exemplo, SE há uma trigger pertencente ao 
MESMO dono da tabela, e se é feito GRANT de DML dessa tabela , a 
trigger será executada automaticamente, e como a trigger PERTENCE ao 
mesmo usuário-dono, ela será executada com as permissões desse 
usuário-dono, a tabela de auditoria será normalmente gravada pela 
trigger, pois a trigger tem o acesso nesse caso... 

>>> b) dispara na MESMA transação, então se o cliente fizer um 
ROLLBACK
(seja rollback automático por erro, seja de propósito),o INSERT na
tabela de AUDIT *** vai *** ser desfeito Pra isto, AUTONOMOUS
TRANSACTION é a solução.
-->> Ué mas não tem de ser desfeito mesmo? se foi feito o rollback na 
inserção
da tabela de horario, não tem de "sair" da tabela de auditoria? 
entendi
errado

é que eu estava pensando na seguinte hipótese : imagine que o usuário 
fez uma operação que deu erro, ou então saiu da aplicação sem gravar, 
e (erradamente!) a aplicação não mostra nada pra ele : nesse caso a 
transação vai ser desfeita, e o insert na tabela de auditoria vai 
sumir também, aí lá vem o usuário reclamando que não houve 
auditoria Pra vc comprovar que é isso, vc pode (por exemplo) ter 
uma trigger que registra os erros da base (evento on servererror), 
e/ou ainda ter uma transação autônoma na trigger de auditoria, OU 
ainda melhor, acionar o comando AUDIT nesse banco, que aí não tem 
como, afora acessos de DBAs audit NECESSARIAMENTE captura o que vc 
especificar.

afaik é checar essas possibilidades, só assim vc vai descobrir o que 
está diferente nesse banco. 

[]s

 Chiappa
 






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilid

Fw: [oracle_br] Re: duvida de privilegios - a duvida continua

2006-02-09 Por tôpico ESTUDO
CHIAPPA
para completar as respostas abaixo, eu dropei o unico sinonimo publico que 
existia e mesmo assim gravou na auditoria.
- Original Message - 
From: ESTUDO 
To: oracle_br@yahoogrupos.com.br 
Sent: Thursday, February 09, 2006 4:10 PM
Subject: Re: [oracle_br] Re: duvida de privilegios - a duvida continua


Chiappa, posso comentar?
comentarios no meio das respostas!
  - Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, February 09, 2006 11:32 AM
  Subject: [oracle_br] Re: duvida de privilegios - a duvida continua


  Nah, não creio que seja mistério não, muito provavelmente esse banco 
  tem é umas lambanças das boas nele . Por exemplo : se vc pede um desc 
  f_auditoria e ele te responde object "DBA_UNIFI"."F_AUDITORIA" , isso 
  implica que estão sendo usados sinônimos, e vc não imagina como é 
  fácil ter-se caquinhas tipo : existe um sinônimo PÚBLICO pro objeto 
  X, esse sinônimo público está incorreto, e ALGUNS usuários tem um 
  sinônimo PRIVADO correto, ambos com o mesmo nome do objeto - num caso 
  tipo esse, quem tem o sinônimo privado correto , o banco o encontra 
  antes do público, funciona ok, já quem não tem o privado, o banco cai 
  no sinônimo público, logicamente não funciona, exemplo :
  -->> Só existem sinonimos públicos no nosso database, inclusive existe um 
para a F_AUDITORIA
  o usuário PUBLIC não tem privilégio em nenhuma tabela .. nenhuma!


  [EMAIL PROTECTED]:SQL>create table TAB_TT (c1 number);

  Tabela criada.

  [EMAIL PROTECTED]:SQL>create public synonym TAB_TT for chiappa.lixo;

  Sinônimo criado.

  [EMAIL PROTECTED]:SQL>grant select on TAB_TT to public;

  Concessão bem-sucedida.

  ==> ok, vamos primeiro a um usuário que tem sinônimo privado :

  [EMAIL PROTECTED]:SQL>@conn scott/[EMAIL PROTECTED]
  Conectado.

  [EMAIL PROTECTED]:SQL>create synonym TAB_TT for chiappa.TAB_TT;

  Sinônimo criado.

  [EMAIL PROTECTED]:SQL>@desc tab_tt
  Nome  Nulo?Tipo
  -  --
  --
  C1 NUMBER

  ==> ok, funcionou, vamos ter um user que só tem acesso ao sin. 
  público, que está errado :

  [EMAIL PROTECTED]:SQL>@conn usr_consulta/[EMAIL PROTECTED]
  Conectado.
  [EMAIL PROTECTED]:SQL>@desc tab_tt
  ERROR:
  ORA-04043: o objeto "CHIAPPA"."LIXO" não existe


  ===>> é isso, confere ?? veja, eu ** NÃO ** estou dizendo que 
  é esse o seu problema, só demonstro que PODEM ocorrer coisas do tipo, 
  por incompetência/descontrole de administração dum banco Oracle, 
  certo ?? Só vc mesma, como DBA, é que VAI debugar isso
  -->> infelizmente esse não é meu problema (sinonimos) !!

  Da mesma forma, é ultra-documentado que quando vc acessa um objeto 
  que não é seu em stored PL/SQL, as roles por default SÂO DESLIGADAS, 
  são IGNORADAS, é preciso GRANT direto, será que não tem a ver com o 
  assunto ??
  -->> Tudo indica que estava faltando acesso, então é normal o dbms tem horas 
que  deixa gravar, e horas que não grava?

   Provável... Da mesma forma, a trigger :

  a) não dispara se houve erro no SQL

  b) dispara na MESMA transação, então se o cliente fizer um ROLLBACK 
  (seja rollback automático por erro, seja de propósito),o INSERT na 
  tabela de AUDIT *** vai *** ser desfeito Pra isto, AUTONOMOUS 
  TRANSACTION é a solução.
  -->> Ué mas não tem de ser desfeito mesmo? se foi feito o rollback na 
inserção da tabela de horario, não tem de "sair" da tabela de auditoria? 
entendi errado


  ==>  Então o seu trabalho é DEBUGAR exatamente a situação, e pra isso 
  como eu disse na msg original vc VAI ter que ver exatamente quais são 
  os objetos envolvidos, QUAL privilégio foi dado, COMO está sendo 
  feito o acesso à tabela de horas (se SQL ou PL/SQL) 

  []s

  Chiappa

  --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
  escreveu
  >
  > É  tanto misterio que veja algo:
  > 
  > 1. Conectei com o user1 (ADRIANAV)
  > 
  > SQL> desc f_auditoria
  > ERROR:
  > ORA-04043: object "DBA_UNIFI"."F_AUDITORIA" does not exist
  > 
  > 
  > SQL> desc dba_unifi.F_AUDITORIA
  > ERROR:
  > ORA-04043: object dba_unifi.F_AUDITORIA does not exist
  > 
  > 2.Vou ver os acessos da  ADRIANAV :
  > 
  > SQL> SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE  GRANTEE   
  = 'ADRIANAV' 
  >   2  /
  > 
  > GRANTED_ROLE
  > --
  > FDIS_VDA
  > 
  > SQL> select TABLE_NAME,  PRIVILEGE from dba_tab_privs where GRANTEE 
  = 'ADRIANAV'
  >   2  AND TABLE_NAME = 'F_AUDITORIA'
  >   3  /
  > 
  > não há linhas selecionadas
  > 
  > SQL>  select TABLE_N

Re: [oracle_br] Re: duvida de privilegios - a duvida continua

2006-02-09 Por tôpico ESTUDO
Chiappa, posso comentar?
comentarios no meio das respostas!
  - Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, February 09, 2006 11:32 AM
  Subject: [oracle_br] Re: duvida de privilegios - a duvida continua


  Nah, não creio que seja mistério não, muito provavelmente esse banco 
  tem é umas lambanças das boas nele . Por exemplo : se vc pede um desc 
  f_auditoria e ele te responde object "DBA_UNIFI"."F_AUDITORIA" , isso 
  implica que estão sendo usados sinônimos, e vc não imagina como é 
  fácil ter-se caquinhas tipo : existe um sinônimo PÚBLICO pro objeto 
  X, esse sinônimo público está incorreto, e ALGUNS usuários tem um 
  sinônimo PRIVADO correto, ambos com o mesmo nome do objeto - num caso 
  tipo esse, quem tem o sinônimo privado correto , o banco o encontra 
  antes do público, funciona ok, já quem não tem o privado, o banco cai 
  no sinônimo público, logicamente não funciona, exemplo :
  -->> Só existem sinonimos públicos no nosso database, inclusive existe um 
para a F_AUDITORIA
  o usuário PUBLIC não tem privilégio em nenhuma tabela .. nenhuma!


  [EMAIL PROTECTED]:SQL>create table TAB_TT (c1 number);

  Tabela criada.

  [EMAIL PROTECTED]:SQL>create public synonym TAB_TT for chiappa.lixo;

  Sinônimo criado.

  [EMAIL PROTECTED]:SQL>grant select on TAB_TT to public;

  Concessão bem-sucedida.

  ==> ok, vamos primeiro a um usuário que tem sinônimo privado :

  [EMAIL PROTECTED]:SQL>@conn scott/[EMAIL PROTECTED]
  Conectado.

  [EMAIL PROTECTED]:SQL>create synonym TAB_TT for chiappa.TAB_TT;

  Sinônimo criado.

  [EMAIL PROTECTED]:SQL>@desc tab_tt
  Nome  Nulo?Tipo
  -  --
  --
  C1 NUMBER

  ==> ok, funcionou, vamos ter um user que só tem acesso ao sin. 
  público, que está errado :

  [EMAIL PROTECTED]:SQL>@conn usr_consulta/[EMAIL PROTECTED]
  Conectado.
  [EMAIL PROTECTED]:SQL>@desc tab_tt
  ERROR:
  ORA-04043: o objeto "CHIAPPA"."LIXO" não existe


  ===>> é isso, confere ?? veja, eu ** NÃO ** estou dizendo que 
  é esse o seu problema, só demonstro que PODEM ocorrer coisas do tipo, 
  por incompetência/descontrole de administração dum banco Oracle, 
  certo ?? Só vc mesma, como DBA, é que VAI debugar isso
  -->> infelizmente esse não é meu problema (sinonimos) !!

  Da mesma forma, é ultra-documentado que quando vc acessa um objeto 
  que não é seu em stored PL/SQL, as roles por default SÂO DESLIGADAS, 
  são IGNORADAS, é preciso GRANT direto, será que não tem a ver com o 
  assunto ??
  -->> Tudo indica que estava faltando acesso, então é normal o dbms tem horas 
que  deixa gravar, e horas que não grava?

   Provável... Da mesma forma, a trigger :

  a) não dispara se houve erro no SQL

  b) dispara na MESMA transação, então se o cliente fizer um ROLLBACK 
  (seja rollback automático por erro, seja de propósito),o INSERT na 
  tabela de AUDIT *** vai *** ser desfeito Pra isto, AUTONOMOUS 
  TRANSACTION é a solução.
  -->> Ué mas não tem de ser desfeito mesmo? se foi feito o rollback na 
inserção da tabela de horario, não tem de "sair" da tabela de auditoria? 
entendi errado


  ==>  Então o seu trabalho é DEBUGAR exatamente a situação, e pra isso 
  como eu disse na msg original vc VAI ter que ver exatamente quais são 
  os objetos envolvidos, QUAL privilégio foi dado, COMO está sendo 
  feito o acesso à tabela de horas (se SQL ou PL/SQL) 

  []s

  Chiappa

  --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
  escreveu
  >
  > É  tanto misterio que veja algo:
  > 
  > 1. Conectei com o user1 (ADRIANAV)
  > 
  > SQL> desc f_auditoria
  > ERROR:
  > ORA-04043: object "DBA_UNIFI"."F_AUDITORIA" does not exist
  > 
  > 
  > SQL> desc dba_unifi.F_AUDITORIA
  > ERROR:
  > ORA-04043: object dba_unifi.F_AUDITORIA does not exist
  > 
  > 2.Vou ver os acessos da  ADRIANAV :
  > 
  > SQL> SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE  GRANTEE   
  = 'ADRIANAV' 
  >   2  /
  > 
  > GRANTED_ROLE
  > --
  > FDIS_VDA
  > 
  > SQL> select TABLE_NAME,  PRIVILEGE from dba_tab_privs where GRANTEE 
  = 'ADRIANAV'
  >   2  AND TABLE_NAME = 'F_AUDITORIA'
  >   3  /
  > 
  > não há linhas selecionadas
  > 
  > SQL>  select TABLE_NAME,  PRIVILEGE from dba_tab_privs where 
  GRANTEE = 'FDIS_VDA'
  >   2   AND TABLE_NAME = 'F_AUDITORIA'
  >   3  /
  > 
  > não há linhas selecionadas
  > 
  > SQL> Select TABLE_NAME,  PRIVILEGE from dba_COL_privs where 
  GRANTEE  IN ('FDIS_VDA','ADRIANAV')

[oracle_br] Re: duvida de privilegios - a duvida continua

2006-02-09 Por tôpico jlchiappa
  09/02/06 
VAGA=012  93036
> F_HORARIO_REAL 09/02/06 
VAGA=012  93036
> F_HORARIO_REAL 09/02/06 
VAGA=012  93036
> F_HORARIO_REAL             09/02/06 
VAGA=014  92316
> F_HORARIO_REAL 09/02/06 
VAGA=013  93041
> F_HORARIO_REAL 09/02/06 
VAGA=013  93041
> 
> 
> Obrigada
> 
> Cris
> 
> 
>   - Original Message - 
>   From: jlchiappa 
>   To: oracle_br@yahoogrupos.com.br 
>   Sent: Thursday, February 09, 2006 9:25 AM
>   Subject: [oracle_br] Re: duvida de privilegios
> 
> 
>   Não, o usuário recebeu GRANT de DML na tab de horário, é ** 
APENAS ** 
>   isso que ele vai poder fazer diretamente : já que a tabela tem um 
>   PL/SQL "amarrado" nela, o PL/SQL vai ser executado, ** MAS ** vai 
ser 
>   executado na conta do dono, o usuário final ** NÂO ** vai receber 
>   nenhum priv extra. Exemplo :
> 
>   ==> usuário master cria tudo :
> 
>   [EMAIL PROTECTED]:SQL>create table TAB_HORA(c1 number);
> 
>   Tabela criada.
> 
>   [EMAIL PROTECTED]:SQL>create table TAB_AUDIT(username varchar2(50), 
>   datahora date);
> 
>   Tabela criada.
> 
>   [EMAIL PROTECTED]:SQL>create trigger TRG_AUDIT after INSERT on TAB_HORA
> 2  BEGIN
> 3 insert into TAB_AUDIT values(user, sysdate);
> 4  END;
> 5  /
> 
>   Gatilho criado.
> 
>   ==> dou GRANT ** apenas ** de INSERT na tabela de hora, então é 
>   APENAS isso que o usuário-final vai ter :
> 
>   [EMAIL PROTECTED]:SQL>grant insert on TAB_HORA to SCOTT;
> 
>   Concessão bem-sucedida.
> 
>   ==> vamos conectar como usuário-final :
> 
>   [EMAIL PROTECTED]:SQL>create synonym TAB_HORA for chiappa.TAB_HORA;
> 
>   Sinônimo criado.
> 
>   [EMAIL PROTECTED]:SQL>insert into TAB_HORA values(1);
> 
>   1 linha criada.
> 
>   [EMAIL PROTECTED]:SQL>commit;
> 
>   Validação completa.
> 
>   ==> consegui fazer o que tenho GRANT, veja que ** NÂO ** recebi 
>   grant "extra" nenhum por causa da trigger :
> 
>   [EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT;
>   select * from chiappa.TAB_AUDIT
> *
>   ERRO na linha 1:
>   ORA-01031: privilégios insuficientes << ok ??
> 
> 
>   ==> mas veja que o PL/SQL ** foi ** sim executado, mas na conta 
do 
>   master :
> 
> 
>   [EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT;
> 
>   USERNAME DATAHORA
>    ---
>   SCOTT        09/02/2006 09:32:17
> 
>   []s
> 
>   Chiappa
>   --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
>   escreveu
>   >
>   > olá Chiappa.. hum vou tentar explicar melhor.. mas acredito q 
vc ja 
>   respondeu.
>   > Quem criou a trigger e a tabela de auditoria e de horario  foi 
o 
>   usuario master.
>   > 
>   > O master deu acesso de insert na tabela de horario pro usuario 
>   user1.
>   > 
>   > Então isso quer dizer que o user1 tem acesso na auditoria por 
ela 
>   estar na trigger da tabela de horario?
>   > 
>   >   - Original Message - 
>   >   From: jlchiappa 
>   >   To: oracle_br@yahoogrupos.com.br 
>   >   Sent: Thursday, February 09, 2006 8:38 AM
>   >   Subject: [oracle_br] Re: duvida de privilegios
>   > 
>   > 
>   >   Tá meio confuso aí : a QUEM pertence (ie, quem criou) a 
tabela de 
>   >   auditoria ?? QUEM criou o trigger ?? A regra no PL/SQL 
(trigger é 
>   >   PL/SQL) funciona assim : que criou e é dono do objeto SEMPRE 
o 
>   consegue 
>   >   usar normalmente em qquer PL/SQL que ele mesmo vá criar. 
>   >   Já se a tabela de dados em questão e a trigger foram criada 
por 
>   um 
>   >   OUTRO usuário e o usuário destino recebeu grant de DML nela, 
>   >   automaticamente o "GRANT de execução" do trigger vem junto, e 
a 
>   trigger 
>   >   vai rodar sob permissão do usuário que a criou, o que implica 
que 
>   terá 
>   >   acesso á tabela de auditoria normalmente.
>   > Se não é isso a sua situação, explica melhor aí, que a 
gente 
>   tenta 
>   >   solucionar a sua dúvida.
>   > 
>   >   []s
>   > 
>   >   Chiappa
>   >   --- Em oracle_br@yahoogrupos.co

Re: [oracle_br] Re: duvida de privilegios - a duvida continua

2006-02-09 Por tôpico ESTUDO
É  tanto misterio que veja algo:

1. Conectei com o user1 (ADRIANAV)

SQL> desc f_auditoria
ERROR:
ORA-04043: object "DBA_UNIFI"."F_AUDITORIA" does not exist


SQL> desc dba_unifi.F_AUDITORIA
ERROR:
ORA-04043: object dba_unifi.F_AUDITORIA does not exist

2.Vou ver os acessos da  ADRIANAV :

SQL> SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE  GRANTEE   = 'ADRIANAV' 
  2  /

GRANTED_ROLE
--
FDIS_VDA

SQL> select TABLE_NAME,  PRIVILEGE from dba_tab_privs where GRANTEE = 'ADRIANAV'
  2  AND TABLE_NAME = 'F_AUDITORIA'
  3  /

não há linhas selecionadas

SQL>  select TABLE_NAME,  PRIVILEGE from dba_tab_privs where GRANTEE = 
'FDIS_VDA'
  2   AND TABLE_NAME = 'F_AUDITORIA'
  3  /

não há linhas selecionadas

SQL> Select TABLE_NAME,  PRIVILEGE from dba_COL_privs where GRANTEE  IN 
('FDIS_VDA','ADRIANAV')
  2  AND TABLE_NAME = 'F_AUDITORIA'
  3  /
não há linhas selecionadas


Bom ela nao tem acesso na F_AUDITORIA, mas como ela ja gravou isso HJ?


 Select TABELA, DATA,SUBSTR(CONTEUDO_ANTIGO,8,12) antigo, hora from f_auditoria
 where USUARIO =  'ADRIANAV'
 and tabela =  'F_HORARIO_REAL'
 and data = '09/02/2006'

TABELA DATA ANTIGO 
HORA
--   
--
F_HORARIO_REAL 09/02/06 VAGA=025  
93036
F_HORARIO_REAL 09/02/06 VAGA=010  
93036
F_HORARIO_REAL 09/02/06 VAGA=010  
93036
F_HORARIO_REAL 09/02/06 VAGA=012  
93036
F_HORARIO_REAL 09/02/06 VAGA=012  
93036
F_HORARIO_REAL 09/02/06 VAGA=012  
93036
F_HORARIO_REAL 09/02/06 VAGA=012  
93036
F_HORARIO_REAL 09/02/06 VAGA=014  
92316
F_HORARIO_REAL 09/02/06 VAGA=013  
93041
F_HORARIO_REAL 09/02/06 VAGA=013  
93041


Obrigada

Cris


  ----- Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, February 09, 2006 9:25 AM
  Subject: [oracle_br] Re: duvida de privilegios


  Não, o usuário recebeu GRANT de DML na tab de horário, é ** APENAS ** 
  isso que ele vai poder fazer diretamente : já que a tabela tem um 
  PL/SQL "amarrado" nela, o PL/SQL vai ser executado, ** MAS ** vai ser 
  executado na conta do dono, o usuário final ** NÂO ** vai receber 
  nenhum priv extra. Exemplo :

  ==> usuário master cria tudo :

  [EMAIL PROTECTED]:SQL>create table TAB_HORA(c1 number);

  Tabela criada.

  [EMAIL PROTECTED]:SQL>create table TAB_AUDIT(username varchar2(50), 
  datahora date);

  Tabela criada.

  [EMAIL PROTECTED]:SQL>create trigger TRG_AUDIT after INSERT on TAB_HORA
2  BEGIN
3 insert into TAB_AUDIT values(user, sysdate);
4  END;
5  /

  Gatilho criado.

  ==> dou GRANT ** apenas ** de INSERT na tabela de hora, então é 
  APENAS isso que o usuário-final vai ter :

  [EMAIL PROTECTED]:SQL>grant insert on TAB_HORA to SCOTT;

  Concessão bem-sucedida.

  ==> vamos conectar como usuário-final :

  [EMAIL PROTECTED]:SQL>create synonym TAB_HORA for chiappa.TAB_HORA;

  Sinônimo criado.

  [EMAIL PROTECTED]:SQL>insert into TAB_HORA values(1);

  1 linha criada.

  [EMAIL PROTECTED]:SQL>commit;

  Validação completa.

  ==> consegui fazer o que tenho GRANT, veja que ** NÂO ** recebi 
  grant "extra" nenhum por causa da trigger :

  [EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT;
  select * from chiappa.TAB_AUDIT
*
  ERRO na linha 1:
  ORA-01031: privilégios insuficientes << ok ??


  ==> mas veja que o PL/SQL ** foi ** sim executado, mas na conta do 
  master :


  [EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT;

  USERNAME DATAHORA
   ---
  SCOTT09/02/2006 09:32:17

  []s

  Chiappa
  --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
  escreveu
  >
  > olá Chiappa.. hum vou tentar explicar melhor.. mas acredito q vc ja 
  respondeu.
  > Quem criou a trigger e a tabela de auditoria e de horario  foi o 
  usuario master.
  > 
  > O master deu acesso de insert na tabela de horario pro usuario 
  user1.
  > 
  > Então isso quer dizer que o user1 tem acesso na auditoria por ela 
  estar na trigger da tabela de horario?
  > 
  >   - Original Message - 
  >   From: jlchiappa 
  >   To: oracle_br@yahoogrupos.com.br 
  >   Sent: Thursday, February 09, 2006 8:38 AM

Re: [oracle_br] Re: duvida de privilegios

2006-02-09 Por tôpico ESTUDO
concordo com vc, e era isso que eu pensei que aconteceria.
Mas aqui o usuario USER1 hora consegue, hora nao consegue gravar na 
auditoria... e não tem como ele estar usando outra conta, pois na tabela de 
auditoria grava o user logado.
Ja ví se o usuario user1 não tem acesso em alguma role que tenha acesso a essa 
tabela ( de auditoria), mas a mesma só tinha cesso  a uma role X, e a role nao 
tem acesso na tabela de auditoria.
Pior que preciso descobrir o que esta acontecendo de hora ter gravado na 
auditoria, hora não ter gravado... 

Obrigada Chiappa pelos esclarecimentos.


Cris

  - Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, February 09, 2006 9:25 AM
  Subject: [oracle_br] Re: duvida de privilegios


  Não, o usuário recebeu GRANT de DML na tab de horário, é ** APENAS ** 
  isso que ele vai poder fazer diretamente : já que a tabela tem um 
  PL/SQL "amarrado" nela, o PL/SQL vai ser executado, ** MAS ** vai ser 
  executado na conta do dono, o usuário final ** NÂO ** vai receber 
  nenhum priv extra. Exemplo :

  ==> usuário master cria tudo :

  [EMAIL PROTECTED]:SQL>create table TAB_HORA(c1 number);

  Tabela criada.

  [EMAIL PROTECTED]:SQL>create table TAB_AUDIT(username varchar2(50), 
  datahora date);

  Tabela criada.

  [EMAIL PROTECTED]:SQL>create trigger TRG_AUDIT after INSERT on TAB_HORA
2  BEGIN
3 insert into TAB_AUDIT values(user, sysdate);
4  END;
5  /

  Gatilho criado.

  ==> dou GRANT ** apenas ** de INSERT na tabela de hora, então é 
  APENAS isso que o usuário-final vai ter :

  [EMAIL PROTECTED]:SQL>grant insert on TAB_HORA to SCOTT;

  Concessão bem-sucedida.

  ==> vamos conectar como usuário-final :

  [EMAIL PROTECTED]:SQL>create synonym TAB_HORA for chiappa.TAB_HORA;

  Sinônimo criado.

  [EMAIL PROTECTED]:SQL>insert into TAB_HORA values(1);

  1 linha criada.

  [EMAIL PROTECTED]:SQL>commit;

  Validação completa.

  ==> consegui fazer o que tenho GRANT, veja que ** NÂO ** recebi 
  grant "extra" nenhum por causa da trigger :

  [EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT;
  select * from chiappa.TAB_AUDIT
*
  ERRO na linha 1:
  ORA-01031: privilégios insuficientes << ok ??


  ==> mas veja que o PL/SQL ** foi ** sim executado, mas na conta do 
  master :


  [EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT;

  USERNAME DATAHORA
   ---
  SCOTT09/02/2006 09:32:17

  []s

  Chiappa
  --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
  escreveu
  >
  > olá Chiappa.. hum vou tentar explicar melhor.. mas acredito q vc ja 
  respondeu.
  > Quem criou a trigger e a tabela de auditoria e de horario  foi o 
  usuario master.
  > 
  > O master deu acesso de insert na tabela de horario pro usuario 
  user1.
  > 
  > Então isso quer dizer que o user1 tem acesso na auditoria por ela 
  estar na trigger da tabela de horario?
  > 
  >   - Original Message - 
  >   From: jlchiappa 
  >   To: oracle_br@yahoogrupos.com.br 
  >   Sent: Thursday, February 09, 2006 8:38 AM
  >   Subject: [oracle_br] Re: duvida de privilegios
  > 
  > 
  >   Tá meio confuso aí : a QUEM pertence (ie, quem criou) a tabela de 
  >   auditoria ?? QUEM criou o trigger ?? A regra no PL/SQL (trigger é 
  >   PL/SQL) funciona assim : que criou e é dono do objeto SEMPRE o 
  consegue 
  >   usar normalmente em qquer PL/SQL que ele mesmo vá criar. 
  >   Já se a tabela de dados em questão e a trigger foram criada por 
  um 
  >   OUTRO usuário e o usuário destino recebeu grant de DML nela, 
  >   automaticamente o "GRANT de execução" do trigger vem junto, e a 
  trigger 
  >   vai rodar sob permissão do usuário que a criou, o que implica que 
  terá 
  >   acesso á tabela de auditoria normalmente.
  > Se não é isso a sua situação, explica melhor aí, que a gente 
  tenta 
  >   solucionar a sua dúvida.
  > 
  >   []s
  > 
  >   Chiappa
  >   --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
  escreveu
  >   >
  >   > Bom Dia
  >   > 
  >   > Pessoal, estou com a seguinte duvida:
  >   > Tenho uma tabela de auditoria uma de horario e o usuario user1.
  >   > O user1 tem acesso full na tabela de horario.
  >   > Na tabela de horario tenho uma trigger que insere na auditoria.
  >   > 
  >   > Pergunta: O user1 precisa ter acesso na auditoria pra trigger 
  >   funcionar?
  >   > 
  >   > Obrigada
  >   > 
  >   > Cris
  >   > 
  >   > 
  >   > [As partes desta mensagem que não continham texto foram 
  removidas]
  >   >
  > 
  > 
  > 
  > 
  > 

[oracle_br] Re: duvida de privilegios

2006-02-09 Por tôpico jlchiappa
Não, o usuário recebeu GRANT de DML na tab de horário, é ** APENAS ** 
isso que ele vai poder fazer diretamente : já que a tabela tem um 
PL/SQL "amarrado" nela, o PL/SQL vai ser executado, ** MAS ** vai ser 
executado na conta do dono, o usuário final ** NÂO ** vai receber 
nenhum priv extra. Exemplo :

==> usuário master cria tudo :

[EMAIL PROTECTED]:SQL>create table TAB_HORA(c1 number);

Tabela criada.

[EMAIL PROTECTED]:SQL>create table TAB_AUDIT(username varchar2(50), 
datahora date);

Tabela criada.

[EMAIL PROTECTED]:SQL>create trigger TRG_AUDIT after INSERT on TAB_HORA
  2  BEGIN
  3 insert into TAB_AUDIT values(user, sysdate);
  4  END;
  5  /

Gatilho criado.

==> dou GRANT ** apenas ** de INSERT na tabela de hora, então é 
APENAS isso que o usuário-final vai ter :

[EMAIL PROTECTED]:SQL>grant insert on TAB_HORA to SCOTT;

Concessão bem-sucedida.

==> vamos conectar como usuário-final :

[EMAIL PROTECTED]:SQL>create synonym TAB_HORA for chiappa.TAB_HORA;

Sinônimo criado.

[EMAIL PROTECTED]:SQL>insert into TAB_HORA values(1);

1 linha criada.

[EMAIL PROTECTED]:SQL>commit;

Validação completa.

==> consegui fazer o que tenho GRANT, veja que ** NÂO ** recebi 
grant "extra" nenhum por causa da trigger :

[EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT;
select * from chiappa.TAB_AUDIT
  *
ERRO na linha 1:
ORA-01031: privilégios insuficientes << ok ??


==> mas veja que o PL/SQL ** foi ** sim executado, mas na conta do 
master :


[EMAIL PROTECTED]:SQL>select * from chiappa.TAB_AUDIT;

USERNAME DATAHORA
 ---
SCOTT09/02/2006 09:32:17

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
escreveu
>
> olá Chiappa.. hum vou tentar explicar melhor.. mas acredito q vc ja 
respondeu.
> Quem criou a trigger e a tabela de auditoria e de horario  foi o 
usuario master.
> 
> O master deu acesso de insert na tabela de horario pro usuario 
user1.
> 
> Então isso quer dizer que o user1 tem acesso na auditoria por ela 
estar na trigger da tabela de horario?
> 
>   - Original Message - 
>   From: jlchiappa 
>   To: oracle_br@yahoogrupos.com.br 
>   Sent: Thursday, February 09, 2006 8:38 AM
>   Subject: [oracle_br] Re: duvida de privilegios
> 
> 
>   Tá meio confuso aí : a QUEM pertence (ie, quem criou) a tabela de 
>   auditoria ?? QUEM criou o trigger ?? A regra no PL/SQL (trigger é 
>   PL/SQL) funciona assim : que criou e é dono do objeto SEMPRE o 
consegue 
>   usar normalmente em qquer PL/SQL que ele mesmo vá criar. 
>   Já se a tabela de dados em questão e a trigger foram criada por 
um 
>   OUTRO usuário e o usuário destino recebeu grant de DML nela, 
>   automaticamente o "GRANT de execução" do trigger vem junto, e a 
trigger 
>   vai rodar sob permissão do usuário que a criou, o que implica que 
terá 
>   acesso á tabela de auditoria normalmente.
> Se não é isso a sua situação, explica melhor aí, que a gente 
tenta 
>   solucionar a sua dúvida.
> 
>   []s
> 
>   Chiappa
>   --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> 
escreveu
>   >
>   > Bom Dia
>   > 
>   > Pessoal, estou com a seguinte duvida:
>   > Tenho uma tabela de auditoria uma de horario e o usuario user1.
>   > O user1 tem acesso full na tabela de horario.
>   > Na tabela de horario tenho uma trigger que insere na auditoria.
>   > 
>   > Pergunta: O user1 precisa ter acesso na auditoria pra trigger 
>   funcionar?
>   > 
>   > Obrigada
>   > 
>   > Cris
>   > 
>   > 
>   > [As partes desta mensagem que não continham texto foram 
removidas]
>   >
> 
> 
> 
> 
> 
> 
>   --

>   Atenção! As mensagens deste grupo são de acesso público e de 
inteira responsabilidade de seus remetentes.
>   Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
>   --

__
>   Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED]
>   
__ 
> 
> 
> Yahoo! Grupos, um serviço oferecido por: 
>   PUBLICIDADE
> 
>
> 
> 
> 
--
>   Links do Yahoo! Grupos
> 

Re: [oracle_br] Re: duvida de privilegios

2006-02-09 Por tôpico ESTUDO
olá Chiappa.. hum vou tentar explicar melhor.. mas acredito q vc ja respondeu.
Quem criou a trigger e a tabela de auditoria e de horario  foi o usuario master.

O master deu acesso de insert na tabela de horario pro usuario user1.

Então isso quer dizer que o user1 tem acesso na auditoria por ela estar na 
trigger da tabela de horario?

  - Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, February 09, 2006 8:38 AM
  Subject: [oracle_br] Re: duvida de privilegios


  Tá meio confuso aí : a QUEM pertence (ie, quem criou) a tabela de 
  auditoria ?? QUEM criou o trigger ?? A regra no PL/SQL (trigger é 
  PL/SQL) funciona assim : que criou e é dono do objeto SEMPRE o consegue 
  usar normalmente em qquer PL/SQL que ele mesmo vá criar. 
  Já se a tabela de dados em questão e a trigger foram criada por um 
  OUTRO usuário e o usuário destino recebeu grant de DML nela, 
  automaticamente o "GRANT de execução" do trigger vem junto, e a trigger 
  vai rodar sob permissão do usuário que a criou, o que implica que terá 
  acesso á tabela de auditoria normalmente.
Se não é isso a sua situação, explica melhor aí, que a gente tenta 
  solucionar a sua dúvida.

  []s

  Chiappa
  --- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> escreveu
  >
  > Bom Dia
  > 
  > Pessoal, estou com a seguinte duvida:
  > Tenho uma tabela de auditoria uma de horario e o usuario user1.
  > O user1 tem acesso full na tabela de horario.
  > Na tabela de horario tenho uma trigger que insere na auditoria.
  > 
  > Pergunta: O user1 precisa ter acesso na auditoria pra trigger 
  funcionar?
  > 
  > Obrigada
  > 
  > Cris
  > 
  > 
  > [As partes desta mensagem que não continham texto foram removidas]
  >






  
--
  Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
  Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
  
--__
  Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED]
  __ 


Yahoo! Grupos, um serviço oferecido por: 
  PUBLICIDADE

   


--
  Links do Yahoo! Grupos

a.. Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/
  
b.. Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
  
c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



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



--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__
Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED]
__ 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: duvida de privilegios

2006-02-09 Por tôpico jlchiappa
Tá meio confuso aí : a QUEM pertence (ie, quem criou) a tabela de 
auditoria ?? QUEM criou o trigger ?? A regra no PL/SQL (trigger é 
PL/SQL) funciona assim : que criou e é dono do objeto SEMPRE o consegue 
usar normalmente em qquer PL/SQL que ele mesmo vá criar. 
 Já se a tabela de dados em questão e a trigger foram criada por um 
OUTRO usuário e o usuário destino recebeu grant de DML nela, 
automaticamente o "GRANT de execução" do trigger vem junto, e a trigger 
vai rodar sob permissão do usuário que a criou, o que implica que terá 
acesso á tabela de auditoria normalmente.
  Se não é isso a sua situação, explica melhor aí, que a gente tenta 
solucionar a sua dúvida.

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, "ESTUDO" <[EMAIL PROTECTED]> escreveu
>
> Bom Dia
> 
> Pessoal, estou com a seguinte duvida:
> Tenho uma tabela de auditoria uma de horario e o usuario user1.
> O user1 tem acesso full na tabela de horario.
> Na tabela de horario tenho uma trigger que insere na auditoria.
> 
> Pergunta: O user1 precisa ter acesso na auditoria pra trigger 
funcionar?
> 
> Obrigada
> 
> Cris
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__
Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED]
__ 
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: DUVIDA em SQL

2006-01-13 Por tôpico André Santos
Ronie

Dependendo do tamanho da tabela, talvez a consulta demore.
Mas como é apenas para um teste específico, imagino que não tenha 
muito problema, não é?

Espero que ajude!

[ ]

André


--- Em oracle_br@yahoogrupos.com.br, "khraken" <[EMAIL PROTECTED]> 
escreveu
>
> Olá André!
> Agradeço pelas recomendações.
> Vou orientar para que o teste seja efetuado. Ontem eu já havia
> questionado sobre a questão dos dados, os quais poderiam estar
> impossibilitando a conversão. Pedi para que fizessem uma análise na
> tabela etc...  Bom, acho que essa mudança fica pro outro fim de
> semana...  :)
> 
> Grato pela e ajuda!
> Ronie.
> 
> --- Em oracle_br@yahoogrupos.com.br, André Santos
> <[EMAIL PROTECTED]> escreveu
> >
> > Ronie
> > 
> > Também já tive problemas com pessoal dos fornecedores 
de "pacotes" 
> > que insistem que não há problema na aplicação... botam a culpa 
na 
> > versão do Oracle, no sistema operacional, blá-blá-blá...
> > 
> > Mas tem que ter MUITA paciência nessas horas e demonstrar (ou 
> > melhor, **provar**) a causa do erro.
> > 
> > Certamente a culpa NÃO é da versão do Oracle!
> > Qualquer TO_NUMBER('string') pode gerar esse erro.
> > Então o que causa isso é o ***CONTEÚDO*** da tabela: no BD do 9i 
> > deve haver só strings válidas na conversão, mas no BD do 10g 
deve 
> > ter alguns casos de dados inválidos para a TO_NUMBER.
> > 
> > Você pode utilizar a função que o Ivan passou, para achar esses 
> > casos. =^D
> > 
> > Exemplo:
> > -
> > SELECT
> >  RTRIM(SUBSTR(CD_USUARIO,1,3)) AS CAT_CART,
> >  RTRIM(SUBSTR(CD_USUARIO,4,10)) AS COD_IDEN,
> >  RTRIM(NUM_CARTAO)) AS NREXTCAR,
> >  FROM schema.view_do_fornecedor
> >  WHERE SUBSTR(CD_USUARIO,1,3) IN
> >  ('101','102','103','104','105','106',
> >  '107','108','109','110','111','112','113')
> >  AND
> >  (
> > IS_NUMBER(RTRIM(SUBSTR(CD_USUARIO,1,3))) IS NULL
> >  OR IS_NUMBER(RTRIM(SUBSTR(CD_USUARIO,4,10))) IS NULL
> >  OR IS_NUMBER(RTRIM(NUM_CARTAO)) IS NULL
> >  );
> > -
> > 
> > Crie a função IS_NUMBER que o Ivan mandou e faça a consulta 
acima.
> > Isso deve retornar os dados que causam o problema.
> > 
> > [ ]
> > 
> > André
> > 
> > 
> > --- Em oracle_br@yahoogrupos.com.br, "khraken" 
<[EMAIL PROTECTED]> 
> > escreveu
> > >
> > > Olá André e Ivan!
> > > Bom dia e grato por responder!
> > > A bem da verdade o que ocorre é o seguinte:
> > > 
> > > Temos um software de uma empresa de SP que faz controle de 
acesso 
> > dos
> > > funcionários do prédio. Nossa versão atual dos softwares são: 
Rh 8 
> > e
> > > Oracle 9.2.0.4. A intenção é migrar para RH AS Linux 4.0 com 
Ora 
> > 10gR2
> > > (10.2.0.1.0). Um dos acordos com a empresa dona do software 
que 
> > faz o
> > > controle de acesso é que não podemos ter acesso direto às 
tabelas 
> > do
> > > mesmos, então acessamos algumas informações de lá através de 
VIEWS.
> > > Bom, o acesso que apresenta o erro está vindo de uma outra 
view que
> > > temos aqui, pottanto view fazendo select em outra view.
> > > Nos testes anteriores com 10gR2, onde peguei o problema, 
encontrei
> > > como solução para a questão, forçar o to_char dentro do where 
uma 
> > vez
> > > que percebi que a conversão prá to_number não estava ocorrendo 
e 
> > aí, o
> > > erro não apareceu mais. Então pedi aos Analistas de 
Desenvolvimento
> > > que alterassem as aplicações e boa. Isso foi em 
01/12/05. "ELES NÃO
> > > ALTERARAM", pois insistem que uma vez que funciona no 9i, tem 
que
> > > funcionar no 10g e bla,bla... Abaixo a view e o sql que 
acessa:
> > > 
> > > CREATE OR REPLACE VIEW VISAO 
("CAT_CART","COD_IDEN","NREXTCAR") 
> > > AS SELECT
> > > TO_NUMBER(RTRIM(SUBSTR(CD_USUARIO,1,3)),'999') AS CAT_CART,
> > > TO_NUMBER(RTRIM(SUBSTR(CD_USUARIO,4,10)),'99') AS 
COD_IDEN,
> > > TO_NUMBER(RTRIM(NUM_CARTAO)) AS NREXTCAR,
> > > FROM schema.view_do_fornecedor
> > > WHERE SUBSTR(CD_USUARIO,1,3) IN 
> > ('101','102','103','104','105','106',
> > > '107','108','109','110','111','112','113') WITH CHECK OPTION ;
> > > 
> > > select a.cat_cart, a.cod_iden 
> > > FROM
> > > smart.v1 a,
> > > smart.v6 b,
> > > smart.v42 c
> > > WHERE
> > > a.cat_cart = c.cat_cart and a.cod_iden = c.cod_iden
> > > and b.data is not null
> > > and (b.uni = 'DAC')
> > > and (a.cat_cart = 108)
> > > and (a.cat_cart = b.cat_cart and a.cod_iden = b.cod_iden)
> > > and (b.dainccar is not null)
> > > and rownum < 11;
> > > 
> > > OBS: cat_cat e cod_iden em V1,V6 e V42 são numbers.
> > > 
> > > 
> > > SQL> desc v42;
> > > 
> > > CAT_CART NUMBER
> > > COD_IDEN NUMBER
> > > NREXTCAR NUMBER
> > > 
> > > 
> > > SQL> @sql.sql
> > > select a.cat_cart, a.cod_iden, a.tmovuni, b.dainccar
> > >  *
> > > ERROR at line 1:
> > > ORA-01722: invalid number
> > > 
> > > 
> > > Relembrando, o erro não ocorre no 9i.
> > > 
> > > 
> > > Agradeço pelas sugestões.
> > > Lamento e peço desculpas aos demais pela extensão do texto.
> > > Meus respeitos à todos,
> > > Co

[oracle_br] Re: DUVIDA em SQL

2006-01-13 Por tôpico khraken
Olá André!
Agradeço pelas recomendações.
Vou orientar para que o teste seja efetuado. Ontem eu já havia
questionado sobre a questão dos dados, os quais poderiam estar
impossibilitando a conversão. Pedi para que fizessem uma análise na
tabela etc...  Bom, acho que essa mudança fica pro outro fim de
semana...  :)

Grato pela e ajuda!
Ronie.

--- Em oracle_br@yahoogrupos.com.br, André Santos
<[EMAIL PROTECTED]> escreveu
>
> Ronie
> 
> Também já tive problemas com pessoal dos fornecedores de "pacotes" 
> que insistem que não há problema na aplicação... botam a culpa na 
> versão do Oracle, no sistema operacional, blá-blá-blá...
> 
> Mas tem que ter MUITA paciência nessas horas e demonstrar (ou 
> melhor, **provar**) a causa do erro.
> 
> Certamente a culpa NÃO é da versão do Oracle!
> Qualquer TO_NUMBER('string') pode gerar esse erro.
> Então o que causa isso é o ***CONTEÚDO*** da tabela: no BD do 9i 
> deve haver só strings válidas na conversão, mas no BD do 10g deve 
> ter alguns casos de dados inválidos para a TO_NUMBER.
> 
> Você pode utilizar a função que o Ivan passou, para achar esses 
> casos. =^D
> 
> Exemplo:
> -
> SELECT
>  RTRIM(SUBSTR(CD_USUARIO,1,3)) AS CAT_CART,
>  RTRIM(SUBSTR(CD_USUARIO,4,10)) AS COD_IDEN,
>  RTRIM(NUM_CARTAO)) AS NREXTCAR,
>  FROM schema.view_do_fornecedor
>  WHERE SUBSTR(CD_USUARIO,1,3) IN
>  ('101','102','103','104','105','106',
>  '107','108','109','110','111','112','113')
>  AND
>  (
> IS_NUMBER(RTRIM(SUBSTR(CD_USUARIO,1,3))) IS NULL
>  OR IS_NUMBER(RTRIM(SUBSTR(CD_USUARIO,4,10))) IS NULL
>  OR IS_NUMBER(RTRIM(NUM_CARTAO)) IS NULL
>  );
> -
> 
> Crie a função IS_NUMBER que o Ivan mandou e faça a consulta acima.
> Isso deve retornar os dados que causam o problema.
> 
> [ ]
> 
> André
> 
> 
> --- Em oracle_br@yahoogrupos.com.br, "khraken" <[EMAIL PROTECTED]> 
> escreveu
> >
> > Olá André e Ivan!
> > Bom dia e grato por responder!
> > A bem da verdade o que ocorre é o seguinte:
> > 
> > Temos um software de uma empresa de SP que faz controle de acesso 
> dos
> > funcionários do prédio. Nossa versão atual dos softwares são: Rh 8 
> e
> > Oracle 9.2.0.4. A intenção é migrar para RH AS Linux 4.0 com Ora 
> 10gR2
> > (10.2.0.1.0). Um dos acordos com a empresa dona do software que 
> faz o
> > controle de acesso é que não podemos ter acesso direto às tabelas 
> do
> > mesmos, então acessamos algumas informações de lá através de VIEWS.
> > Bom, o acesso que apresenta o erro está vindo de uma outra view que
> > temos aqui, pottanto view fazendo select em outra view.
> > Nos testes anteriores com 10gR2, onde peguei o problema, encontrei
> > como solução para a questão, forçar o to_char dentro do where uma 
> vez
> > que percebi que a conversão prá to_number não estava ocorrendo e 
> aí, o
> > erro não apareceu mais. Então pedi aos Analistas de Desenvolvimento
> > que alterassem as aplicações e boa. Isso foi em 01/12/05. "ELES NÃO
> > ALTERARAM", pois insistem que uma vez que funciona no 9i, tem que
> > funcionar no 10g e bla,bla... Abaixo a view e o sql que acessa:
> > 
> > CREATE OR REPLACE VIEW VISAO ("CAT_CART","COD_IDEN","NREXTCAR") 
> > AS SELECT
> > TO_NUMBER(RTRIM(SUBSTR(CD_USUARIO,1,3)),'999') AS CAT_CART,
> > TO_NUMBER(RTRIM(SUBSTR(CD_USUARIO,4,10)),'99') AS COD_IDEN,
> > TO_NUMBER(RTRIM(NUM_CARTAO)) AS NREXTCAR,
> > FROM schema.view_do_fornecedor
> > WHERE SUBSTR(CD_USUARIO,1,3) IN 
> ('101','102','103','104','105','106',
> > '107','108','109','110','111','112','113') WITH CHECK OPTION ;
> > 
> > select a.cat_cart, a.cod_iden 
> > FROM
> > smart.v1 a,
> > smart.v6 b,
> > smart.v42 c
> > WHERE
> > a.cat_cart = c.cat_cart and a.cod_iden = c.cod_iden
> > and b.data is not null
> > and (b.uni = 'DAC')
> > and (a.cat_cart = 108)
> > and (a.cat_cart = b.cat_cart and a.cod_iden = b.cod_iden)
> > and (b.dainccar is not null)
> > and rownum < 11;
> > 
> > OBS: cat_cat e cod_iden em V1,V6 e V42 são numbers.
> > 
> > 
> > SQL> desc v42;
> > 
> > CAT_CART NUMBER
> > COD_IDEN NUMBER
> > NREXTCAR NUMBER
> > 
> > 
> > SQL> @sql.sql
> > select a.cat_cart, a.cod_iden, a.tmovuni, b.dainccar
> >  *
> > ERROR at line 1:
> > ORA-01722: invalid number
> > 
> > 
> > Relembrando, o erro não ocorre no 9i.
> > 
> > 
> > Agradeço pelas sugestões.
> > Lamento e peço desculpas aos demais pela extensão do texto.
> > Meus respeitos à todos,
> > Cordialmente,
> > 
> > Ronie Ramos de Oliveira
> > DBA - Unicamp.
> >
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

[oracle_br] Re: DUVIDA em SQL

2006-01-13 Por tôpico André Santos
Ronie

Também já tive problemas com pessoal dos fornecedores de "pacotes" 
que insistem que não há problema na aplicação... botam a culpa na 
versão do Oracle, no sistema operacional, blá-blá-blá...

Mas tem que ter MUITA paciência nessas horas e demonstrar (ou 
melhor, **provar**) a causa do erro.

Certamente a culpa NÃO é da versão do Oracle!
Qualquer TO_NUMBER('string') pode gerar esse erro.
Então o que causa isso é o ***CONTEÚDO*** da tabela: no BD do 9i 
deve haver só strings válidas na conversão, mas no BD do 10g deve 
ter alguns casos de dados inválidos para a TO_NUMBER.

Você pode utilizar a função que o Ivan passou, para achar esses 
casos. =^D

Exemplo:
-
SELECT
 RTRIM(SUBSTR(CD_USUARIO,1,3)) AS CAT_CART,
 RTRIM(SUBSTR(CD_USUARIO,4,10)) AS COD_IDEN,
 RTRIM(NUM_CARTAO)) AS NREXTCAR,
 FROM schema.view_do_fornecedor
 WHERE SUBSTR(CD_USUARIO,1,3) IN
 ('101','102','103','104','105','106',
 '107','108','109','110','111','112','113')
 AND
 (
IS_NUMBER(RTRIM(SUBSTR(CD_USUARIO,1,3))) IS NULL
 OR IS_NUMBER(RTRIM(SUBSTR(CD_USUARIO,4,10))) IS NULL
 OR IS_NUMBER(RTRIM(NUM_CARTAO)) IS NULL
 );
-

Crie a função IS_NUMBER que o Ivan mandou e faça a consulta acima.
Isso deve retornar os dados que causam o problema.

[ ]

André


--- Em oracle_br@yahoogrupos.com.br, "khraken" <[EMAIL PROTECTED]> 
escreveu
>
> Olá André e Ivan!
> Bom dia e grato por responder!
> A bem da verdade o que ocorre é o seguinte:
> 
> Temos um software de uma empresa de SP que faz controle de acesso 
dos
> funcionários do prédio. Nossa versão atual dos softwares são: Rh 8 
e
> Oracle 9.2.0.4. A intenção é migrar para RH AS Linux 4.0 com Ora 
10gR2
> (10.2.0.1.0). Um dos acordos com a empresa dona do software que 
faz o
> controle de acesso é que não podemos ter acesso direto às tabelas 
do
> mesmos, então acessamos algumas informações de lá através de VIEWS.
> Bom, o acesso que apresenta o erro está vindo de uma outra view que
> temos aqui, pottanto view fazendo select em outra view.
> Nos testes anteriores com 10gR2, onde peguei o problema, encontrei
> como solução para a questão, forçar o to_char dentro do where uma 
vez
> que percebi que a conversão prá to_number não estava ocorrendo e 
aí, o
> erro não apareceu mais. Então pedi aos Analistas de Desenvolvimento
> que alterassem as aplicações e boa. Isso foi em 01/12/05. "ELES NÃO
> ALTERARAM", pois insistem que uma vez que funciona no 9i, tem que
> funcionar no 10g e bla,bla... Abaixo a view e o sql que acessa:
> 
> CREATE OR REPLACE VIEW VISAO ("CAT_CART","COD_IDEN","NREXTCAR") 
> AS SELECT
> TO_NUMBER(RTRIM(SUBSTR(CD_USUARIO,1,3)),'999') AS CAT_CART,
> TO_NUMBER(RTRIM(SUBSTR(CD_USUARIO,4,10)),'99') AS COD_IDEN,
> TO_NUMBER(RTRIM(NUM_CARTAO)) AS NREXTCAR,
> FROM schema.view_do_fornecedor
> WHERE SUBSTR(CD_USUARIO,1,3) IN 
('101','102','103','104','105','106',
> '107','108','109','110','111','112','113') WITH CHECK OPTION ;
> 
> select a.cat_cart, a.cod_iden 
> FROM
> smart.v1 a,
> smart.v6 b,
> smart.v42 c
> WHERE
> a.cat_cart = c.cat_cart and a.cod_iden = c.cod_iden
> and b.data is not null
> and (b.uni = 'DAC')
> and (a.cat_cart = 108)
> and (a.cat_cart = b.cat_cart and a.cod_iden = b.cod_iden)
> and (b.dainccar is not null)
> and rownum < 11;
> 
> OBS: cat_cat e cod_iden em V1,V6 e V42 são numbers.
> 
> 
> SQL> desc v42;
> 
> CAT_CART NUMBER
> COD_IDEN NUMBER
> NREXTCAR NUMBER
> 
> 
> SQL> @sql.sql
> select a.cat_cart, a.cod_iden, a.tmovuni, b.dainccar
>  *
> ERROR at line 1:
> ORA-01722: invalid number
> 
> 
> Relembrando, o erro não ocorre no 9i.
> 
> 
> Agradeço pelas sugestões.
> Lamento e peço desculpas aos demais pela extensão do texto.
> Meus respeitos à todos,
> Cordialmente,
> 
> Ronie Ramos de Oliveira
> DBA - Unicamp.
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
Links do Yahoo! Grupos

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

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

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

 




[oracle_br] Re: DUVIDA em SQL

2006-01-13 Por tôpico khraken
Olá André e Ivan!
Bom dia e grato por responder!
A bem da verdade o que ocorre é o seguinte:

Temos um software de uma empresa de SP que faz controle de acesso dos
funcionários do prédio. Nossa versão atual dos softwares são: Rh 8 e
Oracle 9.2.0.4. A intenção é migrar para RH AS Linux 4.0 com Ora 10gR2
(10.2.0.1.0). Um dos acordos com a empresa dona do software que faz o
controle de acesso é que não podemos ter acesso direto às tabelas do
mesmos, então acessamos algumas informações de lá através de VIEWS.
Bom, o acesso que apresenta o erro está vindo de uma outra view que
temos aqui, pottanto view fazendo select em outra view.
Nos testes anteriores com 10gR2, onde peguei o problema, encontrei
como solução para a questão, forçar o to_char dentro do where uma vez
que percebi que a conversão prá to_number não estava ocorrendo e aí, o
erro não apareceu mais. Então pedi aos Analistas de Desenvolvimento
que alterassem as aplicações e boa. Isso foi em 01/12/05. "ELES NÃO
ALTERARAM", pois insistem que uma vez que funciona no 9i, tem que
funcionar no 10g e bla,bla... Abaixo a view e o sql que acessa:

CREATE OR REPLACE VIEW VISAO ("CAT_CART","COD_IDEN","NREXTCAR") 
AS SELECT
TO_NUMBER(RTRIM(SUBSTR(CD_USUARIO,1,3)),'999') AS CAT_CART,
TO_NUMBER(RTRIM(SUBSTR(CD_USUARIO,4,10)),'99') AS COD_IDEN,
TO_NUMBER(RTRIM(NUM_CARTAO)) AS NREXTCAR,
FROM schema.view_do_fornecedor
WHERE SUBSTR(CD_USUARIO,1,3) IN ('101','102','103','104','105','106',
'107','108','109','110','111','112','113') WITH CHECK OPTION ;

select a.cat_cart, a.cod_iden 
FROM
smart.v1 a,
smart.v6 b,
smart.v42 c
WHERE
a.cat_cart = c.cat_cart and a.cod_iden = c.cod_iden
and b.data is not null
and (b.uni = 'DAC')
and (a.cat_cart = 108)
and (a.cat_cart = b.cat_cart and a.cod_iden = b.cod_iden)
and (b.dainccar is not null)
and rownum < 11;

OBS: cat_cat e cod_iden em V1,V6 e V42 são numbers.


SQL> desc v42;

CAT_CART NUMBER
COD_IDEN NUMBER
NREXTCAR NUMBER


SQL> @sql.sql
select a.cat_cart, a.cod_iden, a.tmovuni, b.dainccar
 *
ERROR at line 1:
ORA-01722: invalid number


Relembrando, o erro não ocorre no 9i.


Agradeço pelas sugestões.
Lamento e peço desculpas aos demais pela extensão do texto.
Meus respeitos à todos,
Cordialmente,

Ronie Ramos de Oliveira
DBA - Unicamp.











--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
Links do Yahoo! Grupos

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

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

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

 





[oracle_br] Re: DUVIDA em SQL

2006-01-12 Por tôpico André Santos
Ronie

Esse erro muito provavelmente acontece porque a cláusula WHERE faz 
os teste para **todas** as linhas da tabela... e em algumas a função 
SUBSTR não retorna um número válido, portanto dá erro com a função 
TO_NUMBER.

Você precisa mesmo fazer a conversão TO_NUMBER no WHERE ?

[ ]

André


--- Em oracle_br@yahoogrupos.com.br, "khraken" <[EMAIL PROTECTED]> 
escreveu
>
> S.O Linux RH EL 4.0
> DB Ora 10g R2
> 
> Olá pessoal!
> 
> O SQL abaixo, 
> 
> select * from my_table where substr(cd_usuario,4,10)='13';
> 
> funciona sem problemas. No entanto, quando tento conversão para
> number, executando:
> 
> select * from my_table where to_number(substr(cd_usuario,4,10))=13;
> 
> o oracle me devolve:
> 
> ERROR at line 1:
> ORA-01722: invalid number
> 
> No Oracle 9i R2 o erro não aparece. Alguma sugestão?
> 
> Como faço para converter cd_usuario varchar2(20) para number?
> 
> 
> Grato,
> Ronie Ramos de Oliveira
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
Links do Yahoo! Grupos

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

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

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

 





<    1   2   3   4   >