Re: [oracle_br] Importar XML

2012-05-28 Por tôpico Yuri Menon
Carlos, eu solucionei algo desse tipo da seguinte maneira:

http://www.pedroneto.com.br/blog/2012/02/ler-xml-com-oracle-a-partir-de-url


Em 28 de maio de 2012 06:12, Carlos Pinto carlos.pin...@yahoo.com.brescreveu:

 **


 Ola a todos, como posso importar um ficheiro XML para uma tabela? Oracle
 10G
 10.2.0.3.0

 Obrigado,

 Carlos

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

  



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





--
Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
http://www.oraclebr.com.br/  

 Links do Yahoo! Grupos

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

* Para sair deste grupo, envie um e-mail para:
oracle_br-unsubscr...@yahoogrupos.com.br

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




RE: [oracle_br] Re: Importar XML

2012-05-28 Por tôpico Carlos Pinto
Ola Chiappa tens razão….

 


== vc TEM o componente de XML, o XMLDb, instalado, setado e ativo, ou não
???  Não, tenho. O ficheiro estará num servidor FTP ao qual eu importarei
para o servidor Oracle

== vc TEM JAVA nesse database ou não ?? Não

== o arquivo a importar está numa máquina cliente ou no servidor Oracle ??
Servidor Oracle

== essa importação é algo que vc vai fazer uma vez só (e portanto em tese
pode se usar tools externas não-programadas, tipo SQL Developer), ou é algo
Rotineiro, e que portanto demanda Automação ?? Vai ser Rotineiro - Diario


== o tamanho do arquivo XML a ler, é qual ? Isto se pergunta para que, em
caso de arquivo anormalmente grande, já tentemos dar uma solução
Otimizada... - Deve ter aproximadamente cerca de 800 Registos Diarios

== o arquivo XML em questão ESTÁ bem formado ?? Nos mostre uma versão menor
dele, contendo o trailer, o header e uns poucos registros completos

e o MAIS IMPORTANTE :

= Exatamente O QUE vc quer fazer com ele : vc quer apenas ler e
grava o arquivo .XML todo numa única coluna string large (CLOB ou XML-type)
de um registro de uma tabela Oracle, OU vc quer interpretar, ie : vc quer
que cada coluna de cada registro do arquivo XML corresponda a uma coluna de
um registro de uma tabela Oracle, e aí os dados devem ser carregados poara
essa tabela Oracle, em ordem ??? 

 

Quero carregar os campos para uma tabela separada por campos.



 

 

 

?xml version=1.0 encoding=UTF-8?

-LGFDocument xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
xmlns:xsd=http://www.w3.org/2001/XMLSchema;-AccessRequestDocumentType1
/DocumentTypeVersion1.0/VersionEntityIdLGF/EntityIdTimeStamp2012
-05-23T13:09:50/TimeStampReference1/Reference2/Reference3/Reference
4/Reference5/ReplyEmailAddressinformat...@logi.com/ReplyEmailAddress
FileNumber008074/FileNumber/AccessRequest-ConsignmentRef760
42380/RefDocNumber0/DocNumberBarCodeConstantN/BarCodeConstantServ
ices1/ServicesProductType2
/ProductTypePieces1/PiecesWeight1000/WeightWeightUnitGR/WeightU
nitPaymentType1/PaymentTypeCashOnDeliveryValue0/CashOnDeliveryValue
CashOnDeliveryCurrencyCodeEUR/CashOnDeliveryCurrencyCodeCashOnDeliveryO
bsTLM:
989058417/CashOnDeliveryObsSentByruiv/SentByConsigneeDepSTALL
/ConsigneeDepConsigneeNumber/ConsigneeReference/ConsigneeReference2/
ConsigneeNameCARLOS/ConsigneeNameAttentionOf/ConsigneeAddressAV
MIGUEL MAGALHAES N99 PAREDES TLM:
956058417/ConsigneeAddressConsigneeCityBEST/ConsigneeCityConsigneeZip
Code4580-000/ConsigneeZipCodeConsigneeCountryCodePT/ConsigneeCountryCo
deConsigneeTelephone/ConsigneeFax/ConsigneeEmail/Obs1TLM:
985658417/Obs1Obs2/Obs3/IDMaster/paletesOrdem/RecolhaFalse/Reco
lhaIDRota//Consignment/LGFDocument

 

Com os melhores cumprimentos, 

Carlos

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de J. Laurindo Chiappa
Enviada: segunda-feira, 28 de Maio de 2012 14:50
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Importar XML

 

  

Detalhes, plz, sempre os sanguinolentos detalhes, a verdade está nos
detalhes 

== vc TEM o componente de XML, o XMLDb, instalado, setado e ativo, ou não
??? 

== vc TEM JAVA nesse database ou não ??

== o arquivo a importar está numa máquina cliente ou no servidor Oracle ??

== essa importação é algo que vc vai fazer uma vez só (e portanto em tese
pode se usar tools externas não-programadas, tipo SQL Developer), ou é algo
Rotineiro, e que portanto demanda Automação ??

== o tamanho do arquivo XML a ler, é qual ? Isto se pergunta para que, em
caso de arquivo anormalmente grande, já tentemos dar uma solução
Otimizada...

== o arquivo XML em questão ESTÁ bem formado ?? Nos mostre uma versão menor
dele, contendo o trailer, o header e uns poucos registros completos

e o MAIS IMPORTANTE :

= Exatamente O QUE vc quer fazer com ele : vc quer apenas ler e
grava o arquivo .XML todo numa única coluna string large (CLOB ou XML-type)
de um registro de uma tabela Oracle, OU vc quer interpretar, ie : vc quer
que cada coluna de cada registro do arquivo XML corresponda a uma coluna de
um registro de uma tabela Oracle, e aí os dados devem ser carregados poara
essa tabela Oracle, em ordem ??? 

Dependendo das suas respostas, a Recomendação pode e vai variar

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
, Carlos Pinto carlos.pintoo@... escreveu

 Ola a todos, como posso importar um ficheiro XML para uma tabela? Oracle
10G
 10.2.0.3.0
 
 
 
 Obrigado,
 
 Carlos
 
 
 
 
 
 [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: Trigger que grava comando DML

2012-05-28 Por tôpico J. Laurindo Chiappa
  Colega, antes de sair fazendo, imho vc ** tem ** que saber Exatamente a 
necessidade, para que será usado, enfim... Se é para Auditoria, eu recomendaria 
fortemente que vc usasse as opções built-in de Auditoria e simplesmente 
IGNORASSE as gambis com trigger, pois entre outros fatores :

- via de regra triggers interferem mais FORTEMENTE em performance do que a 
Auditoria nativa

- nós NÂO temos uma trigger de DML (insert/update/delete) a nível de database, 
aí vc TERÁ que ter uma trigger para cada tabela de cada schema que vc quer 
auditar

- afaik provavelmente vc precisará dar GRANTs de consultas em tabelas internas 
(principalmente V$SESSION e V$SQL), já que há casos em que as built-ins de 
captura de eventos de sistema e similares (como a ORA_SQL_TEXT, que seria a de 
seu interesse no caso) não são populadas e/ou não podem ser usadas  em triggers 
de DML : 
http://topdataway.blogspot.com.br/2008/11/get-sql-using-orasqltxt-via-trigger.html
 nos fala sobre isso...

E há um ponto importante : se o database for 11g (R2,afaik), em a Auditoria 
nativa sendo setada para 'DB' o texto e os binds já são Automaticamente 
capturados na AUD$, o que elimina qquer necessidade de manipulação via 
trigger Se o seu database for 10g ou superior, sempre há também a 
possibilidade de usar FGA (Fine-Grainde Audit), essa built-in já captura o 
texto do SQL, já que seu db é 11g : 
http://mportes.blogspot.com.br/2005/05/audit-trail-fga-fine-grained-audit-10g.html
 é um exemplo antigo mas ainda funcional  
 E claro, se a Audit for temporária, vc sempre tem a chance de Ativar um trace 
de SQL, via logon trigger ou quetais...

= Então a sua resposta é : Entenda a necessidade, Analise se é possível/viável 
usar as rotinas built-in (POUPANDO tempo/esforço e muito provavelmente 
intereferindo menos com performance), E se não for só então, muito de 
má-vontade, vc parte pras triggers, testando se no seu caso as built-ins de 
captura de eventos atendem, experimente pegar o SQL_ID numa trigger BEFORE 
statement, é por aí que vão ser as gambis

 []s

Chiappa


--- Em oracle_br@yahoogrupos.com.br, Marcos de Moura Gonçalves mgmarcos@... 
escreveu

 Olá Srs,
 
 Me solicitaram a criação de uma trigger disparada por eventos DML que
 grave o SQL que ocasionou o disparo da trigger. Já tinha feito algo
 parecido no Oracle 10g, e lembrava que bastava fazer o join entre
 v$session e v$sql na coluna sql_id para encontrar o SQL realizado.
 Entretanto essa demanda é para um banco 11g, e pelo que reparei houve
 uma mudança  na informação gravada na v$session: ele guarda o sql_id
 do próprio SELECT realizado na v$session... Experimentei também a
 junção através da coluna prev_sql_id, mas me traz outro SQL que não o
 que disparou a trigger. Outra alternativa que tentei foi utilizar a
 função ORA_SQL_TXT, muito utilizada normalmente em exemplos de quem
 quer fazer auditoria de comandos DDL. Entretanto, pelo menos nas
 minhas tentativas em triggers de UPDATE, essa função não trouxe nada
 (li em algum forum que essa função estaria funcionando no 11g apenas
 para triggers de eventos de sistema, e não DML). Estou pesquisando
 alternativas ainda sem sucesso. Alguém tem alguma idéia?
 
 Obrigado,
 
 Marcos de Moura Gonçalves





[oracle_br] Re: Trigger que grava comando DML

2012-05-28 Por tôpico ederson2001br
Alô Marcos,

Eu já sigo 100% na linha que o Chiappa falou, há bastante tempo: levantar a 
necessidade (para escolher a melhor solução).

Portanto, acrescento somente na linha da busca da solução: se já tem pronta, 
não compensa rebuild. Usar as is já soluciona a maioria das necessidades. 
Além do quê, triggers podem ser desabilitadas ...
 
Sugestão:
- Versão Enterprise (10 e 11): AWR
- Versão Standard (10 e 11)..: Statspack
- Sem habilitar nada mais no BD (9, 10 e 11 tanto EE ou SE): Logminer

Neste link, vc vê um exemplo de como usar o Logminer com REDO, mas sabendo que 
vc pode habilitar também para ARCHIVE. Portanto, para a sua janela de pesquisa, 
basta ter o archive em disco, uma vez que o logminer lê os arquivos que já 
estão externos ao banco, nenhuma tabela vai encher. É 100% garantido e vc 
pode buscar qualquer kaca feita pelo usuário, inclusive (se precisar) o 
Oracle já retorna o comando para desfazer a kaca na coluna REDO:
http://oracleflash.com/28/Oracle-11g-Using-LogMiner-to-analyze-redo-log-files.html


Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0


--- Em oracle_br@yahoogrupos.com.br, Marcos de Moura Gonçalves mgmarcos@... 
escreveu

 Olá Srs,
 
 Me solicitaram a criação de uma trigger disparada por eventos DML que
 grave o SQL que ocasionou o disparo da trigger. Já tinha feito algo
 parecido no Oracle 10g, e lembrava que bastava fazer o join entre
 v$session e v$sql na coluna sql_id para encontrar o SQL realizado.
 Entretanto essa demanda é para um banco 11g, e pelo que reparei houve
 uma mudança  na informação gravada na v$session: ele guarda o sql_id
 do próprio SELECT realizado na v$session... Experimentei também a
 junção através da coluna prev_sql_id, mas me traz outro SQL que não o
 que disparou a trigger. Outra alternativa que tentei foi utilizar a
 função ORA_SQL_TXT, muito utilizada normalmente em exemplos de quem
 quer fazer auditoria de comandos DDL. Entretanto, pelo menos nas
 minhas tentativas em triggers de UPDATE, essa função não trouxe nada
 (li em algum forum que essa função estaria funcionando no 11g apenas
 para triggers de eventos de sistema, e não DML). Estou pesquisando
 alternativas ainda sem sucesso. Alguém tem alguma idéia?
 
 Obrigado,
 
 Marcos de Moura Gonçalves




[oracle_br] Re: Importar XML

2012-05-28 Por tôpico J. Laurindo Chiappa
 okdoc, agora tá Bem mais claro, não é ? Muito bem : primeiro, fosse uma qtdade 
significativa eu contra-recomendaria de cara XML (entre outros pontos, não é 
possível se paralelizar comn cada sessão lendo uma linha, vc tem que perder 
tempo montando o registro, etc), mas 800 registros é café pequeno...
 Muito bem, se vc tivesse o XMLDB instalado haveria outras opções, mas como vc 
não tem imho o que vc poderia fazer é ler o arquivo (via UTL_FILE, 
provavelmente) e extrair os dados do XML com EXTRACT : 
http://musingsofaprogrammingaddict.blogspot.com.br/2010/06/oracles-extractvalue-function-and-xml.html
 é um exemplo de extract, e para UTL_FILE consulte os manuais de referência... 

 []s

   Chiappa

--- Em oracle_br@yahoogrupos.com.br, Carlos Pinto carlos.pintoo@... escreveu

 Ola Chiappa tens razão….
 
  
 
 
 == vc TEM o componente de XML, o XMLDb, instalado, setado e ativo, ou não
 ???  Não, tenho. O ficheiro estará num servidor FTP ao qual eu importarei
 para o servidor Oracle
 
 == vc TEM JAVA nesse database ou não ?? Não
 
 == o arquivo a importar está numa máquina cliente ou no servidor Oracle ??
 Servidor Oracle
 
 == essa importação é algo que vc vai fazer uma vez só (e portanto em tese
 pode se usar tools externas não-programadas, tipo SQL Developer), ou é algo
 Rotineiro, e que portanto demanda Automação ?? Vai ser Rotineiro - Diario
 
 
 == o tamanho do arquivo XML a ler, é qual ? Isto se pergunta para que, em
 caso de arquivo anormalmente grande, já tentemos dar uma solução
 Otimizada... - Deve ter aproximadamente cerca de 800 Registos Diarios
 
 == o arquivo XML em questão ESTÁ bem formado ?? Nos mostre uma versão menor
 dele, contendo o trailer, o header e uns poucos registros completos
 
 e o MAIS IMPORTANTE :
 
 = Exatamente O QUE vc quer fazer com ele : vc quer apenas ler e
 grava o arquivo .XML todo numa única coluna string large (CLOB ou XML-type)
 de um registro de uma tabela Oracle, OU vc quer interpretar, ie : vc quer
 que cada coluna de cada registro do arquivo XML corresponda a uma coluna de
 um registro de uma tabela Oracle, e aí os dados devem ser carregados poara
 essa tabela Oracle, em ordem ??? 
 
  
 
 Quero carregar os campos para uma tabela separada por campos.
 
 
 
  
 
  
 
  
 
 ?xml version=1.0 encoding=UTF-8?
 
 -LGFDocument xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
 xmlns:xsd=http://www.w3.org/2001/XMLSchema;-AccessRequestDocumentType1
 /DocumentTypeVersion1.0/VersionEntityIdLGF/EntityIdTimeStamp2012
 -05-23T13:09:50/TimeStampReference1/Reference2/Reference3/Reference
 4/Reference5/ReplyEmailAddressinformatica@.../ReplyEmailAddress
 FileNumber008074/FileNumber/AccessRequest-ConsignmentRef760
 42380/RefDocNumber0/DocNumberBarCodeConstantN/BarCodeConstantServ
 ices1/ServicesProductType2
 /ProductTypePieces1/PiecesWeight1000/WeightWeightUnitGR/WeightU
 nitPaymentType1/PaymentTypeCashOnDeliveryValue0/CashOnDeliveryValue
 CashOnDeliveryCurrencyCodeEUR/CashOnDeliveryCurrencyCodeCashOnDeliveryO
 bsTLM:
 989058417/CashOnDeliveryObsSentByruiv/SentByConsigneeDepSTALL
 /ConsigneeDepConsigneeNumber/ConsigneeReference/ConsigneeReference2/
 ConsigneeNameCARLOS/ConsigneeNameAttentionOf/ConsigneeAddressAV
 MIGUEL MAGALHAES N99 PAREDES TLM:
 956058417/ConsigneeAddressConsigneeCityBEST/ConsigneeCityConsigneeZip
 Code4580-000/ConsigneeZipCodeConsigneeCountryCodePT/ConsigneeCountryCo
 deConsigneeTelephone/ConsigneeFax/ConsigneeEmail/Obs1TLM:
 985658417/Obs1Obs2/Obs3/IDMaster/paletesOrdem/RecolhaFalse/Reco
 lhaIDRota//Consignment/LGFDocument
 
  
 
 Com os melhores cumprimentos, 
 
 Carlos
 
  
 
 De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
 nome de J. Laurindo Chiappa
 Enviada: segunda-feira, 28 de Maio de 2012 14:50
 Para: oracle_br@yahoogrupos.com.br
 Assunto: [oracle_br] Re: Importar XML
 
  
 
   
 
 Detalhes, plz, sempre os sanguinolentos detalhes, a verdade está nos
 detalhes 
 
 == vc TEM o componente de XML, o XMLDb, instalado, setado e ativo, ou não
 ??? 
 
 == vc TEM JAVA nesse database ou não ??
 
 == o arquivo a importar está numa máquina cliente ou no servidor Oracle ??
 
 == essa importação é algo que vc vai fazer uma vez só (e portanto em tese
 pode se usar tools externas não-programadas, tipo SQL Developer), ou é algo
 Rotineiro, e que portanto demanda Automação ??
 
 == o tamanho do arquivo XML a ler, é qual ? Isto se pergunta para que, em
 caso de arquivo anormalmente grande, já tentemos dar uma solução
 Otimizada...
 
 == o arquivo XML em questão ESTÁ bem formado ?? Nos mostre uma versão menor
 dele, contendo o trailer, o header e uns poucos registros completos
 
 e o MAIS IMPORTANTE :
 
 = Exatamente O QUE vc quer fazer com ele : vc quer apenas ler e
 grava o arquivo .XML todo numa única coluna string large (CLOB ou XML-type)
 de um registro de uma tabela Oracle, OU vc quer interpretar, ie : vc quer
 que cada coluna de cada registro do arquivo XML corresponda a uma coluna de
 um 

RE: [oracle_br] Re: Importar XML

2012-05-28 Por tôpico Carlos Pinto
Obrigado Chiappa..vou-me aventurar….

 

Com os melhores cumprimentos, 

Carlos

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de J. Laurindo Chiappa
Enviada: segunda-feira, 28 de Maio de 2012 17:49
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Importar XML

 

  

okdoc, agora tá Bem mais claro, não é ? Muito bem : primeiro, fosse uma
qtdade significativa eu contra-recomendaria de cara XML (entre outros
pontos, não é possível se paralelizar comn cada sessão lendo uma linha, vc
tem que perder tempo montando o registro, etc), mas 800 registros é café
pequeno...
Muito bem, se vc tivesse o XMLDB instalado haveria outras opções, mas como
vc não tem imho o que vc poderia fazer é ler o arquivo (via UTL_FILE,
provavelmente) e extrair os dados do XML com EXTRACT :
http://musingsofaprogrammingaddict.blogspot.com.br/2010/06/oracles-extractva
lue-function-and-xml.html é um exemplo de extract, e para UTL_FILE consulte
os manuais de referência... 

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
, Carlos Pinto carlos.pintoo@... escreveu

 Ola Chiappa tens razão….
 
 
 
 
 == vc TEM o componente de XML, o XMLDb, instalado, setado e ativo, ou não
 ??? Não, tenho. O ficheiro estará num servidor FTP ao qual eu importarei
 para o servidor Oracle
 
 == vc TEM JAVA nesse database ou não ?? Não
 
 == o arquivo a importar está numa máquina cliente ou no servidor Oracle
??
 Servidor Oracle
 
 == essa importação é algo que vc vai fazer uma vez só (e portanto em tese
 pode se usar tools externas não-programadas, tipo SQL Developer), ou é
algo
 Rotineiro, e que portanto demanda Automação ?? Vai ser Rotineiro - Diario
 
 
 == o tamanho do arquivo XML a ler, é qual ? Isto se pergunta para que, em
 caso de arquivo anormalmente grande, já tentemos dar uma solução
 Otimizada... - Deve ter aproximadamente cerca de 800 Registos Diarios
 
 == o arquivo XML em questão ESTÁ bem formado ?? Nos mostre uma versão
menor
 dele, contendo o trailer, o header e uns poucos registros completos
 
 e o MAIS IMPORTANTE :
 
 = Exatamente O QUE vc quer fazer com ele : vc quer apenas ler e
 grava o arquivo .XML todo numa única coluna string large (CLOB ou
XML-type)
 de um registro de uma tabela Oracle, OU vc quer interpretar, ie : vc quer
 que cada coluna de cada registro do arquivo XML corresponda a uma coluna
de
 um registro de uma tabela Oracle, e aí os dados devem ser carregados poara
 essa tabela Oracle, em ordem ??? 
 
 
 
 Quero carregar os campos para uma tabela separada por campos.
 
 
 
 
 
 
 
 
 
 ?xml version=1.0 encoding=UTF-8?
 
 -LGFDocument xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;

xmlns:xsd=http://www.w3.org/2001/XMLSchema;-AccessRequestDocumentType1

/DocumentTypeVersion1.0/VersionEntityIdLGF/EntityIdTimeStamp2012

-05-23T13:09:50/TimeStampReference1/Reference2/Reference3/Reference
 4/Reference5/ReplyEmailAddressinformatica@...
mailto:informatica@...%3c/ReplyEmailAddress%3e%3c /ReplyEmailAddress

FileNumber008074/FileNumber/AccessRequest-ConsignmentRef760

42380/RefDocNumber0/DocNumberBarCodeConstantN/BarCodeConstantServ
 ices1/ServicesProductType2

/ProductTypePieces1/PiecesWeight1000/WeightWeightUnitGR/WeightU

nitPaymentType1/PaymentTypeCashOnDeliveryValue0/CashOnDeliveryValue

CashOnDeliveryCurrencyCodeEUR/CashOnDeliveryCurrencyCodeCashOnDeliveryO
 bsTLM:
 989058417/CashOnDeliveryObsSentByruiv/SentByConsigneeDepSTALL

/ConsigneeDepConsigneeNumber/ConsigneeReference/ConsigneeReference2/
 ConsigneeNameCARLOS/ConsigneeNameAttentionOf/ConsigneeAddressAV
 MIGUEL MAGALHAES N99 PAREDES TLM:

956058417/ConsigneeAddressConsigneeCityBEST/ConsigneeCityConsigneeZip

Code4580-000/ConsigneeZipCodeConsigneeCountryCodePT/ConsigneeCountryCo
 deConsigneeTelephone/ConsigneeFax/ConsigneeEmail/Obs1TLM:

985658417/Obs1Obs2/Obs3/IDMaster/paletesOrdem/RecolhaFalse/Reco
 lhaIDRota//Consignment/LGFDocument
 
 
 
 Com os melhores cumprimentos, 
 
 Carlos
 
 
 
 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 J. Laurindo Chiappa
 Enviada: segunda-feira, 28 de Maio de 2012 14:50
 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br

 Assunto: [oracle_br] Re: Importar XML
 
 
 
 
 
 Detalhes, plz, sempre os sanguinolentos detalhes, a verdade está nos
 detalhes 
 
 == vc TEM o componente de XML, o XMLDb, instalado, setado e ativo, ou não
 ??? 
 
 == vc TEM JAVA nesse database ou não ??
 
 == o arquivo a importar está numa máquina cliente ou no servidor Oracle
??
 
 == essa importação é algo que vc vai fazer uma vez só (e portanto em tese
 pode se usar tools externas não-programadas, tipo SQL Developer), ou é
algo
 Rotineiro, e que portanto demanda Automação ??
 
 == o tamanho do arquivo XML a ler, é qual ? Isto se pergunta para que, em
 caso de arquivo anormalmente grande, já tentemos dar uma solução
 

Re: [oracle_br] Re: Trigger que grava comando DML

2012-05-28 Por tôpico Wadson Ramon
Olá pessoal achei muito interessante a resposta do colega Ederson,
principalmente sobre o comentário a respeito do LogMiner, Atualmente
trabalho com a Versão Standard do 11 que tem recursos limitados.
Pesquisando sobre o Logminer achei em um blog alguns
comentários interessantes sobre o LogMiner que postei abaixo da mensagem.
Sobre as afirmações do colega do blog o LogMiner  consegue realmente
dar subsídios para as questões 1,2,3,4,  postadas abaixo?.
E até que ponto o LogMiner  se assemelha ao  Statspack , tentei utilizar
o Statspack com  Ora cle RAC Standart 11g e o relatório gerado saiu com a
maioria dos campos vazios e com pouca de informação.


Log Miner | Muito além do FlashBack
Filed under: 
Uncategorizedhttp://aguimaraes.wordpress.com/category/uncategorized/
—
agleite @ 5:20 pm

O Oracle LogMiner é uma ferramenta que permite consultas a arquivos de redo
log’s online e archives através de SQL. Os arquivos de redo contém o
histórico da atividades em um banco de dados.

Entre os beneficios do LogMiner temos:

1 – Localizar um corrupção lógica devido a erros de aplicação

2 – Determinar que ações devem ser tomadas para executarmos um recover
granular da transação

3 – Otimização de performance e plano de capacitação através da análise de
tendencias.

4 – Pos auditoria.

Em 28 de maio de 2012 13:28, ederson2001br ederson200...@yahoo.com.brescreveu:

 **


 Alô Marcos,

 Eu já sigo 100% na linha que o Chiappa falou, há bastante tempo: levantar
 a necessidade (para escolher a melhor solução).

 Portanto, acrescento somente na linha da busca da solução: se já tem
 pronta, não compensa rebuild. Usar as is já soluciona a maioria das
 necessidades. Além do quê, triggers podem ser desabilitadas ...

 Sugestão:
 - Versão Enterprise (10 e 11): AWR
 - Versão Standard (10 e 11)..: Statspack
 - Sem habilitar nada mais no BD (9, 10 e 11 tanto EE ou SE): Logminer

 Neste link, vc vê um exemplo de como usar o Logminer com REDO, mas sabendo
 que vc pode habilitar também para ARCHIVE. Portanto, para a sua janela de
 pesquisa, basta ter o archive em disco, uma vez que o logminer lê os
 arquivos que já estão externos ao banco, nenhuma tabela vai encher. É
 100% garantido e vc pode buscar qualquer kaca feita pelo usuário,
 inclusive (se precisar) o Oracle já retorna o comando para desfazer a
 kaca na coluna REDO:

 http://oracleflash.com/28/Oracle-11g-Using-LogMiner-to-analyze-redo-log-files.html

 Ederson Elias
 DBA Oracle
 http://br.linkedin.com/pub/ederson-elias/24/8b/8b0


 --- Em oracle_br@yahoogrupos.com.br, Marcos de Moura Gonçalves mgmarcos@...
 escreveu
 
  Olá Srs,
 
  Me solicitaram a criação de uma trigger disparada por eventos DML que
  grave o SQL que ocasionou o disparo da trigger. Já tinha feito algo
  parecido no Oracle 10g, e lembrava que bastava fazer o join entre
  v$session e v$sql na coluna sql_id para encontrar o SQL realizado.
  Entretanto essa demanda é para um banco 11g, e pelo que reparei houve
  uma mudança na informação gravada na v$session: ele guarda o sql_id
  do próprio SELECT realizado na v$session... Experimentei também a
  junção através da coluna prev_sql_id, mas me traz outro SQL que não o
  que disparou a trigger. Outra alternativa que tentei foi utilizar a
  função ORA_SQL_TXT, muito utilizada normalmente em exemplos de quem
  quer fazer auditoria de comandos DDL. Entretanto, pelo menos nas
  minhas tentativas em triggers de UPDATE, essa função não trouxe nada
  (li em algum forum que essa função estaria funcionando no 11g apenas
  para triggers de eventos de sistema, e não DML). Estou pesquisando
  alternativas ainda sem sucesso. Alguém tem alguma idéia?
 
  Obrigado,
 
  Marcos de Moura Gonçalves
 

  



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





--
Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
http://www.oraclebr.com.br/  

 Links do Yahoo! Grupos

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

* Para sair deste grupo, envie um e-mail para:
oracle_br-unsubscr...@yahoogrupos.com.br

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




[oracle_br] Re: Trigger que grava comando DML

2012-05-28 Por tôpico ederson2001br
Alô Wadson,

Eu uso o Logminer desde a versão 9, sempre que preciso auditar algum 
procedimento duvidoso no banco, bem como avaliar os estragos causados por 
algum processo mau-comportado.

O uso do Statspack com esta intenção, vc consegue retornar os sqls que o banco 
executou, juntamente com os planos de execução (dentro da janela do cache), mas 
não consegue retornar os valores bind. Atualmente, trabalho com bases 10g 
Standard com RAC em ASM. Usando o statspack, sempre analisamos os sqls rodados 
e seus planos de execução, sempre atuando na melhoria de performance quando 
surge um sql lento ou quando algum módulo foi modificado ou quando o 
custo/tempo de resposta se elevaram.

Sobre os pontos levantados no seu email:
1 – Localizar um corrupção lógica devido a erros de aplicação
R- Como o banco armazenou o histórico da execução no archive, vc terá o 
horário, o usuário, o terminal, o comando executado (redo) e até o sql que 
desfaz (undo), para operações de INSERT, UPDATE e DELETE. No Logminer, observe 
que não loga selects, daí a importância de usar o Statspack/Awr que faz o log 
também de select. Statspack não diz quem rodou, mas informa o quê e quando. 
O Logminer diz quem, quando e de onde.

2 – Determinar que ações devem ser tomadas para executarmos um recover
granular da transação:
R- quando identificado o grupo de sqls de uma operação, pode-se usar a coluna 
UNDO para recuperar/desfazer aquela operação, uma recuperação granular de dados 
que cirurgicamente repara aquele dano sem a necessidade de voltar um backup e 
perder outras transações em nome da consistência de dados, basta desfazer a 
operação completa. Curiosidade: se uma transação faz um delete sem cláusula 
where, no archive fica anotado o delete de cada linha com seu respectivo 
rowid, tantas vezes quantas forem as linhas atingidas pela operação, que 
registra mesmo PROCESS_ID, sendo possível identificar as linhas daquele delete 
em meio a outras operações que o banco rodou no mesmo período, além do comando 
insert com cada valor de cada atributo da linha deletada (para desfazer o 
delete).

3 – Otimização de performance e plano de capacitação através da análise de 
tendencias.
R- Não entendi a intenção do autor da frase, mas para otimização de 
performance prefiro o statspack ou o bom e velho trace 10046 + tkprof

4 – Pos auditoria.
R- Aqui o Logminer é campeão, pois vc terá registro da operação de DML, 
bastando o banco estar em archivelog. Não precisa triggers e nem feature paga, 
lembrando ainda que não enche tabela em nenhum schema, basta ter os 
archivelogs gravados em disco, podendo-se voltar um backup de archives a 
qualquer momento (e para qualquer diretório e sem a necessidade de recover de 
base) e analisar estes logs. Em conjunto com o demais logs (alert, sqlnet, 
etc), tem muito material para um forense digital ...



Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0


--- Em oracle_br@yahoogrupos.com.br, Wadson Ramon wramon@... escreveu

 Olá pessoal achei muito interessante a resposta do colega Ederson,
 principalmente sobre o comentário a respeito do LogMiner, Atualmente
 trabalho com a Versão Standard do 11 que tem recursos limitados.
 Pesquisando sobre o Logminer achei em um blog alguns
 comentários interessantes sobre o LogMiner que postei abaixo da mensagem.
 Sobre as afirmações do colega do blog o LogMiner  consegue realmente
 dar subsídios para as questões 1,2,3,4,  postadas abaixo?.
 E até que ponto o LogMiner  se assemelha ao  Statspack , tentei utilizar
 o Statspack com  Ora cle RAC Standart 11g e o relatório gerado saiu com a
 maioria dos campos vazios e com pouca de informação.
 
 
 Log Miner | Muito além do FlashBack
 Filed under: 
 Uncategorizedhttp://aguimaraes.wordpress.com/category/uncategorized/
 —
 agleite @ 5:20 pm
 
 O Oracle LogMiner é uma ferramenta que permite consultas a arquivos de redo
 log's online e archives através de SQL. Os arquivos de redo contém o
 histórico da atividades em um banco de dados.
 
 Entre os beneficios do LogMiner temos:
 
 1 – Localizar um corrupção lógica devido a erros de aplicação
 
 2 – Determinar que ações devem ser tomadas para executarmos um recover
 granular da transação
 
 3 – Otimização de performance e plano de capacitação através da análise de
 tendencias.
 
 4 – Pos auditoria.
 




[oracle_br] Re: Trigger que grava comando DML

2012-05-28 Por tôpico J. Laurindo Chiappa
  Blz ? Acho que vale a pena colocar uns coments adicionais :

= dentro do redo log  NÃO *** temos o texto exato do SQl, portanto o que 
vc obtém com o logminer *** NÃO É *** o texto do SQL exato que foi disparado, e 
sim uma versão Equivalente : dependendo da necessidade (digamos, se vc quer 
localizar o SQL emitido dentro do aplicativo, fazer Tuning, etc) isso pode ser 
problema... Por exemplo :


   SCN   CSCN TIMESTAM COMMIT_TTHREAD# LOG_ID XIDUSN 
XIDSLT XIDSQNPXIDUSNPXIDSLTPXIDSQN RBA
-- --   -- -- -- 
-- -- -- -- -- ---
OPERATIONOPERATION_CODE SQL_REDO
 -- 
---
SQL_UNDO

---
   174539528/05/12   1 87  5
 40638  5 40638 
START 6 set transaction read write;



   174541828/05/12   1 87  5
 40638  5 40638 
INSERT1 insert into 
SCOTT.DEPT(DEPTNO,DNAME,LOC) values ('12','depto 12',NULL);
delete from SCOTT.DEPT where DEPTNO = '12' and DNAME = 'depto 12' and 
LOC IS NULL and ROWID = 'AAANm5AAFAMAAF';   

(ou seja, vc PERDE a informação de datatypes e bindings, que por vezes é 
CRUCIAL para tuning, pra ver se estão sendo usados os Histogramas, para 
localizar na Aplicação qual programa está emitindo o SQL, etc - então Tuning em 
cima de informações do logminer não acho que vai ser algo preciso)

= falando de planejamento de tendências e coisas do tipo, imagino que vc 
poderia fazer alguma coisa básica, tipo identificar um histórico de quais 
tabelas estão sendo mais inseridas/updateadas/deletadas,qtdade  mas há outras 
fontes e possibilidades para isso também

= granularidade da Auditoria : o redo é gerado para todos os SQLs, 
independente se é uma tabela importante ou não, enquanto o FGA permite que vc 
audite apenas alguma(s) coluna(s) de tabela(s), ou mesmo uma condição , tipo 
auditar apenas alterações no SALARIO aonde SALARIO  1, etc

= awr/statspack *** não ** fazem log, não Auditam nada : a questão com eles 
é que eles capturam AMOSTRAS da V$SQL, V$SESSION e correlatas, que funcionam 
como retratos dos caches (de dados, de SQL, etc) , então num banco bem ativo é 
COMUM vc perder SQLs no awr/statspack porque eles já saíram do cache durante o 
intervalo das amostras

= finalmente, sobre o Statspack : é verdade que o Standard é restrito 
(restrito é até eufemismo aqui, tem que ganhar muita coisa pra chegar a ser 
considerado restrito), mas afaik o Statspack, como eu disse acima, faz coleta 
das V$ 'comuns' e 'livres' do sistema, tal como V$SQL, V$SESSION, etc, o que 
Absolutamente Não Demanda licença alguma, deveria funcionar normalmente : 
então, se não está vindo a informação completa, acho muito mais provável que 
tenha algum ponto faltante (como TIMED_STATISTICS, por exemplo), que o usuário 
usado pro report de statspack não tinha privs corretos e/ou que se esteja 
gerando ou os snapshots ou o report de statspack erradamente 


  []s


   Chiappa

--- Em oracle_br@yahoogrupos.com.br, ederson2001br ederson2001br@... 
escreveu

 Alô Wadson,
 
 Eu uso o Logminer desde a versão 9, sempre que preciso auditar algum 
 procedimento duvidoso no banco, bem como avaliar os estragos causados por 
 algum processo mau-comportado.
 
 O uso do Statspack com esta intenção, vc consegue retornar os sqls que o 
 banco executou, juntamente com os planos de execução (dentro da janela do 
 cache), mas não consegue retornar os valores bind. Atualmente, trabalho com 
 bases 10g Standard com RAC em ASM. Usando o statspack, sempre analisamos os 
 sqls rodados e seus planos de execução, sempre atuando na melhoria de 
 performance quando surge um sql lento ou quando algum módulo foi modificado 
 ou quando o custo/tempo de resposta se elevaram.
 
 Sobre os pontos levantados no seu email:
 1 – Localizar um corrupção lógica devido a erros de aplicação
 R- Como o banco armazenou o histórico da execução no archive, vc terá o 
 horário, o usuário, o terminal, o comando executado (redo) e até o sql que 
 desfaz (undo), para operações de INSERT, UPDATE e DELETE. No Logminer, 
 observe que não loga selects, daí a importância de usar o Statspack/Awr que 
 faz o log também 

[oracle_br] Statspack em branco em banco Standard

2012-05-28 Por tôpico J. Laurindo Chiappa
Ah, um detalhe adicional : além de tudo q foi falado, cfrme 
http://www.oracle-home.ro/Oracle_Database/Tuning/Statspack_utility.html e a 
Documentação Oracle, na hora que vc coleta os snapshots pro statspack, vc 
ESCOLHE qual nível de estatísticas vc quer - Evidentemente, se vc usou um nível 
baixo, vc NÂO vai ter as infos de SQL, de row locks, latches, etc...

 []s

   Chiappa

--- Em oracle_br@yahoogrupos.com.br, J. Laurindo Chiappa jlchiappa@... 
escreveu

   Blz ? Acho que vale a pena colocar uns coments adicionais :
 
 = dentro do redo log  NÃO *** temos o texto exato do SQl, portanto o que 
 vc obtém com o logminer *** NÃO É *** o texto do SQL exato que foi disparado, 
 e sim uma versão Equivalente : dependendo da necessidade (digamos, se vc quer 
 localizar o SQL emitido dentro do aplicativo, fazer Tuning, etc) isso pode 
 ser problema... Por exemplo :
 
 
SCN   CSCN TIMESTAM COMMIT_TTHREAD# LOG_ID XIDUSN 
 XIDSLT XIDSQNPXIDUSNPXIDSLTPXIDSQN RBA
 -- --   -- -- -- 
 -- -- -- -- -- ---
 OPERATIONOPERATION_CODE SQL_REDO
  -- 
 ---
 SQL_UNDO  
   
 ---
174539528/05/12   1 87  5  
40638  5 40638 
 START 6 set transaction read write;
   
   
 
174541828/05/12   1 87  5  
40638  5 40638 
 INSERT1 insert into 
 SCOTT.DEPT(DEPTNO,DNAME,LOC) values ('12','depto 12',NULL);
 delete from SCOTT.DEPT where DEPTNO = '12' and DNAME = 'depto 12' and 
 LOC IS NULL and ROWID = 'AAANm5AAFAMAAF';   
 
 (ou seja, vc PERDE a informação de datatypes e bindings, que por vezes é 
 CRUCIAL para tuning, pra ver se estão sendo usados os Histogramas, para 
 localizar na Aplicação qual programa está emitindo o SQL, etc - então Tuning 
 em cima de informações do logminer não acho que vai ser algo preciso)
 
 = falando de planejamento de tendências e coisas do tipo, imagino que vc 
 poderia fazer alguma coisa básica, tipo identificar um histórico de quais 
 tabelas estão sendo mais inseridas/updateadas/deletadas,qtdade  mas há outras 
 fontes e possibilidades para isso também
 
 = granularidade da Auditoria : o redo é gerado para todos os SQLs, 
 independente se é uma tabela importante ou não, enquanto o FGA permite que 
 vc audite apenas alguma(s) coluna(s) de tabela(s), ou mesmo uma condição , 
 tipo auditar apenas alterações no SALARIO aonde SALARIO  1, etc
 
 = awr/statspack *** não ** fazem log, não Auditam nada : a questão com 
 eles é que eles capturam AMOSTRAS da V$SQL, V$SESSION e correlatas, que 
 funcionam como retratos dos caches (de dados, de SQL, etc) , então num banco 
 bem ativo é COMUM vc perder SQLs no awr/statspack porque eles já saíram do 
 cache durante o intervalo das amostras
 
 = finalmente, sobre o Statspack : é verdade que o Standard é restrito 
 (restrito é até eufemismo aqui, tem que ganhar muita coisa pra chegar a ser 
 considerado restrito), mas afaik o Statspack, como eu disse acima, faz coleta 
 das V$ 'comuns' e 'livres' do sistema, tal como V$SQL, V$SESSION, etc, o que 
 Absolutamente Não Demanda licença alguma, deveria funcionar normalmente : 
 então, se não está vindo a informação completa, acho muito mais provável que 
 tenha algum ponto faltante (como TIMED_STATISTICS, por exemplo), que o 
 usuário usado pro report de statspack não tinha privs corretos e/ou que se 
 esteja gerando ou os snapshots ou o report de statspack erradamente 
 
 
   []s
 
 
Chiappa
 
 --- Em oracle_br@yahoogrupos.com.br, ederson2001br ederson2001br@ escreveu
 
  Alô Wadson,
  
  Eu uso o Logminer desde a versão 9, sempre que preciso auditar algum 
  procedimento duvidoso no banco, bem como avaliar os estragos causados por 
  algum processo mau-comportado.
  
  O uso do Statspack com esta intenção, vc consegue retornar os sqls que o 
  banco executou, juntamente com os planos de execução (dentro da janela do 
  cache), mas não consegue retornar os valores bind. Atualmente, trabalho com 
  bases 10g Standard com RAC em ASM. Usando o statspack, sempre analisamos os 
  sqls rodados e seus planos de execução, sempre atuando na melhoria de