Re: [oracle_br] Re: Inserção de Dados Em Registro Fixo
Boa tarde ! Obrigado Chiappa, ja clareou as idéias. .. Em ter, 21/3/17, jlchia...@yahoo.com.br [oracle_br]escreveu: Assunto: [oracle_br] Re: Inserção de Dados Em Registro Fixo Para: oracle_br@yahoogrupos.com.br Data: Terça-feira, 21 de Março de 2017, 9:51 Tudo jóia ? Então, primeiro em SQL puro apenas vc provavelmente ** não ** vai conseguir, vai ter que mixar PL/SQL No caso, primeiro de tudo ** não existe ** um comando PL/SQL que permita vc fazer nem insert nem replace de arquivo-texto - na package apropriada UTL_FILE, consulte na doc e verá que temos leitura de linha, gravação de linha, renomear, apagar o arquivo, mas não INSERT de string em posição determinada numa linha : o procedimento então será vc ler as linhas uma a uma para um buffer, inserir no buffer a string que vc quer, e depois gravar de novo a linha... Como não existe um comando de trocar a linha, o mais fácil seria vc gravar as novas linhas num novo arquivo, aí depois vc apaga o original e renomeia o novo para o nome do velho O procedimento para inserir algo numa string pode ser feito via REGEXP (se vc tiver isso disponível na sua versão do RDBMS Oracle, que vc NÂO DIZ qual é - iirc regexp foi introduzido no 10g, só não lembro se R1 ou R2), OU então simplesmente separando com SUBSTR os 3 primeiros caracteres do buffer e concatenando esse pedaçõ com o novo texto que vc quer e depois com o resto : veja http://stackoverflow.com/questions/18230658/oracle-insert-character-into-a-string para um exemplinho de cada técnica : não é Exatamente a lógica que vc quer que está representada mas com certeza vai ser algo próximo A lógica geral da sua rotina portanto vai ser : abrir o arquivo de texto original criar o arquivo de texto 'temporário'/de trabalho loop enquanto não chegou no fim de arquivo ler uma linha e colocar num buffer/variável inserir na 4a posição a string que vc quer gravar o buffer numa nova linha no arquivo de trabalho end loop fechar ambos arquivos apagar arquivo original renomear arquivo de trabalho para o nome do original []s Chiappa
[oracle_br] Inserção de Dados Em Registro Fixo
Bom dia ! Pessoal temos um rotina diária que lê um arquivo (comprimento fixo) e grava em um tabela, acontece que agora em determinada posição do registro eu preciso inserir um dado (default ou sequencial). Como faço isso ? Pois a função substr não me atende, porque ela substitui o caracter na posição que informo, quando na verdade o que eu quero é acrescentar o dado. Exemplo, segue dois registros : 001CTR0A0100022434001CTR0A020006 Na 4a posição (onde se encontra a letra C) preciso incluir 001 (serão os números de lote), ficaria então assim : 001001CTR0A0100022434001001CTR0A020006 Alguém poderia me ajudar com o SQL que faça isso ? Desde já agradeço pela atenção...
[oracle_br] Execução via windows (client)
Senhores estou precisando executar de forma automática um pequeno bloco de uma procedure, porém é apenas por 02 semanas. É possível realizar um agendamento automático via o windows (client) para disparar esse código?
[oracle_br] ResultSet em UTF-8
Pessoal estou precisando gerar um resultset de um select .csv no encoding UTF-8, utilizo como client o Navigator e TOAD. Acontece que está saindo apena no formato DOS e não estou achando a opção para o UTF-8. Poderiam me ajudar a extrair os dados neste formato?
[oracle_br] Update em tabela pai e filha
Senhores estou atualizando o campo de 02 tabelas (pai e filha), acontece que se atualizo uma da erro de constraint na outra (e vice versa). Abri 02 cursores mas não adiantou, as tabelas travam. Como faço neste caso?
Re: RES: [oracle_br] Update em tabela pai e filha
Boa tarde marlon! Acredito não ser este um procedimento correto, não há problemas manter a constraint ativo, sei que é possível fazer as duas atualizações, inclusive na mesma sessão, só estou meio perdido no fluxo desta atualização. Em Terça-feira, 16 de Dezembro de 2014 13:30, Marlon Pasquali - TI - Peccin S.A. marlon.pasqu...@peccin.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Desabilita a constraint e depois de concluir a atualização habilita novamente. Mas tome o cuidado necessário para manter os dados concisos como a constraint exige. Att Marlon De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Enviada em: terça-feira, 16 de dezembro de 2014 13:26 Para: grupo_oracle Assunto: [oracle_br] Update em tabela pai e filha Senhores estou atualizando o campo de 02 tabelas (pai e filha), acontece que se atualizo uma da erro de constraint na outra (e vice versa). Abri 02 cursores mas não adiantou, as tabelas travam. Como faço neste caso?#yiv6332545995 -- #yiv6332545995ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6332545995 #yiv6332545995ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6332545995 #yiv6332545995ygrp-mkp #yiv6332545995hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6332545995 #yiv6332545995ygrp-mkp #yiv6332545995ads {margin-bottom:10px;}#yiv6332545995 #yiv6332545995ygrp-mkp .yiv6332545995ad {padding:0 0;}#yiv6332545995 #yiv6332545995ygrp-mkp .yiv6332545995ad p {margin:0;}#yiv6332545995 #yiv6332545995ygrp-mkp .yiv6332545995ad a {color:#ff;text-decoration:none;}#yiv6332545995 #yiv6332545995ygrp-sponsor #yiv6332545995ygrp-lc {font-family:Arial;}#yiv6332545995 #yiv6332545995ygrp-sponsor #yiv6332545995ygrp-lc #yiv6332545995hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6332545995 #yiv6332545995ygrp-sponsor #yiv6332545995ygrp-lc .yiv6332545995ad {margin-bottom:10px;padding:0 0;}#yiv6332545995 #yiv6332545995actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6332545995 #yiv6332545995activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6332545995 #yiv6332545995activity span {font-weight:700;}#yiv6332545995 #yiv6332545995activity span:first-child {text-transform:uppercase;}#yiv6332545995 #yiv6332545995activity span a {color:#5085b6;text-decoration:none;}#yiv6332545995 #yiv6332545995activity span span {color:#ff7900;}#yiv6332545995 #yiv6332545995activity span .yiv6332545995underline {text-decoration:underline;}#yiv6332545995 .yiv6332545995attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6332545995 .yiv6332545995attach div a {text-decoration:none;}#yiv6332545995 .yiv6332545995attach img {border:none;padding-right:5px;}#yiv6332545995 .yiv6332545995attach label {display:block;margin-bottom:5px;}#yiv6332545995 .yiv6332545995attach label a {text-decoration:none;}#yiv6332545995 blockquote {margin:0 0 0 4px;}#yiv6332545995 .yiv6332545995bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6332545995 .yiv6332545995bold a {text-decoration:none;}#yiv6332545995 dd.yiv6332545995last p a {font-family:Verdana;font-weight:700;}#yiv6332545995 dd.yiv6332545995last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6332545995 dd.yiv6332545995last p span.yiv6332545995yshortcuts {margin-right:0;}#yiv6332545995 div.yiv6332545995attach-table div div a {text-decoration:none;}#yiv6332545995 div.yiv6332545995attach-table {width:400px;}#yiv6332545995 div.yiv6332545995file-title a, #yiv6332545995 div.yiv6332545995file-title a:active, #yiv6332545995 div.yiv6332545995file-title a:hover, #yiv6332545995 div.yiv6332545995file-title a:visited {text-decoration:none;}#yiv6332545995 div.yiv6332545995photo-title a, #yiv6332545995 div.yiv6332545995photo-title a:active, #yiv6332545995 div.yiv6332545995photo-title a:hover, #yiv6332545995 div.yiv6332545995photo-title a:visited {text-decoration:none;}#yiv6332545995 div#yiv6332545995ygrp-mlmsg #yiv6332545995ygrp-msg p a span.yiv6332545995yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6332545995 .yiv6332545995green {color:#628c2a;}#yiv6332545995 .yiv6332545995MsoNormal {margin:0 0 0 0;}#yiv6332545995 o {font-size:0;}#yiv6332545995 #yiv6332545995photos div {float:left;width:72px;}#yiv6332545995 #yiv6332545995photos div div {border:1px solid #66;height:62px;overflow:hidden;width:62px;}#yiv6332545995 #yiv6332545995photos div label {color:#66;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6332545995 #yiv6332545995reco-category {font-size:77%;}#yiv6332545995 #yiv6332545995reco-desc {font-size:77%;}#yiv6332545995 .yiv6332545995replbq {margin:4px;}#yiv6332545995 #yiv6332545995ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv6332545995
Re: RES: [oracle_br] Update em tabela pai e filha
Veja só: Tabela A (pai), tabela B (filha) um insert na A com valor 1,um insert na B com valor 1 na FK Preciso atualizar a tabela B com o valor 2, logo, precisaria fazer um update na PK da tabela A para que seja possível. A única maneira que vi foi realmente foi como o Marlon escreveu (desabilitando a constraint). Então gostaria de saber se é este realmente o recurso ou é possível via um loop (ou algo assim). Em Terça-feira, 16 de Dezembro de 2014 15:51, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Pra gente poder entender e te ajudar , PLZ explica exatamente o que é está atualização que vc vai fazer, E nos mostre a exata e completa msg de erro (erro de constraint é genérico a mais não poder)... E uma coisa é travar, e OUTRA coisa é abortar com um erro - plz diga Exatamente o que ocorre aí ... Agora, de cara já digo que : a. se a tal atualização é uma Inserção de novos registros na tabela-filha, OBVIAMENTE o INSERT na tabela-pai deve acontecer antes do INSERT dos n registros-filhos relacionados com o novo pai b. se a tal atualização é um UPDATE na coluna-chave , se tal UPDATE ocorrer na tabela-pai como eu mostrei numa thread recente em havendo índice apropriado a tabela-fila NÃO ficará totalmente bloqueada, E (claro) se o UPDATE for na coluna-chave UK da tabela-filha, a verificação tem que ser feita na tabela-pai, e Necessariamente a tabela-pai já tem índice na PK e/ou na UK que se relaciona com a filha... []s Chiappa #yiv3852787615 #yiv3852787615 -- #yiv3852787615ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv3852787615 #yiv3852787615ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv3852787615 #yiv3852787615ygrp-mkp #yiv3852787615hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv3852787615 #yiv3852787615ygrp-mkp #yiv3852787615ads {margin-bottom:10px;}#yiv3852787615 #yiv3852787615ygrp-mkp .yiv3852787615ad {padding:0 0;}#yiv3852787615 #yiv3852787615ygrp-mkp .yiv3852787615ad p {margin:0;}#yiv3852787615 #yiv3852787615ygrp-mkp .yiv3852787615ad a {color:#ff;text-decoration:none;}#yiv3852787615 #yiv3852787615ygrp-sponsor #yiv3852787615ygrp-lc {font-family:Arial;}#yiv3852787615 #yiv3852787615ygrp-sponsor #yiv3852787615ygrp-lc #yiv3852787615hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv3852787615 #yiv3852787615ygrp-sponsor #yiv3852787615ygrp-lc .yiv3852787615ad {margin-bottom:10px;padding:0 0;}#yiv3852787615 #yiv3852787615actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv3852787615 #yiv3852787615activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv3852787615 #yiv3852787615activity span {font-weight:700;}#yiv3852787615 #yiv3852787615activity span:first-child {text-transform:uppercase;}#yiv3852787615 #yiv3852787615activity span a {color:#5085b6;text-decoration:none;}#yiv3852787615 #yiv3852787615activity span span {color:#ff7900;}#yiv3852787615 #yiv3852787615activity span .yiv3852787615underline {text-decoration:underline;}#yiv3852787615 .yiv3852787615attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv3852787615 .yiv3852787615attach div a {text-decoration:none;}#yiv3852787615 .yiv3852787615attach img {border:none;padding-right:5px;}#yiv3852787615 .yiv3852787615attach label {display:block;margin-bottom:5px;}#yiv3852787615 .yiv3852787615attach label a {text-decoration:none;}#yiv3852787615 blockquote {margin:0 0 0 4px;}#yiv3852787615 .yiv3852787615bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv3852787615 .yiv3852787615bold a {text-decoration:none;}#yiv3852787615 dd.yiv3852787615last p a {font-family:Verdana;font-weight:700;}#yiv3852787615 dd.yiv3852787615last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv3852787615 dd.yiv3852787615last p span.yiv3852787615yshortcuts {margin-right:0;}#yiv3852787615 div.yiv3852787615attach-table div div a {text-decoration:none;}#yiv3852787615 div.yiv3852787615attach-table {width:400px;}#yiv3852787615 div.yiv3852787615file-title a, #yiv3852787615 div.yiv3852787615file-title a:active, #yiv3852787615 div.yiv3852787615file-title a:hover, #yiv3852787615 div.yiv3852787615file-title a:visited {text-decoration:none;}#yiv3852787615 div.yiv3852787615photo-title a, #yiv3852787615 div.yiv3852787615photo-title a:active, #yiv3852787615 div.yiv3852787615photo-title a:hover, #yiv3852787615 div.yiv3852787615photo-title a:visited {text-decoration:none;}#yiv3852787615 div#yiv3852787615ygrp-mlmsg #yiv3852787615ygrp-msg p a span.yiv3852787615yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv3852787615 .yiv3852787615green {color:#628c2a;}#yiv3852787615 .yiv3852787615MsoNormal {margin:0 0 0 0;}#yiv3852787615 o {font-size:0;}#yiv3852787615 #yiv3852787615photos div {float:left;width:72px;}#yiv3852787615 #yiv3852787615photos
Re: RES: [oracle_br] Update em tabela pai e filha
Ok, foram extremamente claros os conceitos, agradeço a todos.De fato, a pk composta de muitos campos como é o meu caso, só vai dificultar as coisas, vou criar um campo sequencial básico e retirar a pk da mesma. Acredito que assim ficará melhor manter as tabelas. Em Terça-feira, 16 de Dezembro de 2014 17:31, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Bem, realmente não é um design comum e corriqueiro, e sem dúvida a teoria e as melhores práticas de modelagem demandam que chaves sejam únicas e imutáveis (inclusive ao longo do tempo) mas é possível se existir essa necessidade : numa thread recente, eu demonstrei uma possibilidade, com um caso em que a relação de FK/PK na verdade era usada para se validar um domínio de valores (ie, a coluna-chave pode assumir um de N valores possíveis, numa qtdade total tão grande que invalida a possibilidade de escrever constraint de check), sendo que os valores possíveis estavam cadastrados na tabela-pai Vamos ver o que o colega lá que perguntou diz, mas IMAGINO que é algum caso nesse sentido, em que a chave na verdade indica um status, é um atributo que pode variar dentro de uma gama possível de valores no decorrer do tempo... []s Chiappa #yiv0464590561 #yiv0464590561 -- #yiv0464590561ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv0464590561 #yiv0464590561ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv0464590561 #yiv0464590561ygrp-mkp #yiv0464590561hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv0464590561 #yiv0464590561ygrp-mkp #yiv0464590561ads {margin-bottom:10px;}#yiv0464590561 #yiv0464590561ygrp-mkp .yiv0464590561ad {padding:0 0;}#yiv0464590561 #yiv0464590561ygrp-mkp .yiv0464590561ad p {margin:0;}#yiv0464590561 #yiv0464590561ygrp-mkp .yiv0464590561ad a {color:#ff;text-decoration:none;}#yiv0464590561 #yiv0464590561ygrp-sponsor #yiv0464590561ygrp-lc {font-family:Arial;}#yiv0464590561 #yiv0464590561ygrp-sponsor #yiv0464590561ygrp-lc #yiv0464590561hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv0464590561 #yiv0464590561ygrp-sponsor #yiv0464590561ygrp-lc .yiv0464590561ad {margin-bottom:10px;padding:0 0;}#yiv0464590561 #yiv0464590561actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv0464590561 #yiv0464590561activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv0464590561 #yiv0464590561activity span {font-weight:700;}#yiv0464590561 #yiv0464590561activity span:first-child {text-transform:uppercase;}#yiv0464590561 #yiv0464590561activity span a {color:#5085b6;text-decoration:none;}#yiv0464590561 #yiv0464590561activity span span {color:#ff7900;}#yiv0464590561 #yiv0464590561activity span .yiv0464590561underline {text-decoration:underline;}#yiv0464590561 .yiv0464590561attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv0464590561 .yiv0464590561attach div a {text-decoration:none;}#yiv0464590561 .yiv0464590561attach img {border:none;padding-right:5px;}#yiv0464590561 .yiv0464590561attach label {display:block;margin-bottom:5px;}#yiv0464590561 .yiv0464590561attach label a {text-decoration:none;}#yiv0464590561 blockquote {margin:0 0 0 4px;}#yiv0464590561 .yiv0464590561bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv0464590561 .yiv0464590561bold a {text-decoration:none;}#yiv0464590561 dd.yiv0464590561last p a {font-family:Verdana;font-weight:700;}#yiv0464590561 dd.yiv0464590561last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv0464590561 dd.yiv0464590561last p span.yiv0464590561yshortcuts {margin-right:0;}#yiv0464590561 div.yiv0464590561attach-table div div a {text-decoration:none;}#yiv0464590561 div.yiv0464590561attach-table {width:400px;}#yiv0464590561 div.yiv0464590561file-title a, #yiv0464590561 div.yiv0464590561file-title a:active, #yiv0464590561 div.yiv0464590561file-title a:hover, #yiv0464590561 div.yiv0464590561file-title a:visited {text-decoration:none;}#yiv0464590561 div.yiv0464590561photo-title a, #yiv0464590561 div.yiv0464590561photo-title a:active, #yiv0464590561 div.yiv0464590561photo-title a:hover, #yiv0464590561 div.yiv0464590561photo-title a:visited {text-decoration:none;}#yiv0464590561 div#yiv0464590561ygrp-mlmsg #yiv0464590561ygrp-msg p a span.yiv0464590561yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv0464590561 .yiv0464590561green {color:#628c2a;}#yiv0464590561 .yiv0464590561MsoNormal {margin:0 0 0 0;}#yiv0464590561 o {font-size:0;}#yiv0464590561 #yiv0464590561photos div {float:left;width:72px;}#yiv0464590561 #yiv0464590561photos div div {border:1px solid #66;height:62px;overflow:hidden;width:62px;}#yiv0464590561 #yiv0464590561photos div label {color:#66;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv0464590561
Re: [oracle_br] Dúvida para uma ordenação (order by)
Obrigado pelas sugestões Victor... Em Segunda-feira, 15 de Dezembro de 2014 12:04, Victor Freidinger victor_freidin...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Olá, tudo bem? Você pode alterar pelos 2.Caso haja 2 datas iguais, exatamente, você pode ordenar pela PK: Order by campo_data, campo_pk Isso te daria uma precisão maior.Porém, eu indicaria utilizar o campo PK por, normalmente, ser um index e para trazer as informações, seria mais rápido. Isso pensando que você terá uma massa de dados enorme. Se for poucos dados, ai você precisa realizar alguns testes de performance.Se você garantir que quando é inserido os dados na tabela a sequence alimenta corretamente o campo da PK, utilize o campo, então. Porém, se houver um update no campo de data, você perde essa garantia. Espero ter ajudado.Abs Em Sexta-feira, 12 de Dezembro de 2014 17:31, Jales Jose Moraes malphig...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Senhores estou precisando ordernar uma tabela e nela tem um campo tipo date no qual tem várias data igual (inclusive o segundos). Pergunto: Posso ordernar com base na pk da tabela (no qual é uma sequence) ou altero o campo date para timestamp e assim consigo uma precisão maior para a ordenação. #yiv9903728948 #yiv9903728948 -- #yiv9903728948ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv9903728948 #yiv9903728948ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv9903728948 #yiv9903728948ygrp-mkp #yiv9903728948hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv9903728948 #yiv9903728948ygrp-mkp #yiv9903728948ads {margin-bottom:10px;}#yiv9903728948 #yiv9903728948ygrp-mkp .yiv9903728948ad {padding:0 0;}#yiv9903728948 #yiv9903728948ygrp-mkp .yiv9903728948ad p {margin:0;}#yiv9903728948 #yiv9903728948ygrp-mkp .yiv9903728948ad a {color:#ff;text-decoration:none;}#yiv9903728948 #yiv9903728948ygrp-sponsor #yiv9903728948ygrp-lc {font-family:Arial;}#yiv9903728948 #yiv9903728948ygrp-sponsor #yiv9903728948ygrp-lc #yiv9903728948hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv9903728948 #yiv9903728948ygrp-sponsor #yiv9903728948ygrp-lc .yiv9903728948ad {margin-bottom:10px;padding:0 0;}#yiv9903728948 #yiv9903728948actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv9903728948 #yiv9903728948activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv9903728948 #yiv9903728948activity span {font-weight:700;}#yiv9903728948 #yiv9903728948activity span:first-child {text-transform:uppercase;}#yiv9903728948 #yiv9903728948activity span a {color:#5085b6;text-decoration:none;}#yiv9903728948 #yiv9903728948activity span span {color:#ff7900;}#yiv9903728948 #yiv9903728948activity span .yiv9903728948underline {text-decoration:underline;}#yiv9903728948 .yiv9903728948attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv9903728948 .yiv9903728948attach div a {text-decoration:none;}#yiv9903728948 .yiv9903728948attach img {border:none;padding-right:5px;}#yiv9903728948 .yiv9903728948attach label {display:block;margin-bottom:5px;}#yiv9903728948 .yiv9903728948attach label a {text-decoration:none;}#yiv9903728948 blockquote {margin:0 0 0 4px;}#yiv9903728948 .yiv9903728948bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv9903728948 .yiv9903728948bold a {text-decoration:none;}#yiv9903728948 dd.yiv9903728948last p a {font-family:Verdana;font-weight:700;}#yiv9903728948 dd.yiv9903728948last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv9903728948 dd.yiv9903728948last p span.yiv9903728948yshortcuts {margin-right:0;}#yiv9903728948 div.yiv9903728948attach-table div div a {text-decoration:none;}#yiv9903728948 div.yiv9903728948attach-table {width:400px;}#yiv9903728948 div.yiv9903728948file-title a, #yiv9903728948 div.yiv9903728948file-title a:active, #yiv9903728948 div.yiv9903728948file-title a:hover, #yiv9903728948 div.yiv9903728948file-title a:visited {text-decoration:none;}#yiv9903728948 div.yiv9903728948photo-title a, #yiv9903728948 div.yiv9903728948photo-title a:active, #yiv9903728948 div.yiv9903728948photo-title a:hover, #yiv9903728948 div.yiv9903728948photo-title a:visited {text-decoration:none;}#yiv9903728948 div#yiv9903728948ygrp-mlmsg #yiv9903728948ygrp-msg p a span.yiv9903728948yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv9903728948 .yiv9903728948green {color:#628c2a;}#yiv9903728948 .yiv9903728948MsoNormal {margin:0 0 0 0;}#yiv9903728948 o {font-size:0;}#yiv9903728948 #yiv9903728948photos div {float:left;width:72px;}#yiv9903728948 #yiv9903728948photos div div {border:1px solid #66;height:62px;overflow:hidden;width:62px;}#yiv9903728948 #yiv9903728948photos div label {color:#66;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap
[oracle_br] Dúvida para uma ordenação (order by)
Senhores estou precisando ordernar uma tabela e nela tem um campo tipo date no qual tem várias data igual (inclusive o segundos). Pergunto: Posso ordernar com base na pk da tabela (no qual é uma sequence) ou altero o campo date para timestamp e assim consigo uma precisão maior para a ordenação.
[oracle_br] ìndices em FK's
Senhores tenho uma tabela com apenas 18 registros e que faz uma fk com uma tabela de 180 registros (bastante acessada). Esta tabela de 18 registros uma vez ou outra está bloqueando algumas sessões quando vai fazer um update neste campo da fk. Minha pergunta: É necessário criar um índice no campo desta fk, apesar desta pequena quantidade de registros? Se sim, posso então seguir esta hipótese, ou seja, criar índices para todos os campos que fazem FK's?
Re: [oracle_br] Re: ìndices em FK's
A tabela pequena é a tabela filha. Funciona assim: Esta tabela pequena tem 2 colunas (co_tp_documento, nu_seq_documento) no qual pode ter valores como DOCUMENTO EXTERNO; DOCUMENTO EM TRAMITAÇÃO, DOCUMENTO SEM ATOS PUBLICADOS, etc...(são milhões de possibilidades no qual esse documento pode existir) Acontece que alguns documentos podem sofrer alterações e aí precisamos fazer essa alteração nesta pequena tabela. Espero ter sido claro. Em Segunda-feira, 8 de Dezembro de 2014 17:21, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Pra gente poder entender, ** please ** explica melhor esse faz FK aí : a tabela com 18 registros é a tabela PAI ou é a tabela FILHA nesse relacionamento com a tabela de 1.800.000 registros ?? E outra coisa : por definição, em princípio as chaves de uma tabela (sejam PK, sejam UK, sejam FK) ** deveriam ** ser imutáveis ou quase isso, dificilmente sofrendo UPDATEs de valores (o registro em si pode sofrer updates mil em outras colunas, normal, mas as Colunas chave deveriam ser ** CHAVE **, deveriam ser Imunes á alterações / flutuações de dados,yes) ??? Então explica pra gente essa lógica aí de colunas chave (FK, chave estrangeira, que seja) sofrendo constantes UPDATEs. []s Chiappa #yiv7536057975 #yiv7536057975 -- #yiv7536057975ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv7536057975 #yiv7536057975ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv7536057975 #yiv7536057975ygrp-mkp #yiv7536057975hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv7536057975 #yiv7536057975ygrp-mkp #yiv7536057975ads {margin-bottom:10px;}#yiv7536057975 #yiv7536057975ygrp-mkp .yiv7536057975ad {padding:0 0;}#yiv7536057975 #yiv7536057975ygrp-mkp .yiv7536057975ad p {margin:0;}#yiv7536057975 #yiv7536057975ygrp-mkp .yiv7536057975ad a {color:#ff;text-decoration:none;}#yiv7536057975 #yiv7536057975ygrp-sponsor #yiv7536057975ygrp-lc {font-family:Arial;}#yiv7536057975 #yiv7536057975ygrp-sponsor #yiv7536057975ygrp-lc #yiv7536057975hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv7536057975 #yiv7536057975ygrp-sponsor #yiv7536057975ygrp-lc .yiv7536057975ad {margin-bottom:10px;padding:0 0;}#yiv7536057975 #yiv7536057975actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv7536057975 #yiv7536057975activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv7536057975 #yiv7536057975activity span {font-weight:700;}#yiv7536057975 #yiv7536057975activity span:first-child {text-transform:uppercase;}#yiv7536057975 #yiv7536057975activity span a {color:#5085b6;text-decoration:none;}#yiv7536057975 #yiv7536057975activity span span {color:#ff7900;}#yiv7536057975 #yiv7536057975activity span .yiv7536057975underline {text-decoration:underline;}#yiv7536057975 .yiv7536057975attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv7536057975 .yiv7536057975attach div a {text-decoration:none;}#yiv7536057975 .yiv7536057975attach img {border:none;padding-right:5px;}#yiv7536057975 .yiv7536057975attach label {display:block;margin-bottom:5px;}#yiv7536057975 .yiv7536057975attach label a {text-decoration:none;}#yiv7536057975 blockquote {margin:0 0 0 4px;}#yiv7536057975 .yiv7536057975bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv7536057975 .yiv7536057975bold a {text-decoration:none;}#yiv7536057975 dd.yiv7536057975last p a {font-family:Verdana;font-weight:700;}#yiv7536057975 dd.yiv7536057975last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv7536057975 dd.yiv7536057975last p span.yiv7536057975yshortcuts {margin-right:0;}#yiv7536057975 div.yiv7536057975attach-table div div a {text-decoration:none;}#yiv7536057975 div.yiv7536057975attach-table {width:400px;}#yiv7536057975 div.yiv7536057975file-title a, #yiv7536057975 div.yiv7536057975file-title a:active, #yiv7536057975 div.yiv7536057975file-title a:hover, #yiv7536057975 div.yiv7536057975file-title a:visited {text-decoration:none;}#yiv7536057975 div.yiv7536057975photo-title a, #yiv7536057975 div.yiv7536057975photo-title a:active, #yiv7536057975 div.yiv7536057975photo-title a:hover, #yiv7536057975 div.yiv7536057975photo-title a:visited {text-decoration:none;}#yiv7536057975 div#yiv7536057975ygrp-mlmsg #yiv7536057975ygrp-msg p a span.yiv7536057975yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv7536057975 .yiv7536057975green {color:#628c2a;}#yiv7536057975 .yiv7536057975MsoNormal {margin:0 0 0 0;}#yiv7536057975 o {font-size:0;}#yiv7536057975 #yiv7536057975photos div {float:left;width:72px;}#yiv7536057975 #yiv7536057975photos div div {border:1px solid #66;height:62px;overflow:hidden;width:62px;}#yiv7536057975 #yiv7536057975photos div label
Re: [oracle_br] Re: ìndices em FK's
Está invertido não, a tabela pai foi criada em 1998 e a tabela filha é recente, não tem 02 meses de uso. Em Segunda-feira, 8 de Dezembro de 2014 17:46, angelo angelolis...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Isso não tá invertido não ? 2014-12-08 17:21 GMT-02:00 jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br: Pra gente poder entender, ** please ** explica melhor esse faz FK aí : a tabela com 18 registros é a tabela PAI ou é a tabela FILHA nesse relacionamento com a tabela de 1.800.000 registros ?? E outra coisa : por definição, em princípio as chaves de uma tabela (sejam PK, sejam UK, sejam FK) ** deveriam ** ser imutáveis ou quase isso, dificilmente sofrendo UPDATEs de valores (o registro em si pode sofrer updates mil em outras colunas, normal, mas as Colunas chave deveriam ser ** CHAVE **, deveriam ser Imunes á alterações / flutuações de dados,yes) ??? Então explica pra gente essa lógica aí de colunas chave (FK, chave estrangeira, que seja) sofrendo constantes UPDATEs. []s Chiappa #yiv6217414686 #yiv6217414686 -- #yiv6217414686ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6217414686 #yiv6217414686ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6217414686 #yiv6217414686ygrp-mkp #yiv6217414686hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6217414686 #yiv6217414686ygrp-mkp #yiv6217414686ads {margin-bottom:10px;}#yiv6217414686 #yiv6217414686ygrp-mkp .yiv6217414686ad {padding:0 0;}#yiv6217414686 #yiv6217414686ygrp-mkp .yiv6217414686ad p {margin:0;}#yiv6217414686 #yiv6217414686ygrp-mkp .yiv6217414686ad a {color:#ff;text-decoration:none;}#yiv6217414686 #yiv6217414686ygrp-sponsor #yiv6217414686ygrp-lc {font-family:Arial;}#yiv6217414686 #yiv6217414686ygrp-sponsor #yiv6217414686ygrp-lc #yiv6217414686hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6217414686 #yiv6217414686ygrp-sponsor #yiv6217414686ygrp-lc .yiv6217414686ad {margin-bottom:10px;padding:0 0;}#yiv6217414686 #yiv6217414686actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6217414686 #yiv6217414686activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6217414686 #yiv6217414686activity span {font-weight:700;}#yiv6217414686 #yiv6217414686activity span:first-child {text-transform:uppercase;}#yiv6217414686 #yiv6217414686activity span a {color:#5085b6;text-decoration:none;}#yiv6217414686 #yiv6217414686activity span span {color:#ff7900;}#yiv6217414686 #yiv6217414686activity span .yiv6217414686underline {text-decoration:underline;}#yiv6217414686 .yiv6217414686attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6217414686 .yiv6217414686attach div a {text-decoration:none;}#yiv6217414686 .yiv6217414686attach img {border:none;padding-right:5px;}#yiv6217414686 .yiv6217414686attach label {display:block;margin-bottom:5px;}#yiv6217414686 .yiv6217414686attach label a {text-decoration:none;}#yiv6217414686 blockquote {margin:0 0 0 4px;}#yiv6217414686 .yiv6217414686bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6217414686 .yiv6217414686bold a {text-decoration:none;}#yiv6217414686 dd.yiv6217414686last p a {font-family:Verdana;font-weight:700;}#yiv6217414686 dd.yiv6217414686last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6217414686 dd.yiv6217414686last p span.yiv6217414686yshortcuts {margin-right:0;}#yiv6217414686 div.yiv6217414686attach-table div div a {text-decoration:none;}#yiv6217414686 div.yiv6217414686attach-table {width:400px;}#yiv6217414686 div.yiv6217414686file-title a, #yiv6217414686 div.yiv6217414686file-title a:active, #yiv6217414686 div.yiv6217414686file-title a:hover, #yiv6217414686 div.yiv6217414686file-title a:visited {text-decoration:none;}#yiv6217414686 div.yiv6217414686photo-title a, #yiv6217414686 div.yiv6217414686photo-title a:active, #yiv6217414686 div.yiv6217414686photo-title a:hover, #yiv6217414686 div.yiv6217414686photo-title a:visited {text-decoration:none;}#yiv6217414686 div#yiv6217414686ygrp-mlmsg #yiv6217414686ygrp-msg p a span.yiv6217414686yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6217414686 .yiv6217414686green {color:#628c2a;}#yiv6217414686 .yiv6217414686MsoNormal {margin:0 0 0 0;}#yiv6217414686 o {font-size:0;}#yiv6217414686 #yiv6217414686photos div {float:left;width:72px;}#yiv6217414686 #yiv6217414686photos div div {border:1px solid #66;height:62px;overflow:hidden;width:62px;}#yiv6217414686 #yiv6217414686photos div label {color:#66;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6217414686 #yiv6217414686reco-category {font-size:77%;}#yiv6217414686 #yiv6217414686reco-desc {font-size:77%;}#yiv6217414686 .yiv6217414686replbq {margin:4px;}#yiv6217414686 #yiv6217414686ygrp-actbar
Re: [oracle_br] Equiparação de bases
Obrigado vitor, ajudou muito. Respondendo à sua pergunta, o que queríamos era gerar um arquivo com as comparações entre as bases e depois implementar as diferenças na base de produção. Em Quarta-feira, 26 de Novembro de 2014 13:11, Vitor Junior vitorj...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Aniway: http://apgdiff.com/ Att,/Regards, Vitor Jr. Infraestrutura / Infrastructure Team Oracle 11g DBA Certified Professional - OCPOracle Certified Expert, Oracle Real Application Clusters 11g and Grid Infrastructure Administrator - OCE Oracle Database 11g Performance Tuning Certified Expert - OCE Oracle Exadata 11g Certified Implementation Specialist Oracle Certified Associate, MySQL 5 mail, gtalk e msn: vitorj...@gmail.com http://certificacaobd.com.br/ skype: vjunior1981https://mybizcard.co/vitor.jr.385628 Em 26 de novembro de 2014 12:52, Jales Jose Moraes malphig...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Senhores sei que este não é o canal, mas como estou precisando urgentemente do serviço, vou perguntar por aqui mesmo: Estou precisando equiparar as bases de homologação com a de produção no POSTGRES, alguém sabe uma ferramenta para tal serviço (se possível free)? Para o Oracle eu uso o TOAD, mas não tem para o Postgres... #yiv9238749240 #yiv9238749240 -- #yiv9238749240ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv9238749240 #yiv9238749240ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv9238749240 #yiv9238749240ygrp-mkp #yiv9238749240hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv9238749240 #yiv9238749240ygrp-mkp #yiv9238749240ads {margin-bottom:10px;}#yiv9238749240 #yiv9238749240ygrp-mkp .yiv9238749240ad {padding:0 0;}#yiv9238749240 #yiv9238749240ygrp-mkp .yiv9238749240ad p {margin:0;}#yiv9238749240 #yiv9238749240ygrp-mkp .yiv9238749240ad a {color:#ff;text-decoration:none;}#yiv9238749240 #yiv9238749240ygrp-sponsor #yiv9238749240ygrp-lc {font-family:Arial;}#yiv9238749240 #yiv9238749240ygrp-sponsor #yiv9238749240ygrp-lc #yiv9238749240hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv9238749240 #yiv9238749240ygrp-sponsor #yiv9238749240ygrp-lc .yiv9238749240ad {margin-bottom:10px;padding:0 0;}#yiv9238749240 #yiv9238749240actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv9238749240 #yiv9238749240activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv9238749240 #yiv9238749240activity span {font-weight:700;}#yiv9238749240 #yiv9238749240activity span:first-child {text-transform:uppercase;}#yiv9238749240 #yiv9238749240activity span a {color:#5085b6;text-decoration:none;}#yiv9238749240 #yiv9238749240activity span span {color:#ff7900;}#yiv9238749240 #yiv9238749240activity span .yiv9238749240underline {text-decoration:underline;}#yiv9238749240 .yiv9238749240attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv9238749240 .yiv9238749240attach div a {text-decoration:none;}#yiv9238749240 .yiv9238749240attach img {border:none;padding-right:5px;}#yiv9238749240 .yiv9238749240attach label {display:block;margin-bottom:5px;}#yiv9238749240 .yiv9238749240attach label a {text-decoration:none;}#yiv9238749240 blockquote {margin:0 0 0 4px;}#yiv9238749240 .yiv9238749240bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv9238749240 .yiv9238749240bold a {text-decoration:none;}#yiv9238749240 dd.yiv9238749240last p a {font-family:Verdana;font-weight:700;}#yiv9238749240 dd.yiv9238749240last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv9238749240 dd.yiv9238749240last p span.yiv9238749240yshortcuts {margin-right:0;}#yiv9238749240 div.yiv9238749240attach-table div div a {text-decoration:none;}#yiv9238749240 div.yiv9238749240attach-table {width:400px;}#yiv9238749240 div.yiv9238749240file-title a, #yiv9238749240 div.yiv9238749240file-title a:active, #yiv9238749240 div.yiv9238749240file-title a:hover, #yiv9238749240 div.yiv9238749240file-title a:visited {text-decoration:none;}#yiv9238749240 div.yiv9238749240photo-title a, #yiv9238749240 div.yiv9238749240photo-title a:active, #yiv9238749240 div.yiv9238749240photo-title a:hover, #yiv9238749240 div.yiv9238749240photo-title a:visited {text-decoration:none;}#yiv9238749240 div#yiv9238749240ygrp-mlmsg #yiv9238749240ygrp-msg p a span.yiv9238749240yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv9238749240 .yiv9238749240green {color:#628c2a;}#yiv9238749240 .yiv9238749240MsoNormal {margin:0 0 0 0;}#yiv9238749240 o {font-size:0;}#yiv9238749240 #yiv9238749240photos div {float:left;width:72px;}#yiv9238749240 #yiv9238749240photos div div {border:1px solid #66;height:62px;overflow:hidden;width:62px;}#yiv9238749240 #yiv9238749240photos div label {color:#66;font-size:10px;overflow:hidden;text-align:center;white
[oracle_br] Equiparação de bases
Senhores sei que este não é o canal, mas como estou precisando urgentemente do serviço, vou perguntar por aqui mesmo: Estou precisando equiparar as bases de homologação com a de produção no POSTGRES, alguém sabe uma ferramenta para tal serviço (se possível free)? Para o Oracle eu uso o TOAD, mas não tem para o Postgres...
Re: [oracle_br] Re: Levantamento (auditoria) de objetos
Iremos analisar cuidadosamente as suas explicações. Obrigado... Em Terça-feira, 11 de Novembro de 2014 10:03, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Blz ?? Antes de responder, observo que ** justamente ** se o ambiente aí é grande e complexo (no sentido de diversas equipes mexendo, n alterações publicadas toda semana), é NESSE CASO que a Documentação TINHA que ser considerada mais importante, saca ? Sei que por conta de desenvolvimento ágil (entre aspas TOTAIS aqui) as primeiras coisas que neguim corta justamente são a Documentação e a Homologação, aí os poucos minutos poupados nisso se transformam em HORAS depois quando precisa de debug e/ou verificação ou controladoria Corige isso senão vc vai ficar a vida inteira só apagando incêndio Isso dito, a resposta : primeiro falando sobre AUDITORIA, realmente essa é a única opção se vc quer ter SEGURANÇA, evitar falsos positivos e/ou perda de dados, pois as outras opções que vamos comentar (como usar a contagem de modificações da tabela, por exemplo) não são 100% garantidas... Bom, realmente a AUDITORIA (seja via comando AUDIT, seja via triggers, seja via FGA) implica em se fazer um pequeno INSERT numa tabela (ou uma pequena gravação, incluir uma linha, num arquivo-texto) então CLARO que traz consigo algum overhead (óbvio, é mais custoso fazer alguma coisa do que não fazer :) , mas é algo pequeno, ** EM ESPECIAL ** se (como é o seu caso) vc só quer auditar os comandos (ie, vc só quer saber quem/quando fez o SELECT/INSERT/UPDATE/DELETE, ao que entendo vc ** Não ** quer saber quais dados foram consultados/alterados/inseridos/deletados) ULULANTEMENTE óbvio que a medida exata do overhead vc só pode medir no SEU ambiente, com o SEU hardware, claro, mas tipicamente esse pequeno INSERT de uma linha a mais devido à auditoria implica isso implica em coisa de um ou dois segundos a mais para cada comando auditado : um banco que um INSERT único de uma linha numa tabela pequena leva sensivelmente mais que isso pra mim tá BEM doente, não tá legal não Caberia a vc confirmar se isso é algo passível de se ter no seu ambiente (de repente o seu ambiente tem SLA/exigências de performance tão sérias que nem isso é tolerado), e fazer um TESTE PRÁTICO no ambiente, preferencialmente no ambiente HOMOLOGAÇÃO, que é bem parecido com produção - vc TEM um ambiente Homologação, né :) Sobre alternativas : antes de mais nada, para podermos indicar alternativas, PLEASE nos diga : o que é tabela não acessada para vc ? É tabela que não sofreu realmente NENHUM acesso (ie, nem por query) ou vc quer saber só tabelas que não sofreram DMLs ? As tabelas foram criadas com a propriedade de MONITORING ?? Quando vc coleta estatísticas pra elas ? Os SQLs das Aplicações que acessam as tabelas estão gravados todos dentro do database (em stored PL/SQLs, como packages ou procedures/functions) ou não ?? Se não estiverem no database, os SQLs estão todos na Aplicação, ou o usuário pode cismar de fazer SQLs ad-hoc, por fora ? Vc tem os FONTES da Aplicação, e eles são passíveis de busca/pesquisa por tabelas ? O ambiente é movimentado (ie, a cada minuto novos e múltiplos SQLs entram em cache) ou não ? O AWR/ASH está Ativo nesse database, e vc tem Licença para consultar ? === COM essas respostas, nós poderemos indicar alternativas às opções de Auditoria, que girariam em torno de : busca por tabelas nos SQLs, utilização da view DBA_TAB_MODIFICATIONS, contagem de colunas de metadados das tabelas (como NUM_ROWS), acesso aos dados já coletados do AWR/ASH, e coisas do tipo... []s Chiappa
Re: [oracle_br] Re: Levantamento (auditoria) de objetos
Boa tarde! Chiappa respondendo as suas perguntas... Sim, os sistemas aqui são bem grandes. Mas por grande mesmo, são apenas as estruturas na base de dados, porque dados mesmo são poucos. O que queremos a princípio (e como você mesmo escreveu) ja que realmente a documentação é extremamente pobre, é fazer um levantamento de uns 04 meses para cá e verificar apenas os objetos na base que não sofreram nenhuma alteração (select, insert, update, delete), e partir daí, ou seja, após a base enxuta, inicializarmos então a modelagem juntamente com a documentação. Em Terça-feira, 11 de Novembro de 2014 11:11, Jales Jose Moraes malphig...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Iremos analisar cuidadosamente as suas explicações. Obrigado... Em Terça-feira, 11 de Novembro de 2014 10:03, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Blz ?? Antes de responder, observo que ** justamente ** se o ambiente aí é grande e complexo (no sentido de diversas equipes mexendo, n alterações publicadas toda semana), é NESSE CASO que a Documentação TINHA que ser considerada mais importante, saca ? Sei que por conta de desenvolvimento ágil (entre aspas TOTAIS aqui) as primeiras coisas que neguim corta justamente são a Documentação e a Homologação, aí os poucos minutos poupados nisso se transformam em HORAS depois quando precisa de debug e/ou verificação ou controladoria Corige isso senão vc vai ficar a vida inteira só apagando incêndio Isso dito, a resposta : primeiro falando sobre AUDITORIA, realmente essa é a única opção se vc quer ter SEGURANÇA, evitar falsos positivos e/ou perda de dados, pois as outras opções que vamos comentar (como usar a contagem de modificações da tabela, por exemplo) não são 100% garantidas... Bom, realmente a AUDITORIA (seja via comando AUDIT, seja via triggers, seja via FGA) implica em se fazer um pequeno INSERT numa tabela (ou uma pequena gravação, incluir uma linha, num arquivo-texto) então CLARO que traz consigo algum overhead (óbvio, é mais custoso fazer alguma coisa do que não fazer :) , mas é algo pequeno, ** EM ESPECIAL ** se (como é o seu caso) vc só quer auditar os comandos (ie, vc só quer saber quem/quando fez o SELECT/INSERT/UPDATE/DELETE, ao que entendo vc ** Não ** quer saber quais dados foram consultados/alterados/inseridos/deletados) ULULANTEMENTE óbvio que a medida exata do overhead vc só pode medir no SEU ambiente, com o SEU hardware, claro, mas tipicamente esse pequeno INSERT de uma linha a mais devido à auditoria implica isso implica em coisa de um ou dois segundos a mais para cada comando auditado : um banco que um INSERT único de uma linha numa tabela pequena leva sensivelmente mais que isso pra mim tá BEM doente, não tá legal não Caberia a vc confirmar se isso é algo passível de se ter no seu ambiente (de repente o seu ambiente tem SLA/exigências de performance tão sérias que nem isso é tolerado), e fazer um TESTE PRÁTICO no ambiente, preferencialmente no ambiente HOMOLOGAÇÃO, que é bem parecido com produção - vc TEM um ambiente Homologação, né :) Sobre alternativas : antes de mais nada, para podermos indicar alternativas, PLEASE nos diga : o que é tabela não acessada para vc ? É tabela que não sofreu realmente NENHUM acesso (ie, nem por query) ou vc quer saber só tabelas que não sofreram DMLs ? As tabelas foram criadas com a propriedade de MONITORING ?? Quando vc coleta estatísticas pra elas ? Os SQLs das Aplicações que acessam as tabelas estão gravados todos dentro do database (em stored PL/SQLs, como packages ou procedures/functions) ou não ?? Se não estiverem no database, os SQLs estão todos na Aplicação, ou o usuário pode cismar de fazer SQLs ad-hoc, por fora ? Vc tem os FONTES da Aplicação, e eles são passíveis de busca/pesquisa por tabelas ? O ambiente é movimentado (ie, a cada minuto novos e múltiplos SQLs entram em cache) ou não ? O AWR/ASH está Ativo nesse database, e vc tem Licença para consultar ? === COM essas respostas, nós poderemos indicar alternativas às opções de Auditoria, que girariam em torno de : busca por tabelas nos SQLs, utilização da view DBA_TAB_MODIFICATIONS, contagem de colunas de metadados das tabelas (como NUM_ROWS), acesso aos dados já coletados do AWR/ASH, e coisas do tipo... []s Chiappa
Re: [oracle_br] Re: Levantamento (auditoria) de objetos
Chiappa no caso de se verificar apenas os selects em determinadas tabelas, é possível fazer via trigger? Ja que a principio A trigger é apenas para INSERT-UPDATE E DELETE... Em Terça-feira, 11 de Novembro de 2014 13:29, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: okdoc : levante os pontos que perguntei para verificarmos se alguma alternativa já está presente e pode ser indicada - EM ESPECIAL as perguntas sobre SQLs e fontes, pois ao que parece ou trabalha numa soft-house ou a sua empresa está com múltiplos projetos de desenvolvimento em paralelo, pelo que vc diz, então a chance de se fazer levantamento pelo código parece ser boa, mas SEM deixar de responder aos outros pontos, também Caso nenhuma alternativa possa ser indicada e/ou o levantamento não possa ser feito de forma segura e completa, aí é partir mesmo pra Auditoria, com a importante Observação que (Obviamente) a Auditoria NÂO pega o passado, ela só registra do ponto que vc a Ativa para a frente : assim, se vc optar por Auditoria, vc a liga hoje para ter os dados coltedaos daqui a algumas semanas, ou mesmo daqui a mais de um mês (justamente para tentar evitar o caso de alguma tabela usada Esporadicamente, nalguma rotina de fechamento de mês ou coisa assim) []s Chiappa
[oracle_br] Levantamento (auditoria) de objetos
Senhores temos uma schema muito grande (em termos de objetos), são só de tabelas 984. Gostaria de realizar uma auditoria na base, para verificar quais tabelas não foram acessadas nos últimos 03 meses, mas nos disseram aqui que isso é muito oneroso para o banco (processamento e armazenamento). Pergunto: - De fato é oneroso? Já que seria por um período transitório! - Há uma outra alternativa em que podemos usar para atender o nosso propósito?
Re: [oracle_br] Subconjunto via select
Funcionou demais. Obrigado!!! Em Quinta-feira, 9 de Outubro de 2014 10:45, Ernesto Oliveira erli...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Ve se ajuda: select '(2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)' Texto, substr('(2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)', (instr('(2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)',',',1,2)+2), ((instr('(2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)',',',1,4))- (instr('(2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)',',',1,2)+2)) ) Campo1, substr('(2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)', (instr('(2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)',',',1,4)+1), ((instr('(2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)',',',1,6))- (instr('(2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)',',',1,4)+1)) ) Campo2 from dual Saída: TEXTO CAMPO1 CAMPO2 (2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null) -44,001594771164 -19,488908057749 Ernesto Oliveira Em 6 de outubro de 2014 13:33, Jales Jose Moraes malphig...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Pessoal preciso extrair os valores -44,001594771164 para uma coluna e o -19,488908057749 para outra coluna de acordo com o formato abaixo. É possível uma consulta que atenda o próposito? (2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)
[oracle_br] Subconjunto via select
Pessoal preciso extrair os valores -44,001594771164 para uma coluna e o -19,488908057749 para outra coluna de acordo com o formato abaixo. É possível uma consulta que atenda o próposito? (2001,Null,(-44,001594771164,-19,488908057749,Null),Null,Null)
[oracle_br] Result set para o excel
Senhores tenho um campo com um CLOB no meu result set, acontece que ao exporta-lo juntamente com outros campos para um .xls aparece apenas um dado em uma célula e se omitir o clob, as outras colunas/registros vem normalmente. Poderiam dar uma ajuda na solução?
[oracle_br] Criar tabela a partir de arquivo
Senhores é possível criar uma tabela diretamente de um arquivo (.csv, .xls)? Pergunto pois estamos constantemente recebendo arquivos para serem criadas tabelas temporárias e está muito chato analisar a estrutura dos arquivos para depois gerar os create tables... Minhas ferramentas client são o TOAD, Navigator e o SQL Developer...
[oracle_br] Retorno de consulta com o decimal truncado
Ao realizar uma consulta no banco de acordo com o select abaixo, o campo retorna apenas a parte inteira (4382), ele reconhece a parte decimal, no caso o .00, mas queria que mostrasse no retorno conforme é especificado no 'where', ja que o campo é um decimal de (8,2). Alguma solução para isso? Lógico, posso usar uma função, mas ja que o campo tem a parte decimal especificada, acredito não haver a necessidade. select valor_repasse from t_lib_pgto where valor_repasse = 4382.00;
Re: [oracle_br] Re: Retorno de consulta com o decimal truncado
Ok, eu uso o Navigator, mas para atender a consulta, utilizei a máscara 999G999D99 Obrigado... Em Quarta-feira, 6 de Agosto de 2014 10:48, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: na verdade, o RDBMS Oracle em si não faz *** nada *** em termos de formatação de números, datas ou strings : a precisão/tamanho/codificação/etc da coluna é respeitada e ele envia para o cliente o que está gravado... O caso aqui é que cabe *** AO CLIENTE *** exibir a informação recebida do banco de dados, e CADA CLIENTE deve ser configurado de uma maneira diferente para que os dados sejam exibidos como vc quer... Por exemplo, se fosse SQLPLUS o cliente/tool de programação usado, o comando de configuração é o COLUMN, veja lá : SYSTEM:@O11GR2:SQLcreate table t_lib_pgto (LINHA number, VALOR_REPASSE number(8,2) ); Tabela criada. SYSTEM:@O11GR2:SQLinsert into t_lib_pgto values(1, 4382.00); 1 linha criada. SYSTEM:@O11GR2:SQLinsert into t_lib_pgto values(1, 55382.05); 1 linha criada. SYSTEM:@O11GR2:SQLinsert into t_lib_pgto values(1, 664382.15); 1 linha criada. == NO CASO DO SQLPLUS, se vc não configurar nada o default dele é não exibir os decimais : SYSTEM:@O11GR2:SQLselect valor_repasse from t_lib_pgto where valor_repasse = 4382.00; VALOR_REPASSE - 4382 = ** PERCEBA ** que ele NÂO ESTÁ truncando o valor, apenas não está exibindo a informação que ele RECEBEU SIM SENHOR do database - para isto, vou configurar a *Exibição * do dado como eu quero : SYSTEM:@O11GR2:SQLcolumn valor_repasse format 999G999D99 SYSTEM:@O11GR2:SQLselect valor_repasse from t_lib_pgto where valor_repasse = 4382.00; VALOR_REPASSE - 4.382,00 == Confere ??? Veja que a informação NÂO FOI ALTERADA na tabela, o que está gravado assim permanece, estamos falando apenas de AJUSTE PARA EXIBIÇÂO : SYSTEM:@O11GR2:SQLselect * from t_lib_pgto ; LINHA VALOR_REPASSE -- - 1 4.382,00 1 55.382,05 1 664.382,15 SYSTEM:@O11GR2:SQL então veja lá na sua tool cliente QUAL é o comando para configurar Exibição de números e o use, sim ?? nada a ver com o datbase em si... []s Chiappa OBS : com certeza , se a sua tool cliente/de programação for uma coisa vagaba que não tem opção de configuração, vc sempre tem a opção de solicitar que o RDBMS envie uma string formatada como vc deseja, transformando a coluna numérica ou data em uma string via TO_CHAR ou TO_DATE : isso porém necessariamente TEM UM CUSTO, o gasto de cpu e o trabalho que dá pro RDBMS converter datatypes não é grande MAS também não é zero... use esta técnica APENAS e TÃO SOMENTE se Realmente não tiver como ajustar/configurar exibição de dados na sua tool cliente/de programação...
[oracle_br] Subsets diferentes
Pessoal realizei uma consulta na base de dados e estranhei o retorno do resultado, pois além de não trazer os valores das partes decimais (apenas a parte intera, exemplo: 0, quando deveria trazer 0,76) não era a quantidade de registros que deveria trazer. Bom, ao realizar a mesma consulta na máquina de um colega, a mesma retornou o resultado correto. Se são as mesmas consultas, por quê traz resultados diferentes e a parte decimal é cortada? Não sei se é por causa das funções de datas que estou utilizando na cláusula WHERE. Utilizamos as mesmas ferramentas (navigator, toad e sql developer). Poderiam nos ajudar?