[oracle_br] Re: Ajuda no Group BY

2011-11-01 Por tôpico José Laurindo
Tava meio difícil de entender a sua explicação, mas pelo que consegui sacar, o 
que vc quer é ter um relatório de quebra, ie, quando mudar determinada 
coluna-chave aí vc aplica um total da quebra... Sendo isso mesmo, a resposta é 
: dá SIM pra fazer em SQL apenas, mas é Mais trabalhoso do que usar as opções 
built-in da sua tool/linguagem de programação/gerador de relatórios  Até o 
super-simplístico sqlplus tem os comandos BREAK e COMPUTE que fazem isso num 
zás-tras... 
 Caso realmente tenha que ser em SQL, ou vc usa funções analíticas 
(http://www.oracle-developer.net/display.php?id=102 tem uma introdução 
interessante, e pesquisando em http://asktom.oracle.com vc acha n+1! exemplos, 
e aqui mesmo no Fórum há alguns dias rolou analytics numa thread, enfim) , ou 
vc usa rollup na agrupação... Um exemplo meio simplório usando a tabela 
EMPLOYEES do schema de demo HR com rollup - supondo que quero um total de 
salários por cada dia de contratação e por departamento  :
 
HR@O10GR2:SQL>select hire_date, department_id, sum(salary) from employees group 
by rollup(hire_date, department_id);

HIRE_DATE   DEPARTMENT_IDSUM(SALARY)
-- -- --
17/06/1987 90  24000
17/06/1987 24000
17/09/1987 10   4400
17/09/1987  4400
21/09/1989 90  17000
21/09/1989 17000
03/01/1990 60   9000
03/01/1990  9000
21/05/1991 60   6000
21/05/1991  6000
13/01/1993 90  17000
13/01/1993 17000

07/06/1994 40   6500
07/06/1994 70  1
07/06/1994110  36900
07/06/1994 53400
16/08/1994100   9000
16/08/1994  9000
...


Veja por exemplo que no dia 07/06/1994 eu tive $6500 em contratações no depto 
40, $1 no depto  70 e $36900 no 110, e a linha abaixo com depto nulo me dá 
o total do dia , que é $53400 ...  Provavelmente pra ficar visualmente mais 
bonitinho vc meteria um CASE no SELECT, pra quando o DEPARTMENT_ID for nulo eu 
só exibir uma string "Total do Dia" ou coisa do tipo...   

 Eu repito, porém : é MUITO, mas MUUUITO Mais Fácil vc usar a opção de 
relatório com Quebra da sua tool/linguagem/gerador de reports, ou mesmo os 
built-ins do sqlplus , okdoc ?

 []s

  Chiappa
  

--- Em oracle_br@yahoogrupos.com.br, Elcio Francisco  
escreveu
>
> Pessoal tem uma query onde eu trago um resultado por data eu gostaria de 
> quando a data for mudada se tem como dar um resultado. Ex.: 
> DATA              VALOR---           ---31/11/2011        
>    100,0031/11/2011             50,00    Total                
> 150,0001/11/2011           100,0001/11/2011           100,0001/11/2011        
>    100,00     Total               300,00 
> Query-select count(*) Qtde      ,loj.loja      ,mov.data_movimento    
>    ,sum(mov.compra) Valor  from movimento mov      ,cliente   cli      ,loja  
>     loj      where mov.loja           = 7   and mov.empresa        =  
> cli.empresa   and mov.cliente        =  cli.cliente   and mov.loja_loja      
> <> cli.loja_origem   and mov.loja_loja      = loj.loja   and mov.loja_empresa 
>   = loj.empresa    group by loj.unidade_servico,mov.data_movimento  order by 
> mov.data_movimento desc
> Se alguem pude me ajudar
> Muito Obrigado
> 
> Elcio 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




RES: [oracle_br] Re: Backup Rman

2011-11-01 Por tôpico Alisson Luz
Perfeito Chiappa ,

 

Eu não tinha observado isso.. 

Muito obrigado pela atenção...

 

At,
Alisson Luz

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de José Laurindo
Enviada em: terça-feira, 1 de novembro de 2011 16:01
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Backup Rman

 

  

È curioso, pois em princípio diferença de tamanho em backup se explicaria
por uso de backup incremental, mas afaik mesmo na versão 11g ainda não é
default o incremental
Será que na verdade vc não está somando o tamanho dos backup DE ARCHIVELOG
na sua conta geral ??? Se for isso é óbvio, a primeira vez vc tinha
archives, que ocuparam um certo tamanho no backup, aí no script vc logo após
o backup de database executa um backup archivelog all delete all input; , os
archive logs são backupeados E REMOVIDOS, aí na segunda execução do script o
primeiro comando de backup database gera cópias de backup do mesmo tamanho
(para o database) MAS o segundo, o de archivelog, não encontra mais nada pra
backupear aí gera uma cópia de backup (para o ARCHIVE) muito menor, só com o
archive corrente... 
Veja lá se é isso, peça um LIST BACKUP OF DATABASE; e um LIST BACKUP OF
ARCHIVELOG ALL; , e compare os tamanhos dos arquivos de backup para database
na primeira e na segunda execução, e os tamanhos dos arquivos contendo
backups de archived redo logs na primeira e na segunda execução...

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br 
, "alisson"  escreveu
>
> Olá boa tarde a todos...
> 
> Estou estudando o Rman em um ambiente de teste e desenvolvi esse script 
> para backup: desenvolver
> run {
> allocate channel t1 type disk;
> allocate channel t2 type disk;
> backup as compressed backupset filesperset 4 database;
> backup as compressed backupset archivelog all delete all input; 
> }
> 
> O que eu tenho observado é foi gerado um backup maior na primeira vez e já
nas subsequentes esta gerando backup com tamanho bem menor..
> Gostaria de saber se é isso mesmo ou estou fazendo algo errado..
> Tipo se quando eu for restaurar vou precisar de todos os backup ou somente
do ultimo ...
> 
> Obrigado...
> Ambiente : Windows 2008 Server
> Oracle 11G versão Version: 11.1.0.7.0.
>





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



Re: [oracle_br] SQL Injection

2011-11-01 Por tôpico Otavio Wollny
Veja este tutorial:
http://www.segurancaemrede.com/2009/08/tutorial-como-invadir-com-sql-injection-mysql-sql-injection-por-method-_get-e-_post-programa-para-sqlinjection/


Em 1 de novembro de 2011 12:50, lfr_66 escreveu:

> **
>
>
> Senhores,
> Sou totalmente leigo a respeito de SQL Injection e gostaria de uma ajuda.
> Ataques via SQL Injection somente podem acontecer em bancos de dados que
> rodem aplicações web? Há algum parâmetro de banco (ou boas práticas) que
> cuide da segurança para esse tipo de situação ou tudo que se pode fazer pra
> evitar esse tipo de ataque são tratadas nas camadas de aplicação e rede?
> Obrigado!
> Luiz Rocha
>
>  
>



-- 
Otavio S Wollny


[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: SQL Injection

2011-11-01 Por tôpico José Laurindo
Vamos começar definindo o que é esse coiso : numa explicação bem rasteira 
(pesquise em http://www.petefinnigan.com/weblog/entries/ e 
http://asktom.oracle.com para mais detalhes ), SQL Injection ocorre quando vc 
tem um SQL dinâmico  , aonde o usuário pode informar parte do texto do SQL E a 
aplicação não valida o que o usuário entra, se um usuário mal-intencionado  
entrar comandos SQL adequadamente formatados nessa string esse comandos são 
executados...
  Um exemplo ridiculamente simples, mas pra vc entender : digamos que eu tenha 
numa tabela chamada EMP uma coluna SAL, que o usuário não deveria poder acessar 
, tipo : 

  SCOTT@O10GR2:SQL>desc emp
 Nome  Nulo?Tipo
 -  
 EMPNO NOT NULL NUMBER(4)
 ENAME  VARCHAR2(10)
 JOBVARCHAR2(9)
 MGRNUMBER(4)
 HIREDATE   DATE
 SALNUMBER(7,2)
 COMM   NUMBER(7,2)
 DEPTNO NUMBER(2)

 e o asninho do desenvolvedor queria dar pro usuário final uma consulta que 
mostra o código (EMPNO) e o nome do empregado (ENAME), mas com a característica 
de que é o próprio usuário final que informa numa string o nome do empregado a 
consultar :
 
 SCOTT@O10GR2:SQL>select empno, ename from emp where ename = &V_NOME
 
 parece ser inocente, né ? E realmente, se o usuário informar o nome só, 
funciona normalmente :
 
SCOTT@O10GR2:SQL>/

Informe o valor para v_nome: 'MILLER'
antigo   1: select empno, ename from emp where ename = &V_NOME
novo   1: select empno, ename from emp where ename = 'MILLER'

 EMPNO ENAME
-- --
  7934 MILLER

=> legal... Agora suponha um usuário um pouquinho mais esperto e 
mal-intencionado, que coloca comandos SQLs dentro da string , ó o que acontece :

SCOTT@O10GR2:SQL>/
Informe o valor para v_nome: ename UNION select sal, ename from emp
antigo   1: select empno, ename from emp where ename = &V_NOME
novo   1: select empno, ename from emp where ename = ename UNION select sal, 
ename from emp

 EMPNO ENAME
-- --
   800 SMITH
   950 JAMES
  1100 ADAMS
  1250 MARTIN
  1250 WARD
  1300 MILLER
  1500 TURNER
  1600 ALLEN
  2450 CLARK
  2850 BLAKE
  2975 JONES
  3000 FORD
  3000 SCOTT
  5000 KING
  7369 SMITH
  7499 ALLEN
  7521 WARD
  7566 JONES
  7654 MARTIN
  7698 BLAKE
  7782 CLARK
  7788 SCOTT
  7839 KING
  7844 TURNER
  7876 ADAMS
  7900 JAMES
  7902 FORD
  7934 MILLER

28 linhas selecionadas.

==> taí, o comando SQL informado foi concatenado ao texto, e como estava 
sintaticamente correto foi executado - como resultado não-esperado pelo 
programador, o usuário malicioso obteve o conteúdo da coluna SAL , embora o 
título da coluna mostre EMPNO ... Veja que foi isso mesmo que aconteceu :

SCOTT@O10GR2:SQL>select ename, sal from emp;

ENAME SAL
-- --
SMITH 800
ALLEN1600
WARD 1250
JONES2975
MARTIN   1250
BLAKE2850
CLARK2450
SCOTT3000
KING 5000
TURNER   1500
ADAMS1100
JAMES 950
FORD 3000
MILLER   1300

14 linhas selecionadas.

SCOTT@O10GR2:SQL>  

===> OK ? Com isso ficou super-simples de te responder as suas perguntas :

a. SQL Injection *** NÂO *** é de modo algum exclusividade de aplicações web, 
já que SQL dinâmico tranquilamente Pode Ser usado em client/server, também...

b. como mostrado, NÂO é uma questão do database, é aplicação mal-feita, bug na 
aplicação, portanto NENHUM "parâmetro" ou ação no database pode impedir

c. a camada de rede não tem NADA vezes NADA a ver com o assunto (como mostrado, 
a aplicação está fazendo a besteira que foi mandada a fazer), não tem como na 
camada de rede vc detectar usuário aproveitando-se de brecha na aplicação... 

==>  Já que Redes não tem como atuar, e no banco de dados também não há como 
identificar se o texto do SQL enviado é o que o programador queria ou não, se 
teve partes adicionais coladas ou não, fica óbvio que a única camada que pode 
resolver a questão é a Aplicação, e as boas práticas são :

1. SEMPRE, aonde possível, evit

Re: [oracle_br] SQL Injection

2011-11-01 Por tôpico Éverton Evaristo
Sim, é possivel.

Na verdade não devemos olhar pela ótica da interface Web X Desktop, mas sim
pela camada de apresentação da aplicação, indiferente de onde venha, os
dados sempre tem que ser 'sanitizados'.

Att.

Éverton Evaristo



Em 1 de novembro de 2011 14:04, Milton Bastos Henriquis Junior <
milton.bas...@meta.com.br> escreveu:

> **
>
>
> Este é oficial da Oracle, disponível pra download:
>
> How to write SQL injection proof PL/SQL<
> http://www.oracle.com/us/products/database/how-to-write-injection-proof-plsql-1-129572.pdf
> >
>
> http://www.oracle.com/us/products/database/how-to-write-injection-proof-plsql-1-129572.pdf
>
> Há também um tutorial online a respeito:
>
> Tutorial
> on Defending Against SQL Injection Attacks
> http://st-curriculum.oracle.com/tutorial/SQLInjection/index.htm
>
> Especificamente sobre sua pergunta: "Ataques via SQL Injection somente
> podem acontecer em bancos de dados que rodem aplicações web?"
>
> R: acredito que seja possível sim acontecer um ataque deste tipo em uma
> aplicação Desktop.
> Na "prática" o que vemos são aplicações Desktop usadas em rede locais, e
> aplicativos Web tem exatamente a característica de poder ser "rodado" a
> partir de qualquer browser conectado a internet.
> Portanto, conceitualmente, se você tem uma aplicação Desktop na grande
> maioria das vezes estará rodando em uma rede local - e nesse caso fica mais
> fácil fazer um rastreamento e também uma auditoria de QUEM está executando
> um código suspeito.
> Ou seja: um funcionário de uma empresa iria se arriscar a atacar uma base
> de dados via SQL Injection dentro de sua própria empresa? Muitos poderiam
> ter essa intenção, mas fica mais fácil descobrir o culpado pelo IP da rede
> interna.
> Já via WEB um indiano ou um chinês pode acessar um sistema Web (óbvio,
> desde que seja um sistema Web liberado, e não restrito como uma Intranet
> por exemplo), e se houver brecha para um SQL injection difcilmente alguém
> conseguirá rastrear e "processar" o sujeito na justiça.
>
>
> Att,
> --
> Milton Bastos
> http://miltonbastos.com
>
> De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
> nome de Milton Bastos Henriquis Junior
> Enviada em: terça-feira, 1 de novembro de 2011 13:40
> Para: oracle_br@yahoogrupos.com.br
> Assunto: RES: [oracle_br] SQL Injection
>
>
> Eu tenho um material da Oracle específico sobre SQL Injection.
>
> Vou disponibilizar em algum lugar e posto aqui o link pra vocês.
>
> Att,
>
> --
> Milton Bastos
> http://miltonbastos.com
>
> De: oracle_br@yahoogrupos.com.br
> [mailto:oracle_br@yahoogrupos.com.br]
> Em nome de lfr_66
>
> Enviada em: terça-feira, 1 de novembro de 2011 12:51
> Para: oracle_br@yahoogrupos.com.br
>
> Assunto: [oracle_br] SQL Injection
>
> Senhores,
> Sou totalmente leigo a respeito de SQL Injection e gostaria de uma ajuda.
> Ataques via SQL Injection somente podem acontecer em bancos de dados que
> rodem aplicações web? Há algum parâmetro de banco (ou boas práticas) que
> cuide da segurança para esse tipo de situação ou tudo que se pode fazer pra
> evitar esse tipo de ataque são tratadas nas camadas de aplicação e rede?
> Obrigado!
> Luiz Rocha
>
> Clique aqui>
> para reportar este e-mail como SPAM.
>
> This message has been scanned for malware by Websense. www.websense.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



RES: [oracle_br] SQL Injection

2011-11-01 Por tôpico Milton Bastos Henriquis Junior
Este é oficial da Oracle, disponível pra download:

How to write SQL injection proof 
PL/SQL
http://www.oracle.com/us/products/database/how-to-write-injection-proof-plsql-1-129572.pdf

Há também um tutorial online a respeito:

Tutorial
on Defending Against SQL Injection Attacks
http://st-curriculum.oracle.com/tutorial/SQLInjection/index.htm


Especificamente sobre sua pergunta: "Ataques via SQL Injection somente podem 
acontecer em bancos de dados que rodem aplicações web?"

R: acredito que seja possível sim acontecer um ataque deste tipo em uma 
aplicação Desktop.
Na "prática" o que vemos são aplicações Desktop usadas em rede locais, e 
aplicativos Web tem exatamente a característica de poder ser "rodado" a partir 
de qualquer browser conectado a internet.
Portanto, conceitualmente, se você tem uma aplicação Desktop na grande maioria 
das vezes estará rodando em uma rede local - e nesse caso fica mais fácil fazer 
um rastreamento e também uma auditoria de QUEM está executando um código 
suspeito.
Ou seja: um funcionário de uma empresa iria se arriscar a atacar uma base de 
dados via SQL Injection dentro de sua própria empresa? Muitos poderiam ter essa 
intenção, mas fica mais fácil descobrir o culpado pelo IP da rede interna.
Já via WEB um indiano ou um chinês pode acessar um sistema Web (óbvio, desde 
que seja um sistema Web liberado, e não restrito como uma Intranet por 
exemplo), e se houver brecha para um SQL injection difcilmente alguém 
conseguirá rastrear e "processar" o sujeito na justiça.


Att,
--
Milton Bastos
http://miltonbastos.com

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome 
de Milton Bastos Henriquis Junior
Enviada em: terça-feira, 1 de novembro de 2011 13:40
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] SQL Injection



Eu tenho um material da Oracle específico sobre SQL Injection.

Vou disponibilizar em algum lugar e posto aqui o link pra vocês.

Att,

--
Milton Bastos
http://miltonbastos.com

De: oracle_br@yahoogrupos.com.br 
[mailto:oracle_br@yahoogrupos.com.br] Em 
nome de lfr_66
Enviada em: terça-feira, 1 de novembro de 2011 12:51
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] SQL Injection

Senhores,
Sou totalmente leigo a respeito de SQL Injection e gostaria de uma ajuda.
Ataques via SQL Injection somente podem acontecer em bancos de dados que rodem 
aplicações web? Há algum parâmetro de banco (ou boas práticas) que cuide da 
segurança para esse tipo de situação ou tudo que se pode fazer pra evitar esse 
tipo de ataque são tratadas nas camadas de aplicação e rede?
Obrigado!
Luiz Rocha

Clique aqui> para 
reportar este e-mail como SPAM.

This message has been scanned for malware by Websense. www.websense.com

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






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



[oracle_br] Arquivo - Aviso

2011-11-01 Por tôpico oracle_br

Sua PRIMEIRA MENSAGEM será MODERADA podendo demorar de 1 a 24hrs para ser 
liberada dependendo da disponibilidade dos moderadores; as proximas seguirá o 
processo normal do grupo (sem moderação). 

Caso tenha urgencia envie um e-mail pedindo liberação imediata para 
dor...@uag.com.br (é necessario confirmar anti-spam)

Este grupo não aceita a divulgação de vagas, propostas e eventos. Para isto 
criamos o portal http://www.oraclebr.com.br/ onde qualquer pessoa pode divulgar 
ou pesquisar por vagas e eventos. 

Antes de formular sua pergunta visite http://www.oraclebr.com.br/ clique em 
pesquisar mensagens, talvez já tenha o que você procura. Em caso de erro 
retornado pelo próprio banco, o portal oraclebr também tem um recurso de 
pesquisa do mesmo.

Existe também um laboratório onde qualquer pessoa pode cadastrar funções, 
dicas, experiências e exemplos compartilhado ou não no grupo. O portal é uma 
extenção do grupo oracle_br. Qualquer duvida fale com a moderação: 
modera...@oraclebr.com.br 

Visando melhorar a comunicação entre os usuários e evitar poluição de 
mensagens, solicitamos a todos que ao postarem mensagens de dúvidas/problemas 
que envolvem Banco de Dados, Sistema Operacional, Ferramenta de Administração, 
Software em geral, não esquecer de informar qual a Versão dos mesmos, pois, 
quanto mais informações forem postadas na primeira mensagem de contato 
evitaremos dúvidas quanto a versão ou ambiente que o usuário está trabalhando. 

=
#Arquivo enviado mensalmente pelo YahooGroups#
==




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